{"version":3,"file":"index.js","mappings":"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CA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,yCCnLFn9F,OAAO4H,eAAe0sF,EAAS,aAA/B,CACE9tF,OAAO,IAET8tF,EAAQ8I,MAYR,SAAeC,GACb,OAAO,EAAIC,EAASt9E,OAAOq9E,EAAKE,EAClC,EAZA,IAAIC,EAAe,EAAQ,OAEvBC,EAAe,EAAQ,OAEvBH,EAAW,EAAQ,OAUvB,MACMC,EAAqB,CACzBlF,KAAM,CACJqF,MAAQ9pD,GAASA,EAAKptC,OAExBgyF,SAAU,CACRkF,MAAQ9pD,GAAS,IAAMA,EAAKvsC,MAG9BuuC,SAAU,CACR8nD,MAAQ9pD,GAAS7uC,EAAK6uC,EAAK+pD,YAAa,SAE1CrF,oBAAqB,CACnBoF,MAAM9pD,GACJ,MAAMgqD,EAAUviE,EAAK,IAAKt2B,EAAK6uC,EAAKiqD,oBAAqB,MAAO,KAC1DhJ,EAAS9vF,EACb,CACE6uC,EAAKkqD,UACL/4F,EAAK,CAAC6uC,EAAKvsC,KAAMu2F,IACjB74F,EAAK6uC,EAAKmqD,WAAY,MAExB,KAIF,OAAmB,UAAXlJ,EAAqB,GAAKA,EAAS,KAAOjhD,EAAKoqD,YACzD,GAEFzF,mBAAoB,CAClBmF,MAAO,EAAGO,WAAUn9F,OAAMo9F,eAAcH,gBACtCE,EACA,KACAn9F,EACAu6B,EAAK,MAAO6iE,GACZ7iE,EAAK,IAAKt2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,YAAI,QAAI,KACrC,OAAKA,EACE,EAAP,KACOA,GAAI,CACPK,SAAuB,QAAb,EAAAL,EAAKK,gBAAQ,QAAI,KAC3Bg3E,SAAuB,QAAb,EAAAr3E,EAAKq3E,gBAAQ,QAAI,GAC3Bi2N,qBAA+C,QAAzB,EAAAttS,EAAKstS,4BAAoB,QAAI,KACnDzmC,oBAA6C,QAAxB,EAAA7mQ,EAAK6mQ,2BAAmB,QAAI,KACjDnnQ,MAAO,EAAA03N,WAAWC,QAClBu6G,aAAa,IARC91P,EAWtB,QACI,OAAOp8E,EAEnB,8BCDA,IAAYkvU,EAlGAh0G,2FAAAA,EAAA,EAAAA,cAAA,EAAAA,YAAW,KACnB,cACA,wCACA,0BACA,4CACA,oDACA,kBACA,8BACA,oCACA,4BACA,8CACA,gCACA,8BACA,mDACA,oDACA,gBACA,oDACA,4BACA,8BACA,wBACA,sCACA,gBACA,0BACA,0BACA,0BACA,wDACA,sDACA,sCACA,wBACA,8EACA,wCACA,wCACA,oCACA,kCACA,4DACA,sBACA,sCACA,wBACA,0DACA,8BACA,gEACA,wCACA,gCACA,kCACA,sCACA,gCACA,kBACA,sBACA,8BACA,sCACA,gCACA,oCACA,kBACA,sBACA,0CACA,4EACA,sCACA,kDACA,0DACA,8BACA,gBACA,0BACA,gBACA,sCACA,kCACA,sEACA,oCACA,kBACA,0CACA,4CACA,0CACA,gDACA,4CACA,8BACA,wCACA,gCACA,0CACA,8BACA,oBACA,sBACA,sCACA,gBACA,0BACA,gCACA,0BACA,4CACA,kCACA,sCACA,sCACA,oDACA,4BACA,wCACA,gCACA,4CACA,gCACA,mBAGQg0G,EAAA,EAAAA,kBAAA,EAAAA,gBAAe,KACvB,YACA,cACA,cACA,oBACA,6hBCrGJ,IAKYkD,EALZ,WACA,UACA,YAGYA,EAAA,EAAAA,mBAAA,EAAAA,iBAAgB,KACxB,wBACA,sBAqBS,EAAA7oF,6BAA+B,SACxC/uO,EACAgvO,EACAlxP,GAGA,OADAA,GAAU,IAAA+5U,sCAAqC/5U,GAC/B,MAAZkiB,IAAoB,IAAAisO,YAAWjsO,KAAa,IAA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pCA,EAA6B,uBAAI,uBACjCA,EAA6B,uBAAI,uBACjCA,EAAuB,iBAAI,kBAC3BA,EAA6B,uBAAI,uBACjCA,EAAgC,0BAAI,0BACpCA,EAA4B,sBAAI,sBAChCA,EAA2B,qBAAI,qBAC/BA,EAA4B,sBAAI,sBAChCA,EAAmC,6BAAI,4BACvCA,EAA2B,qBAAI,sBAC/BA,EAAuB,iBAAI,kBAC3BA,EAA4B,sBAAI,sBAChCA,EAA4B,sBAAI,sBAChCA,EAA+B,yBAAI,yBACnCA,EAA2B,qBAAI,qBAC/BA,EAA0B,oBAAI,oBAC9BA,EAAkC,4BAAI,0BACvC,CA5CD,CA4CGA,IAASA,EAAO,CAAC,kECzCpB,MAAME,EAAgB,gCAEtB,SAASC,EAAgBj3F,GACvB,OAAOk3F,EAAgBl3F,EAAIooD,WAAW,GACxC,CAEA,MAAM8uC,EAAkB,CACtB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACA,MACA,MACA,UACA,MACA,MACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,GACA,GACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA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","sources":["webpack://music-player-web/./node_modules/@redux-devtools/extension/lib/esm/developmentOnly.js","webpack://music-player-web/./node_modules/@redux-devtools/extension/lib/esm/utils/assign.js","webpack://music-player-web/./node_modules/@redux-devtools/extension/lib/esm/logOnly.js","webpack://music-player-web/./node_modules/@redux-devtools/extension/lib/esm/logOnlyInProduction.js","webpack://music-player-web/./node_modules/@redux-devtools/extension/lib/esm/index.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/is.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/browser.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/string.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/object.js","webpack://music-player-web/./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/logger.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/misc.js","webpack://music-player-web/./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack://music-player-web/./node_modules/@sentry/core/esm/constants.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/syncpromise.js","webpack://music-player-web/./node_modules/@sentry/core/esm/session.js","webpack://music-player-web/./node_modules/@sentry/core/esm/scope.js","webpack://music-player-web/./node_modules/@sentry/core/esm/hub.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/dsn.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/stacktrace.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/normalize.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/memo.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/envelope.js","webpack://music-player-web/./node_modules/@sentry/core/esm/metadata.js","webpack://music-player-web/./node_modules/@sentry/core/esm/integrations/metadata.js","webpack://music-player-web/./node_modules/@sentry/core/esm/version.js","webpack://music-player-web/./node_modules/@sentry/core/esm/exports.js","webpack://music-player-web/./node_modules/@sentry/core/esm/utils/hasTracingEnabled.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/supports.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/vendor/supportsHistory.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/instrument.js","webpack://music-player-web/./node_modules/@sentry/core/esm/tracing/utils.js","webpack://music-player-web/./node_modules/@sentry/core/esm/tracing/errors.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/baggage.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/tracing.js","webpack://music-player-web/./node_modules/@sentry/core/esm/tracing/span.js","webpack://music-player-web/./node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js","webpack://music-player-web/./node_modules/@sentry/core/esm/tracing/transaction.js","webpack://music-player-web/./node_modules/@sentry/core/esm/tracing/idletransaction.js","webpack://music-player-web/./node_modules/@sentry/core/esm/tracing/hubextensions.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/error.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/ratelimit.js","webpack://music-player-web/./node_modules/@sentry/core/esm/transports/base.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/promisebuffer.js","webpack://music-player-web/./node_modules/@sentry/core/esm/api.js","webpack://music-player-web/./node_modules/@sentry/core/esm/transports/multiplexed.js","webpack://music-player-web/./node_modules/@sentry/core/esm/tracing/trace.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/helpers.js","webpack://music-player-web/./node_modules/@sentry/core/esm/integration.js","webpack://music-player-web/./node_modules/@sentry/core/esm/utils/prepareEvent.js","webpack://music-player-web/./node_modules/@sentry/core/esm/baseclient.js","webpack://music-player-web/./node_modules/@sentry/core/esm/envelope.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/eventbuilder.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/severity.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/url.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/userfeedback.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/client.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/clientreport.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/transports/utils.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/transports/fetch.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/transports/xhr.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/stack-parsers.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/aggregate-errors.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/integrations/httpcontext.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/integrations/dedupe.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/sdk.js","webpack://music-player-web/./node_modules/@sentry/replay/esm/index.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/types.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/metrics/utils.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/metrics/index.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getFID.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getCLS.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/request.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/browsertracing.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/router.js","webpack://music-player-web/./node_modules/@sentry-internal/tracing/esm/browser/backgroundtab.js","webpack://music-player-web/./node_modules/@sentry/core/esm/transports/offline.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/transports/offline.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/profiling/utils.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/profiling/hubextensions.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/profiling/integration.js","webpack://music-player-web/./node_modules/@sentry/browser/esm/index.js","webpack://music-player-web/./node_modules/@sentry/react/esm/sdk.js","webpack://music-player-web/./node_modules/@sentry/core/esm/sdk.js","webpack://music-player-web/./node_modules/@sentry/react/esm/constants.js","webpack://music-player-web/./node_modules/@sentry/react/esm/profiler.js","webpack://music-player-web/./node_modules/@sentry/react/esm/errorboundary.js","webpack://music-player-web/./node_modules/@sentry/react/esm/redux.js","webpack://music-player-web/./node_modules/@sentry/react/esm/reactrouterv3.js","webpack://music-player-web/./node_modules/@sentry/react/esm/reactrouter.js","webpack://music-player-web/./node_modules/@sentry/react/esm/reactrouterv6.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/env.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/node.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/time.js","webpack://music-player-web/./node_modules/@sentry/utils/esm/worldwide.js","webpack://music-player-web/./node_modules/backo2/index.js","webpack://music-player-web/./node_modules/eventemitter3/index.js","webpack://music-player-web/./node_modules/fast-deep-equal/index.js","webpack://music-player-web/./node_modules/graphql/jsutils/devAssert.js","webpack://music-player-web/./node_modules/graphql/jsutils/inspect.js","webpack://music-player-web/./node_modules/graphql/language/ast.js","webpack://music-player-web/./node_modules/graphql/language/blockString.js","webpack://music-player-web/./node_modules/graphql/language/characterClasses.js","webpack://music-player-web/./node_modules/graphql/language/kinds.js","webpack://music-player-web/./node_modules/graphql/language/printString.js","webpack://music-player-web/./node_modules/graphql/language/printer.js","webpack://music-player-web/./node_modules/graphql/language/visitor.js","webpack://music-player-web/./node_modules/graphql/utilities/getOperationAST.js","webpack://music-player-web/./node_modules/hls.js/dist/hls.js","webpack://music-player-web/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://music-player-web/./node_modules/preact/compat/dist/compat.module.js","webpack://music-player-web/./node_modules/preact/dist/preact.module.js","webpack://music-player-web/./node_modules/preact/hooks/dist/hooks.module.js","webpack://music-player-web/./node_modules/react-is/cjs/react-is.production.min.js","webpack://music-player-web/./node_modules/react-is/index.js","webpack://music-player-web/./node_modules/react-redux/es/components/Context.js","webpack://music-player-web/./node_modules/react-redux/es/utils/batch.js","webpack://music-player-web/./node_modules/react-redux/es/utils/Subscription.js","webpack://music-player-web/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://music-player-web/./node_modules/react-redux/es/components/Provider.js","webpack://music-player-web/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://music-player-web/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://music-player-web/./node_modules/react-redux/es/components/connectAdvanced.js","webpack://music-player-web/./node_modules/react-redux/es/utils/shallowEqual.js","webpack://music-player-web/./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack://music-player-web/./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack://music-player-web/./node_modules/react-redux/es/utils/bindActionCreators.js","webpack://music-player-web/./node_modules/react-redux/es/connect/mapStateToProps.js","webpack://music-player-web/./node_modules/react-redux/es/connect/mergeProps.js","webpack://music-player-web/./node_modules/react-redux/es/connect/selectorFactory.js","webpack://music-player-web/./node_modules/react-redux/es/connect/connect.js","webpack://music-player-web/./node_modules/react-redux/es/hooks/useReduxContext.js","webpack://music-player-web/./node_modules/react-redux/es/hooks/useStore.js","webpack://music-player-web/./node_modules/react-redux/es/hooks/useDispatch.js","webpack://music-player-web/./node_modules/react-redux/es/hooks/useSelector.js","webpack://music-player-web/./node_modules/react-redux/es/index.js","webpack://music-player-web/./node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack://music-player-web/./node_modules/react-redux/node_modules/react-is/index.js","webpack://music-player-web/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://music-player-web/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://music-player-web/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://music-player-web/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://music-player-web/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://music-player-web/./node_modules/redux/es/redux.js","webpack://music-player-web/./node_modules/subscriptions-transport-ws/dist/client.js","webpack://music-player-web/./node_modules/subscriptions-transport-ws/dist/defaults.js","webpack://music-player-web/./node_modules/subscriptions-transport-ws/dist/message-types.js","webpack://music-player-web/./node_modules/subscriptions-transport-ws/dist/protocol.js","webpack://music-player-web/./node_modules/subscriptions-transport-ws/dist/utils/is-object.js","webpack://music-player-web/./node_modules/subscriptions-transport-ws/dist/utils/is-string.js","webpack://music-player-web/./node_modules/subscriptions-transport-ws/node_modules/symbol-observable/es/index.js","webpack://music-player-web/./node_modules/subscriptions-transport-ws/node_modules/symbol-observable/es/ponyfill.js","webpack://music-player-web/./src/master/components/app/App.tsx","webpack://music-player-web/./src/master/components/app/hooks/index.ts","webpack://music-player-web/./src/master/components/app/hooks/useAppContextMenus.ts","webpack://music-player-web/./src/master/components/app/hooks/useAppLayerFocus.ts","webpack://music-player-web/./src/master/components/app/hooks/useLocalization.ts","webpack://music-player-web/./src/master/components/app/hooks/useTheme.ts","webpack://music-player-web/./src/master/components/app/hooks/useToggleNoConnectionBanner.ts","webpack://music-player-web/./src/master/components/app/index.ts","webpack://music-player-web/./src/master/components/atoms/badge/Badge.tsx","webpack://music-player-web/./src/master/components/atoms/controls/avatar/Avatar.tsx","webpack://music-player-web/./src/master/components/atoms/controls/avatar/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/basicRange/BasicRange.tsx","webpack://music-player-web/./src/master/components/atoms/controls/basicRange/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/button/Button.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/ButtonClearSearchHistory.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/ButtonFavorite.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/ButtonGoToArtistRadio.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/ButtonMore.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/ButtonMoreMyMusicPlaylists.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/ButtonNotificationFeed.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/ButtonPlayBig.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/ButtonPlayRadio.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/ButtonPlayShuffleBig.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/ButtonSort.tsx","webpack://music-player-web/./src/master/components/atoms/controls/button/buttons/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/button/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/checkBoxButton/CheckBoxButton.tsx","webpack://music-player-web/./src/master/components/atoms/controls/checkBoxButton/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/checkMark/CheckMark.tsx","webpack://music-player-web/./src/master/components/atoms/controls/checkMark/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/form/FormState.ts","webpack://music-player-web/./src/master/components/atoms/controls/form/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/label/InputLabel.tsx","webpack://music-player-web/./src/master/components/atoms/controls/label/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/playRange/PlayRange.tsx","webpack://music-player-web/./src/master/components/atoms/controls/playRange/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/radioButton/RadioButton.tsx","webpack://music-player-web/./src/master/components/atoms/controls/radioButton/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/select/Select.tsx","webpack://music-player-web/./src/master/components/atoms/controls/select/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/switch/Switch.tsx","webpack://music-player-web/./src/master/components/atoms/controls/switch/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/textArea/TextArea.tsx","webpack://music-player-web/./src/master/components/atoms/controls/textArea/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/textInput/TextInput.tsx","webpack://music-player-web/./src/master/components/atoms/controls/textInput/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/textInput/inputs/SearchTextInput.tsx","webpack://music-player-web/./src/master/components/atoms/controls/textInput/inputs/index.ts","webpack://music-player-web/./src/master/components/atoms/controls/volumeRange/VolumeRange.tsx","webpack://music-player-web/./src/master/components/atoms/controls/volumeRange/index.ts","webpack://music-player-web/./src/master/components/atoms/cover/Cover.tsx","webpack://music-player-web/./src/master/components/atoms/cover/ResourceCover.tsx","webpack://music-player-web/./src/master/components/atoms/cover/index.ts","webpack://music-player-web/./src/master/components/atoms/downloadAppButton/DownloadAppButton.tsx","webpack://music-player-web/./src/master/components/atoms/downloadAppButton/index.ts","webpack://music-player-web/./src/master/components/atoms/dragLabel/DragLabel.tsx","webpack://music-player-web/./src/master/components/atoms/icon/Icon.tsx","webpack://music-player-web/./src/master/components/atoms/icon/IconName.ts","webpack://music-player-web/./src/master/components/atoms/icon/IconSize.ts","webpack://music-player-web/./src/master/components/atoms/icon/index.ts","webpack://music-player-web/./src/master/components/atoms/line/Line.tsx","webpack://music-player-web/./src/master/components/atoms/line/index.ts","webpack://music-player-web/./src/master/components/atoms/logo/Logo.tsx","webpack://music-player-web/./src/master/components/atoms/logo/index.ts","webpack://music-player-web/./src/master/components/atoms/soundbars/Soundbars.tsx","webpack://music-player-web/./src/master/components/atoms/soundbars/index.ts","webpack://music-player-web/./src/master/components/atoms/spinner/Spinner.tsx","webpack://music-player-web/./src/master/components/atoms/spinner/index.ts","webpack://music-player-web/./src/master/components/atoms/spinner/useBufferingSpinner.ts","webpack://music-player-web/./src/master/components/atoms/text/ScrollingText.tsx","webpack://music-player-web/./src/master/components/atoms/text/index.ts","webpack://music-player-web/./src/master/components/molecules/actionRow/actionrow.tsx","webpack://music-player-web/./src/master/components/molecules/banner/AppBanner.tsx","webpack://music-player-web/./src/master/components/molecules/banner/Banner.tsx","webpack://music-player-web/./src/master/components/molecules/banner/index.tsx","webpack://music-player-web/./src/master/components/molecules/castButton/CastButton.tsx","webpack://music-player-web/./src/master/components/molecules/castButton/index.ts","webpack://music-player-web/./src/master/components/molecules/controlGroup/Control.tsx","webpack://music-player-web/./src/master/components/molecules/controlGroup/ControlGroup.tsx","webpack://music-player-web/./src/master/components/molecules/dropZone/DropPin.tsx","webpack://music-player-web/./src/master/components/molecules/dropZone/DropZone.tsx","webpack://music-player-web/./src/master/components/molecules/dropZone/index.ts","webpack://music-player-web/./src/master/components/molecules/emptyState/EmptyState.tsx","webpack://music-player-web/./src/master/components/molecules/inputSection/InputSection.tsx","webpack://music-player-web/./src/master/components/molecules/inputSection/index.ts","webpack://music-player-web/./src/master/components/molecules/itemGroup/IconGroup.tsx","webpack://music-player-web/./src/master/components/molecules/itemGroup/ItemGroup.tsx","webpack://music-player-web/./src/master/components/molecules/liveRadioTitle/LiveRadioTitle.tsx","webpack://music-player-web/./src/master/components/molecules/liveRadioTitle/index.ts","webpack://music-player-web/./src/master/components/molecules/localizationSettingControl/LocalizationSettingControl.tsx","webpack://music-player-web/./src/master/components/molecules/pageTopBar/PageTopBar.tsx","webpack://music-player-web/./src/master/components/molecules/pageTopBar/desktop/DesktopTopBar.tsx","webpack://music-player-web/./src/master/components/molecules/pageTopBar/desktop/index.ts","webpack://music-player-web/./src/master/components/molecules/pageTopBar/index.ts","webpack://music-player-web/./src/master/components/molecules/pageTopBar/mobile/MobileTopBar.tsx","webpack://music-player-web/./src/master/components/molecules/pageTopBar/mobile/index.ts","webpack://music-player-web/./src/master/components/molecules/pageTopBar/mobile/topBars/MaxiPlayerTopBar.tsx","webpack://music-player-web/./src/master/components/molecules/pageTopBar/mobile/topBars/index.ts","webpack://music-player-web/./src/master/components/molecules/playerPrimaryControl/DesktopPlayerPrimaryControls.tsx","webpack://music-player-web/./src/master/components/molecules/playerPrimaryControl/MaxiPlayerPrimaryControl.tsx","webpack://music-player-web/./src/master/components/molecules/playerPrimaryControl/index.ts","webpack://music-player-web/./src/master/components/molecules/playerSecondaryControl/DesktopPlayerSecondaryControls.tsx","webpack://music-player-web/./src/master/components/molecules/playerSecondaryControl/MaxiPlayerSecondaryControl.tsx","webpack://music-player-web/./src/master/components/molecules/playerSecondaryControl/index.ts","webpack://music-player-web/./src/master/components/molecules/playerTrackControl/DesktopPlayerTrackControl.tsx","webpack://music-player-web/./src/master/components/molecules/playerTrackControl/MaxiPlayerTrackControl.tsx","webpack://music-player-web/./src/master/components/molecules/playerTrackControl/index.ts","webpack://music-player-web/./src/master/components/molecules/preview/PreviewDisplayType.ts","webpack://music-player-web/./src/master/components/molecules/preview/PreviewLinks.tsx","webpack://music-player-web/./src/master/components/molecules/preview/PreviewProps.ts","webpack://music-player-web/./src/master/components/molecules/preview/PreviewRow.tsx","webpack://music-player-web/./src/master/components/molecules/preview/PreviewSquare.tsx","webpack://music-player-web/./src/master/components/molecules/preview/SmallPreviewPlayButton.tsx","webpack://music-player-web/./src/master/components/molecules/preview/index.ts","webpack://music-player-web/./src/master/components/molecules/preview/rows/PlayablePreviewRowCover.tsx","webpack://music-player-web/./src/master/components/molecules/preview/rows/QueueTrackRow.tsx","webpack://music-player-web/./src/master/components/molecules/preview/rows/ResourcePreviewRow.tsx","webpack://music-player-web/./src/master/components/molecules/preview/rows/ResourcePreviewRowCover.tsx","webpack://music-player-web/./src/master/components/molecules/preview/rows/ResourcePreviewRowExpandContent.tsx","webpack://music-player-web/./src/master/components/molecules/preview/rows/index.ts","webpack://music-player-web/./src/master/components/molecules/preview/singles/ArtistRadioPreviewSingle.tsx","webpack://music-player-web/./src/master/components/molecules/preview/singles/BannerSingle.tsx","webpack://music-player-web/./src/master/components/molecules/preview/singles/PreviewSingle.tsx","webpack://music-player-web/./src/master/components/molecules/preview/singles/index.ts","webpack://music-player-web/./src/master/components/molecules/preview/squares/ResourcePreviewSquare.tsx","webpack://music-player-web/./src/master/components/molecules/preview/squares/ResourcePreviewSquareCover.tsx","webpack://music-player-web/./src/master/components/molecules/preview/squares/index.ts","webpack://music-player-web/./src/master/components/molecules/preview/usePreviewAction.ts","webpack://music-player-web/./src/master/components/molecules/preview/usePreviewScrollToHighlight.ts","webpack://music-player-web/./src/master/components/molecules/resource/ResourceCard.tsx","webpack://music-player-web/./src/master/components/molecules/resource/ResourceCardMaxiPlayer.tsx","webpack://music-player-web/./src/master/components/molecules/resource/ResourceLink.tsx","webpack://music-player-web/./src/master/components/molecules/resource/ResourceLinkGroup.tsx","webpack://music-player-web/./src/master/components/molecules/resource/ResourceLinkPart.tsx","webpack://music-player-web/./src/master/components/molecules/resource/ResourceText.tsx","webpack://music-player-web/./src/master/components/molecules/resource/ResourceTextPart.tsx","webpack://music-player-web/./src/master/components/molecules/resource/index.ts","webpack://music-player-web/./src/master/components/molecules/searchResultArea/SearchResultArea.tsx","webpack://music-player-web/./src/master/components/molecules/searchResultArea/index.ts","webpack://music-player-web/./src/master/components/molecules/seekBar/SeekBar.tsx","webpack://music-player-web/./src/master/components/molecules/seekBar/index.ts","webpack://music-player-web/./src/master/components/molecules/sortControl/SortControl.tsx","webpack://music-player-web/./src/master/components/molecules/volumeExpandButton/VolumeExpandButton.tsx","webpack://music-player-web/./src/master/components/molecules/volumeExpandButton/index.ts","webpack://music-player-web/./src/master/components/organisms/concurrencyModal/ConcurrencyModal.tsx","webpack://music-player-web/./src/master/components/organisms/concurrencyModal/index.ts","webpack://music-player-web/./src/master/components/organisms/contextMenu/AppContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/BottomSheet.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/FloatingSheet.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/Link.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/Sheet.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/hooks/index.ts","webpack://music-player-web/./src/master/components/organisms/contextMenu/hooks/useContextMenuPosition.ts","webpack://music-player-web/./src/master/components/organisms/contextMenu/index.ts","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AccountLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AddMultipleToLastQueueLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AddMultipleToMyMusic.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AddMultipleToPlaylistLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AddMultipleToQueueLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AddMultipleToQueueReplaceLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AddProfileLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AddToLastQueueLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AddToMyMusicLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AddToPlaylistLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/AddToQueueLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/CopyIdLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/CreatePlaylistLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/CurrentProfileLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/FavoriteSortingLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/FollowArtistLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/GetDesktopAppLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/GiveFeedbackLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/GoToAlbumLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/GoToArtistLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/GoToArtistRadioLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/GoToProfilesLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/GoToSettingsLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/GoToTrackRadioLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/LanguageLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/LogInOutLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/PlaylistDeleteLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/PlaylistLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/PlaylistRemoveTrackLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/PlaylistRenameLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/PlaylistVisibilityLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/ProfileLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/RemoveMultipleFromPlaylistLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/ShareLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/ShareUrlLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/ShowLyricsLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/TopHeaderLink.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/links/index.ts","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/AccountContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/AddQueueToPlaylistContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/AddToMyMusicContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/AddToPlaylistContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/AlbumContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/ArtistContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/LiveRadioContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/MixRadioContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/MixedContentContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/MyMusicAlbumsSortingContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/MyMusicArtistsSortingContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/MyMusicPlaylistsContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/MyMusicTracksSortingContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/MyPlaylistsSortingContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/NotificationFeedContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/NotificationPlayableContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/PlayerDesktopContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/PlaylistContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/ResourceContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/ShareContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/SortContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/TrackChartContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/TrackContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/TrackRecommendationContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/TracksContextMenu.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/index.ts","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/tops/IconMenuTop.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/tops/ResourceMenuTop.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/tops/SortingMenuTop.tsx","webpack://music-player-web/./src/master/components/organisms/contextMenu/menus/tops/index.ts","webpack://music-player-web/./src/master/components/organisms/filter/filter.tsx","webpack://music-player-web/./src/master/components/organisms/filter/index.ts","webpack://music-player-web/./src/master/components/organisms/headers/DesktopHeader.tsx","webpack://music-player-web/./src/master/components/organisms/headers/MobileHeader.tsx","webpack://music-player-web/./src/master/components/organisms/inAppFeedback/InAppFeedback.tsx","webpack://music-player-web/./src/master/components/organisms/inAppFeedback/InAppFeedbackPrivacyLabel.tsx","webpack://music-player-web/./src/master/components/organisms/inAppFeedback/InAppFeedbackResponseRequest.tsx","webpack://music-player-web/./src/master/components/organisms/inAppFeedback/index.ts","webpack://music-player-web/./src/master/components/organisms/layoutPage/LayoutPageGroup.tsx","webpack://music-player-web/./src/master/components/organisms/layoutPage/LayoutPageItem.tsx","webpack://music-player-web/./src/master/components/organisms/layoutPage/index.ts","webpack://music-player-web/./src/master/components/organisms/login/delegatedLogin/DelegatedLogin.tsx","webpack://music-player-web/./src/master/components/organisms/login/index.ts","webpack://music-player-web/./src/master/components/organisms/login/sessionFrame/sessionFrame.tsx","webpack://music-player-web/./src/master/components/organisms/lyrics/Lyrics.tsx","webpack://music-player-web/./src/master/components/organisms/lyrics/index.ts","webpack://music-player-web/./src/master/components/organisms/lyrics/toggleLyrics.ts","webpack://music-player-web/./src/master/components/organisms/lyrics/useLyrics.ts","webpack://music-player-web/./src/master/components/organisms/lyrics/useLyricsState.ts","webpack://music-player-web/./src/master/components/organisms/menus/CreatePlaylistButton.tsx","webpack://music-player-web/./src/master/components/organisms/menus/Main.tsx","webpack://music-player-web/./src/master/components/organisms/menus/MyMusic.tsx","webpack://music-player-web/./src/master/components/organisms/menus/MyMusicPlaylists.tsx","webpack://music-player-web/./src/master/components/organisms/menus/Section.tsx","webpack://music-player-web/./src/master/components/organisms/menus/SideBar.tsx","webpack://music-player-web/./src/master/components/organisms/menus/index.tsx","webpack://music-player-web/./src/master/components/organisms/modal/AppModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/Buttons.tsx","webpack://music-player-web/./src/master/components/organisms/modal/Modal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/index.ts","webpack://music-player-web/./src/master/components/organisms/modal/modals/AddDuplicatesModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/BrowserCompatibilityModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/ChromecastNotAvailableOnPWA.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/ClearQueueModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/CreatePlaylistModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/DeletePlaylistModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/DeleteProfileModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/ErrorModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/ErrorTryAgainModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/InAppFeedbackModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/InAppFeedbackSubmitModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/LoginErrorModals.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/MaintenanceModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/PokeSentryCutoffModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/PwaInstallMessageModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/RenamePlaylistModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/YourYearModal.tsx","webpack://music-player-web/./src/master/components/organisms/modal/modals/index.ts","webpack://music-player-web/./src/master/components/organisms/notificationFeed/NotificationFeed.tsx","webpack://music-player-web/./src/master/components/organisms/notificationFeed/index.ts","webpack://music-player-web/./src/master/components/organisms/playerDesktop/PlayerDesktop.tsx","webpack://music-player-web/./src/master/components/organisms/playerDesktop/index.ts","webpack://music-player-web/./src/master/components/organisms/playerMaxi/PlayerMaxi.tsx","webpack://music-player-web/./src/master/components/organisms/playerMaxi/index.ts","webpack://music-player-web/./src/master/components/organisms/playerMini/PlayerMini.tsx","webpack://music-player-web/./src/master/components/organisms/playerMini/index.ts","webpack://music-player-web/./src/master/components/organisms/queue/Queue.tsx","webpack://music-player-web/./src/master/components/organisms/queue/index.ts","webpack://music-player-web/./src/master/components/organisms/queue/liveRadioQueue/LiveRadioActions.tsx","webpack://music-player-web/./src/master/components/organisms/queue/liveRadioQueue/LiveRadioQueue.tsx","webpack://music-player-web/./src/master/components/organisms/queue/liveRadioQueue/index.ts","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/CurrentLane.tsx","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/CurrentLanePreview.tsx","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/EmptyQueue.tsx","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/FlowLane.tsx","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/MemoryLane.tsx","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/PreviewLane.tsx","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/PriorityLane.tsx","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/TrackQueue.tsx","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/TrackQueueActions.tsx","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/index.ts","webpack://music-player-web/./src/master/components/organisms/queue/trackQueue/isDraggableCurrentLane.tsx","webpack://music-player-web/./src/master/components/organisms/recyclerView/GridRow.tsx","webpack://music-player-web/./src/master/components/organisms/recyclerView/GridView.tsx","webpack://music-player-web/./src/master/components/organisms/recyclerView/ListView.tsx","webpack://music-player-web/./src/master/components/organisms/recyclerView/index.ts","webpack://music-player-web/./src/master/components/organisms/recyclerView/useRows.tsx","webpack://music-player-web/./src/master/components/organisms/recyclerView/useScrollYPosition.tsx","webpack://music-player-web/./src/master/components/organisms/resourceSection/Content.tsx","webpack://music-player-web/./src/master/components/organisms/resourceSection/ResourceSection.tsx","webpack://music-player-web/./src/master/components/organisms/resourceSection/ResourceSectionScroller.tsx","webpack://music-player-web/./src/master/components/organisms/resourceSection/index.ts","webpack://music-player-web/./src/master/components/organisms/resourceSection/useSkeletonItems.tsx","webpack://music-player-web/./src/master/components/organisms/scrollerWithFade/ScrollerWithFade.tsx","webpack://music-player-web/./src/master/components/organisms/scrollerWithFade/index.ts","webpack://music-player-web/./src/master/components/organisms/scroller/Scroller.tsx","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/getActiveItemIndex.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/getActiveItemScrollLeft.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/getAjustedItemSize.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/getAlignOffset.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/getEffectAdjust.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/getItemSize.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/getMaxIndex.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/index.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/useScrollIndex.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/useScrollTo.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/useScrollZone.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/useScrollerNavigateProperties.ts","webpack://music-player-web/./src/master/components/organisms/scroller/hooks/useScroller/useUserScroll.ts","webpack://music-player-web/./src/master/components/organisms/scroller/index.ts","webpack://music-player-web/./src/master/components/organisms/scroller/options.ts","webpack://music-player-web/./src/master/components/organisms/search/Search.tsx","webpack://music-player-web/./src/master/components/organisms/search/index.ts","webpack://music-player-web/./src/master/components/organisms/search/useSearch.ts","webpack://music-player-web/./src/master/components/organisms/toast/AppToast.tsx","webpack://music-player-web/./src/master/components/organisms/toast/Toast.tsx","webpack://music-player-web/./src/master/components/organisms/toast/index.ts","webpack://music-player-web/./src/master/components/organisms/toast/toasts/Toasts.tsx","webpack://music-player-web/./src/master/components/organisms/toast/toasts/index.ts","webpack://music-player-web/./src/master/components/pages/albumPage/AlbumPage.tsx","webpack://music-player-web/./src/master/components/pages/appPromptPage/AppPromptPage.tsx","webpack://music-player-web/./src/master/components/pages/artistPage/ArtistPage.tsx","webpack://music-player-web/./src/master/components/pages/artistRadioPage/ArtistRadioPage.tsx","webpack://music-player-web/./src/master/components/pages/chartPage/ChartPage.tsx","webpack://music-player-web/./src/master/components/pages/errorPages/ErrorPage.tsx","webpack://music-player-web/./src/master/components/pages/errorPages/NotFoundPage.tsx","webpack://music-player-web/./src/master/components/pages/frontPage/FrontPage.tsx","webpack://music-player-web/./src/master/components/pages/index.ts","webpack://music-player-web/./src/master/components/pages/layoutPage/LayoutPage.tsx","webpack://music-player-web/./src/master/components/pages/liveRadioCategory/LiveRadioCategoryPage.tsx","webpack://music-player-web/./src/master/components/pages/liveRadio/LiveRadioPage.tsx","webpack://music-player-web/./src/master/components/pages/mixRadioCategory/MixRadioCategoryPage.tsx","webpack://music-player-web/./src/master/components/pages/mixRadios/MixRadiosPage.tsx","webpack://music-player-web/./src/master/components/pages/myMusic/albums/MyMusicAlbumsPage.tsx","webpack://music-player-web/./src/master/components/pages/myMusic/artists/MyMusicArtistsPage.tsx","webpack://music-player-web/./src/master/components/pages/myMusic/playlists/MyMusicPlaylistsPage.tsx","webpack://music-player-web/./src/master/components/pages/myMusic/tracks/MyMusicTracksPage.tsx","webpack://music-player-web/./src/master/components/pages/playlistCategory/PlaylistCategoryPage.tsx","webpack://music-player-web/./src/master/components/pages/playlistPage/PlaylistPage.tsx","webpack://music-player-web/./src/master/components/pages/playlistPage/experimentalProductLoader.ts","webpack://music-player-web/./src/master/components/pages/profilesPage/EditProfilePage.tsx","webpack://music-player-web/./src/master/components/pages/profilesPage/ProfilesPage.tsx","webpack://music-player-web/./src/master/components/pages/profilesPage/profilePageEntry.ts","webpack://music-player-web/./src/master/components/pages/radioPage/RadioPage.tsx","webpack://music-player-web/./src/master/components/pages/recommendationPage/RecommendationPage.tsx","webpack://music-player-web/./src/master/components/pages/searchPage/MobileSearchPageView.tsx","webpack://music-player-web/./src/master/components/pages/searchPage/SearchPage.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/Accordion.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/AccordionLink.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/FeedbackSettings.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/ForceLogoutSettings.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/Header.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/HelpSettings.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/LanguageSettings.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/PlaybackSettings.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/Setting.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/SettingsPage.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/SignOutSettings.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/SoundQualitySettings.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/ThemeSettings.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/UsernameSetting.tsx","webpack://music-player-web/./src/master/components/pages/settingsPage/VersionSettings.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/AlbumArtistAlbumsShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/ArtistAlbumsShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/ArtistAppearsOnShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/ArtistPopularTracksShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/ArtistSimilarArtistsShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/ArtistSinglesShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/FrontPageItemShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/LayoutPageItemShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/RadioPageItemShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/SearchAlbumResultsShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/SearchArtistResultsShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/SearchPlaylistResultsShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/showAllPages/SearchTrackResultsShowAllPage.tsx","webpack://music-player-web/./src/master/components/pages/trackRadioPage/TrackRadioPage.tsx","webpack://music-player-web/./src/master/components/pages/userHistory/UserHistoryPage.tsx","webpack://music-player-web/./src/master/components/pages/userRecommendations/UserRecommendationsPage.tsx","webpack://music-player-web/./src/master/components/pages/yourYearPage/YourYear.tsx","webpack://music-player-web/./src/master/components/shared/hooks/CustomResizeObserver.ts","webpack://music-player-web/./src/master/components/shared/hooks/index.ts","webpack://music-player-web/./src/master/components/shared/hooks/useActiveAppLayer.ts","webpack://music-player-web/./src/master/components/shared/hooks/useAppMediaSize.ts","webpack://music-player-web/./src/master/components/shared/hooks/useAppMessages.ts","webpack://music-player-web/./src/master/components/shared/hooks/useAppRunAsPWA.ts","webpack://music-player-web/./src/master/components/shared/hooks/useAppSize.ts","webpack://music-player-web/./src/master/components/shared/hooks/useArrayMemo.ts","webpack://music-player-web/./src/master/components/shared/hooks/useAudioProperties.ts","webpack://music-player-web/./src/master/components/shared/hooks/useAutoPlay.ts","webpack://music-player-web/./src/master/components/shared/hooks/useCallbackMap.ts","webpack://music-player-web/./src/master/components/shared/hooks/useCoalesced.ts","webpack://music-player-web/./src/master/components/shared/hooks/useConnectionHandler.ts","webpack://music-player-web/./src/master/components/shared/hooks/useContext.ts","webpack://music-player-web/./src/master/components/shared/hooks/useContextMenu.ts","webpack://music-player-web/./src/master/components/shared/hooks/useCurrentLiveRadio.ts","webpack://music-player-web/./src/master/components/shared/hooks/useDelay.ts","webpack://music-player-web/./src/master/components/shared/hooks/useDelayArray.ts","webpack://music-player-web/./src/master/components/shared/hooks/useDelayValue.ts","webpack://music-player-web/./src/master/components/shared/hooks/useDesktopLyricsOpen.ts","webpack://music-player-web/./src/master/components/shared/hooks/useDesktopQueueOpen.ts","webpack://music-player-web/./src/master/components/shared/hooks/useIntersectionObserver.ts","webpack://music-player-web/./src/master/components/shared/hooks/useIsEndlessPlayOn.ts","webpack://music-player-web/./src/master/components/shared/hooks/useIsTabActive.ts","webpack://music-player-web/./src/master/components/shared/hooks/useMatchMedia.ts","webpack://music-player-web/./src/master/components/shared/hooks/useMemoAsync.ts","webpack://music-player-web/./src/master/components/shared/hooks/useNativeMobileAppOpen.ts","webpack://music-player-web/./src/master/components/shared/hooks/useOnRightClickContextMenu.tsx","webpack://music-player-web/./src/master/components/shared/hooks/useOnline.ts","webpack://music-player-web/./src/master/components/shared/hooks/usePageClick.ts","webpack://music-player-web/./src/master/components/shared/hooks/usePageKey.ts","webpack://music-player-web/./src/master/components/shared/hooks/usePageLoadState.tsx","webpack://music-player-web/./src/master/components/shared/hooks/usePagination.tsx","webpack://music-player-web/./src/master/components/shared/hooks/usePlayRange.tsx","webpack://music-player-web/./src/master/components/shared/hooks/usePlayableProperties.ts","webpack://music-player-web/./src/master/components/shared/hooks/useQueueCurrentLane.ts","webpack://music-player-web/./src/master/components/shared/hooks/useQueueLanes.ts","webpack://music-player-web/./src/master/components/shared/hooks/useQueueProperties.ts","webpack://music-player-web/./src/master/components/shared/hooks/useQueueTrackParent.ts","webpack://music-player-web/./src/master/components/shared/hooks/useQueueTrackPlayable.ts","webpack://music-player-web/./src/master/components/shared/hooks/useRefUpdate.ts","webpack://music-player-web/./src/master/components/shared/hooks/useReloadToken.ts","webpack://music-player-web/./src/master/components/shared/hooks/useResizeObserver.ts","webpack://music-player-web/./src/master/components/shared/hooks/useResizeRowsColumns.ts","webpack://music-player-web/./src/master/components/shared/hooks/useResources.ts","webpack://music-player-web/./src/master/components/shared/hooks/useScrollPosition.ts","webpack://music-player-web/./src/master/components/shared/hooks/useScrollRestoration.tsx","webpack://music-player-web/./src/master/components/shared/hooks/useScrollState.ts","webpack://music-player-web/./src/master/components/shared/hooks/useScrollingText.ts","webpack://music-player-web/./src/master/components/shared/hooks/useSearchHistory.ts","webpack://music-player-web/./src/master/components/shared/hooks/useSecondsPlayed.tsx","webpack://music-player-web/./src/master/components/shared/hooks/useShowNativeMobileAppPrompt.ts","webpack://music-player-web/./src/master/components/shared/hooks/useSortOptions.ts","webpack://music-player-web/./src/master/components/templates/blank/BlankTemplate.tsx","webpack://music-player-web/./src/master/components/templates/default/DefaultTemplate.tsx","webpack://music-player-web/./src/master/components/templates/default/hooks/useDesktopProperties.ts","webpack://music-player-web/./src/master/components/templates/index.ts","webpack://music-player-web/./src/master/components/templates/messagePage/MessagePageTemplate.tsx","webpack://music-player-web/./src/master/components/templates/messagePage/index.ts","webpack://music-player-web/./src/master/components/templates/myMusicPage/MyMusicPageTemplate.tsx","webpack://music-player-web/./src/master/components/templates/myMusicPage/index.ts","webpack://music-player-web/./src/master/components/templates/page/PageTemplate.tsx","webpack://music-player-web/./src/master/components/templates/productPage/FooterText.tsx","webpack://music-player-web/./src/master/components/templates/productPage/PlayableActions.tsx","webpack://music-player-web/./src/master/components/templates/productPage/ProductPageTemplate.tsx","webpack://music-player-web/./src/master/components/templates/productPage/index.ts","webpack://music-player-web/./src/master/components/templates/showAllPage/ShowAllPageTemplate.tsx","webpack://music-player-web/./src/master/components/templates/showAllPage/index.ts","webpack://music-player-web/./src/master/generated/graphql-types.ts","webpack://music-player-web/./src/master/global/actions/actions.ts","webpack://music-player-web/./src/master/global/actions/index.ts","webpack://music-player-web/./src/master/global/config/PrivateRoute.tsx","webpack://music-player-web/./src/master/global/config/UnhandledRoute.tsx","webpack://music-player-web/./src/master/global/config/appInit.ts","webpack://music-player-web/./src/master/global/config/configcms.ts","webpack://music-player-web/./src/master/global/config/configureStore.ts","webpack://music-player-web/./src/master/global/config/dbService.ts","webpack://music-player-web/./src/master/global/config/featuretoggle.ts","webpack://music-player-web/./src/master/global/config/index.ts","webpack://music-player-web/./src/master/global/config/persistMiddleWare.ts","webpack://music-player-web/./src/master/global/constants/animations.ts","webpack://music-player-web/./src/master/global/constants/api.ts","webpack://music-player-web/./src/master/global/constants/assets.ts","webpack://music-player-web/./src/master/global/constants/catalog.ts","webpack://music-player-web/./src/master/global/constants/fbase.ts","webpack://music-player-web/./src/master/global/constants/globalization.ts","webpack://music-player-web/./src/master/global/constants/index.ts","webpack://music-player-web/./src/master/global/constants/liveRadio.ts","webpack://music-player-web/./src/master/global/constants/mpanel.ts","webpack://music-player-web/./src/master/global/constants/pageContent.ts","webpack://music-player-web/./src/master/global/constants/pagination.ts","webpack://music-player-web/./src/master/global/constants/player.ts","webpack://music-player-web/./src/master/global/constants/search.ts","webpack://music-player-web/./src/master/global/constants/sessionStorage.ts","webpack://music-player-web/./src/master/global/constants/sidebar.ts","webpack://music-player-web/./src/master/global/constants/testLocator.ts","webpack://music-player-web/./src/master/global/hooks/index.ts","webpack://music-player-web/./src/master/global/hooks/useMessageBus.ts","webpack://music-player-web/./src/master/global/index.ts","webpack://music-player-web/./src/master/global/reducers/appReducer.ts","webpack://music-player-web/./src/master/global/reducers/audioInputReducer.ts","webpack://music-player-web/./src/master/global/reducers/cacheReducer.ts","webpack://music-player-web/./src/master/global/reducers/castReducer.ts","webpack://music-player-web/./src/master/global/reducers/contextMenuReducer.ts","webpack://music-player-web/./src/master/global/reducers/controlPanelReducer.ts","webpack://music-player-web/./src/master/global/reducers/index.ts","webpack://music-player-web/./src/master/global/reducers/liveRadioReducer.ts","webpack://music-player-web/./src/master/global/reducers/modalReducer.ts","webpack://music-player-web/./src/master/global/reducers/notificationFeedReducer.ts","webpack://music-player-web/./src/master/global/reducers/notificationsReducer.ts","webpack://music-player-web/./src/master/global/reducers/playQueueReducer.ts","webpack://music-player-web/./src/master/global/reducers/playerReducer.ts","webpack://music-player-web/./src/master/global/reducers/rootReducer.ts","webpack://music-player-web/./src/master/global/reducers/uiReducer.ts","webpack://music-player-web/./src/master/global/reducers/userReducer.ts","webpack://music-player-web/./src/master/models/ModelType.ts","webpack://music-player-web/./src/master/models/app/DraggableItemModel.ts","webpack://music-player-web/./src/master/models/app/LoginState.ts","webpack://music-player-web/./src/master/models/app/NotificationsModel.ts","webpack://music-player-web/./src/master/models/app/SortOption.ts","webpack://music-player-web/./src/master/models/app/TraceModel.ts","webpack://music-player-web/./src/master/models/app/UiModel.ts","webpack://music-player-web/./src/master/models/app/UserProfileModel.ts","webpack://music-player-web/./src/master/models/app/ViewPageError.ts","webpack://music-player-web/./src/master/models/app/index.ts","webpack://music-player-web/./src/master/models/app/player/AudioContext.ts","webpack://music-player-web/./src/master/models/app/player/PlayState.ts","webpack://music-player-web/./src/master/models/app/player/PlayerModel.ts","webpack://music-player-web/./src/master/models/app/player/index.ts","webpack://music-player-web/./src/master/models/app/player/input/AudioInputItemModel.ts","webpack://music-player-web/./src/master/models/app/player/input/index.ts","webpack://music-player-web/./src/master/models/app/player/input/playQueue/PlayQueueModel.ts","webpack://music-player-web/./src/master/models/app/player/input/playQueue/QueueTrackModel.ts","webpack://music-player-web/./src/master/models/app/player/output/browserAudio/BrowserAudioItemModel.ts","webpack://music-player-web/./src/master/models/app/player/output/browserAudio/hls/HlsPreloadAudioModel.ts","webpack://music-player-web/./src/master/models/app/player/output/index.ts","webpack://music-player-web/./src/master/models/app/resourceContextModel/ContextModel.ts","webpack://music-player-web/./src/master/models/app/resourceContextModel/index.ts","webpack://music-player-web/./src/master/models/domain/AlbumArtistAlbums.ts","webpack://music-player-web/./src/master/models/domain/AlbumModel.ts","webpack://music-player-web/./src/master/models/domain/AlbumRecommendationModel.ts","webpack://music-player-web/./src/master/models/domain/ArtistAlbums.ts","webpack://music-player-web/./src/master/models/domain/ArtistAlbumsAppearsOn.ts","webpack://music-player-web/./src/master/models/domain/ArtistModel.ts","webpack://music-player-web/./src/master/models/domain/ArtistRadioModel.ts","webpack://music-player-web/./src/master/models/domain/ArtistSimilarArtistsModel.ts","webpack://music-player-web/./src/master/models/domain/ArtistSingles.ts","webpack://music-player-web/./src/master/models/domain/ArtistTracksModel.ts","webpack://music-player-web/./src/master/models/domain/BannerModel.ts","webpack://music-player-web/./src/master/models/domain/ChartModel.ts","webpack://music-player-web/./src/master/models/domain/ConnectionModel.ts","webpack://music-player-web/./src/master/models/domain/DiscoverRecommendationsModel.ts","webpack://music-player-web/./src/master/models/domain/EndlessPlayModel.ts","webpack://music-player-web/./src/master/models/domain/Enums.ts","webpack://music-player-web/./src/master/models/domain/ExternalLinkModel.ts","webpack://music-player-web/./src/master/models/domain/HistoryRecommendationsModel.ts","webpack://music-player-web/./src/master/models/domain/LiveRadioCategoryModel.ts","webpack://music-player-web/./src/master/models/domain/LiveRadioModel.ts","webpack://music-player-web/./src/master/models/domain/LiveRadioPlayableModel.ts","webpack://music-player-web/./src/master/models/domain/LiveRadioTrackModel.ts","webpack://music-player-web/./src/master/models/domain/MixRadioCategoryModel.ts","webpack://music-player-web/./src/master/models/domain/MixRadioModel.ts","webpack://music-player-web/./src/master/models/domain/MixRadiosModel.ts","webpack://music-player-web/./src/master/models/domain/MixedContentModel.ts","webpack://music-player-web/./src/master/models/domain/MixedContentTrackModel.ts","webpack://music-player-web/./src/master/models/domain/MultiselectionTracksModel.ts","webpack://music-player-web/./src/master/models/domain/MyMusicAlbumsModel.ts","webpack://music-player-web/./src/master/models/domain/MyMusicArtistsModel.ts","webpack://music-player-web/./src/master/models/domain/MyMusicPlaylistsModel.ts","webpack://music-player-web/./src/master/models/domain/MyMusicTracksModel.ts","webpack://music-player-web/./src/master/models/domain/NotificationFeedModel.ts","webpack://music-player-web/./src/master/models/domain/NotificationModel.ts","webpack://music-player-web/./src/master/models/domain/PlaylistCategoriesModel.ts","webpack://music-player-web/./src/master/models/domain/PlaylistCategoryModel.ts","webpack://music-player-web/./src/master/models/domain/PlaylistModel.ts","webpack://music-player-web/./src/master/models/domain/PlaylistRecommendationModel.ts","webpack://music-player-web/./src/master/models/domain/RecentTracksModel.ts","webpack://music-player-web/./src/master/models/domain/RecommendationModel.ts","webpack://music-player-web/./src/master/models/domain/SearchAlbumResultsModel.ts","webpack://music-player-web/./src/master/models/domain/SearchArtistResultsModel.ts","webpack://music-player-web/./src/master/models/domain/SearchMixedResultModel.ts","webpack://music-player-web/./src/master/models/domain/SearchMixedResultsModel.ts","webpack://music-player-web/./src/master/models/domain/SearchPlaylistResultsModel.ts","webpack://music-player-web/./src/master/models/domain/SearchResultModel.ts","webpack://music-player-web/./src/master/models/domain/SearchTrackResultModel.ts","webpack://music-player-web/./src/master/models/domain/SearchTrackResultsModel.ts","webpack://music-player-web/./src/master/models/domain/SkeletonModel.ts","webpack://music-player-web/./src/master/models/domain/TrackModel.ts","webpack://music-player-web/./src/master/models/domain/TrackPlayableModel.ts","webpack://music-player-web/./src/master/models/domain/TrackRadioModel.ts","webpack://music-player-web/./src/master/models/domain/TrackRecommendationModel.ts","webpack://music-player-web/./src/master/models/domain/helpers/getLayoutPageItemConnectionModelItems.ts","webpack://music-player-web/./src/master/models/domain/helpers/index.ts","webpack://music-player-web/./src/master/models/domain/index.ts","webpack://music-player-web/./src/master/models/domain/layoutPage/LayoutItemContentModel.ts","webpack://music-player-web/./src/master/models/domain/layoutPage/LayoutItemGroupModel.ts","webpack://music-player-web/./src/master/models/domain/layoutPage/LayoutItemModel.ts","webpack://music-player-web/./src/master/models/domain/layoutPage/LayoutPageModel.ts","webpack://music-player-web/./src/master/models/domain/layoutPage/index.ts","webpack://music-player-web/./src/master/models/view/AppModalModel.ts","webpack://music-player-web/./src/master/models/view/Localization.ts","webpack://music-player-web/./src/master/models/view/RepeatStatus.ts","webpack://music-player-web/./src/master/models/view/SearchState.ts","webpack://music-player-web/./src/master/models/view/ShuffleState.ts","webpack://music-player-web/./src/master/models/view/Theme.ts","webpack://music-player-web/./src/master/models/view/contextMenu/index.ts","webpack://music-player-web/./src/master/models/view/contextMenu/items/ContextMenuItemModel.ts","webpack://music-player-web/./src/master/models/view/contextMenu/items/ContextMenuSheetModel.ts","webpack://music-player-web/./src/master/models/view/index.ts","webpack://music-player-web/./src/master/models/view/navigationStack/NavigationModel.ts","webpack://music-player-web/./src/master/models/view/navigationStack/index.ts","webpack://music-player-web/./src/master/services/appSession/appSessionService.ts","webpack://music-player-web/./src/master/services/appSession/debug.ts","webpack://music-player-web/./src/master/services/appSession/helpers.ts","webpack://music-player-web/./src/master/services/appSession/index.ts","webpack://music-player-web/./src/master/services/appSession/operations/appSessionHandler.ts","webpack://music-player-web/./src/master/services/appSession/operations/finishedReports.ts","webpack://music-player-web/./src/master/services/appSession/operations/loadedReports.ts","webpack://music-player-web/./src/master/services/appSession/operations/lyricReports.ts","webpack://music-player-web/./src/master/services/appSession/operations/reports.ts","webpack://music-player-web/./src/master/services/appSession/operations/session.ts","webpack://music-player-web/./src/master/services/appSession/operations/sessionTokens.ts","webpack://music-player-web/./src/master/services/appSession/operations/sharedFinishedReports.ts","webpack://music-player-web/./src/master/services/appSession/operations/sharedLoadedReports.ts","webpack://music-player-web/./src/master/services/appSession/operations/sharedTokens.ts","webpack://music-player-web/./src/master/services/appSession/storageKeys.ts","webpack://music-player-web/./src/master/services/appVersion/appVersionService.ts","webpack://music-player-web/./src/master/services/appVersion/index.ts","webpack://music-player-web/./src/master/services/app/appService.ts","webpack://music-player-web/./src/master/services/app/index.ts","webpack://music-player-web/./src/master/services/arrayHelper.ts","webpack://music-player-web/./src/master/services/backend/backend.ts","webpack://music-player-web/./src/master/services/backend/backendService.ts","webpack://music-player-web/./src/master/services/backend/graphqlClient.ts","webpack://music-player-web/./src/master/services/backend/graphqlSubscriptions.ts","webpack://music-player-web/./src/master/services/backend/index.ts","webpack://music-player-web/./src/master/services/backend/mutate.ts","webpack://music-player-web/./src/master/services/cache/cacheQuota.ts","webpack://music-player-web/./src/master/services/cache/graphqlCacheService.ts","webpack://music-player-web/./src/master/services/cache/index.ts","webpack://music-player-web/./src/master/services/cancellation/cancellationToken.ts","webpack://music-player-web/./src/master/services/cancellation/debounce.ts","webpack://music-player-web/./src/master/services/cancellation/intervalCallbackGroup.ts","webpack://music-player-web/./src/master/services/cancellation/throttle.ts","webpack://music-player-web/./src/master/services/cancellation/useCancellingEffect.ts","webpack://music-player-web/./src/master/services/compatibility/compatibilityService.ts","webpack://music-player-web/./src/master/services/concurrency/concurrency.ts","webpack://music-player-web/./src/master/services/concurrency/index.ts","webpack://music-player-web/./src/master/services/concurrency/polling.ts","webpack://music-player-web/./src/master/services/concurrency/setActivePlayback.ts","webpack://music-player-web/./src/master/services/concurrency/userTriggeredPlaybackEvent.ts","webpack://music-player-web/./src/master/services/configCMS/configCMS.ts","webpack://music-player-web/./src/master/services/connection/connectionFunctions.ts","webpack://music-player-web/./src/master/services/connection/connectionHandler.ts","webpack://music-player-web/./src/master/services/contextMenus/create.ts","webpack://music-player-web/./src/master/services/contextMenus/helpers.ts","webpack://music-player-web/./src/master/services/contextMenus/index.ts","webpack://music-player-web/./src/master/services/contextMenus/open.ts","webpack://music-player-web/./src/master/services/contextMenus/reducers/closeAllContextMenus.ts","webpack://music-player-web/./src/master/services/contextMenus/reducers/closeContextMenu.ts","webpack://music-player-web/./src/master/services/contextMenus/reducers/hoverContextMenuItem.ts","webpack://music-player-web/./src/master/services/contextMenus/reducers/index.ts","webpack://music-player-web/./src/master/services/contextMenus/reducers/navigated.ts","webpack://music-player-web/./src/master/services/contextMenus/reducers/openContextMenu.ts","webpack://music-player-web/./src/master/services/contextMenus/reducers/setVisibleContextMenu.ts","webpack://music-player-web/./src/master/services/contextMenus/reducers/updateContextMenuPosition.ts","webpack://music-player-web/./src/master/services/controlPanel/initControlPanelService.ts","webpack://music-player-web/./src/master/services/cookies/cookie.ts","webpack://music-player-web/./src/master/services/cookies/index.ts","webpack://music-player-web/./src/master/services/drag/dragService.ts","webpack://music-player-web/./src/master/services/environment/environmentService.ts","webpack://music-player-web/./src/master/services/environment/index.ts","webpack://music-player-web/./src/master/services/favorites/favorites.ts","webpack://music-player-web/./src/master/services/favorites/favoritesCache.ts","webpack://music-player-web/./src/master/services/favorites/index.ts","webpack://music-player-web/./src/master/services/filter/filterItem.ts","webpack://music-player-web/./src/master/services/filter/index.ts","webpack://music-player-web/./src/master/services/filter/useFilter.ts","webpack://music-player-web/./src/master/services/formatters/index.ts","webpack://music-player-web/./src/master/services/formatters/stringFormatters.ts","webpack://music-player-web/./src/master/services/formatters/timeFormatters.ts","webpack://music-player-web/./src/master/services/inAppFeedback/inAppFeedbackService.ts","webpack://music-player-web/./src/master/services/inAppFeedback/index.ts","webpack://music-player-web/./src/master/services/language/index.ts","webpack://music-player-web/./src/master/services/language/init.ts","webpack://music-player-web/./src/master/services/logger/analyticsService.ts","webpack://music-player-web/./src/master/services/logger/analytics/analyticsData.ts","webpack://music-player-web/./src/master/services/logger/analytics/changeSetting/changeSettingEndlessPlayData.ts","webpack://music-player-web/./src/master/services/logger/analytics/changeSetting/changeSettingLanguageSettingData.ts","webpack://music-player-web/./src/master/services/logger/analytics/changeSetting/changeSettingThemeSettingData.ts","webpack://music-player-web/./src/master/services/logger/analytics/changeSetting/index.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/index.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/logInOutContent.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/lyricsDisplayed.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/myMusicContent.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/notifications.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/playedContent.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/playedContentError.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/playlistActions.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/profileActions.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/queueAction.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/searchContent.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/sentryCutoffNotification.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/settingChangedContent.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/singleNotification.ts","webpack://music-player-web/./src/master/services/logger/analytics/events/viewPage.ts","webpack://music-player-web/./src/master/services/logger/analytics/index.ts","webpack://music-player-web/./src/master/services/logger/analytics/playerAction.ts","webpack://music-player-web/./src/master/services/logger/analytics/playerAction/logMuteUnmuteEvent.ts","webpack://music-player-web/./src/master/services/logger/analytics/playerAction/logPlayPauseToEvent.ts","webpack://music-player-web/./src/master/services/logger/analytics/playerAction/logPlayerActionEvent.ts","webpack://music-player-web/./src/master/services/logger/analytics/playerAction/playerActionService.ts","webpack://music-player-web/./src/master/services/logger/analytics/playerAction/tryLogVolumeSeekEvent.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/app/appProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/app/convertThemeSetting.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/MixpanelViewPageType.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/changeSettingProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/index.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/isPagePlayable.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/logInOutProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/lyricsProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/navigationProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/notificationsProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/pageProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/playableAndParentProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/playableErrorProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/playableLoadProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/playablePageProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/playableProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/playableStopProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/playerActionProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/queueActionProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/resourceParentProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/rootPageProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/rootPreviewProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/rootSectionProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/searchContentProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/singleNotificationProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/event/viewPageProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/groups/index.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/groups/queueAddedPropertiesGroup.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/groups/queueIntentPropertiesGroup.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/user/addToPlaylistProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/user/index.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/user/userMyMusicProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/user/userNotificationFeedProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/user/userPlayErrorProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/user/userPlayProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/user/userProfileProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/properties/user/userProperties.ts","webpack://music-player-web/./src/master/services/logger/analytics/queueAction/logFavoriteUnfavoriteEvent.ts","webpack://music-player-web/./src/master/services/logger/analytics/queueAction/logOpenCloseQueueViewEvent.ts","webpack://music-player-web/./src/master/services/logger/analytics/queueAction/logQueueActionEvent.ts","webpack://music-player-web/./src/master/services/logger/analytics/queueAction/logQueueHistoryOnOffEvent.ts","webpack://music-player-web/./src/master/services/logger/analytics/queueAction/logRepeatChangeEvent.ts","webpack://music-player-web/./src/master/services/logger/analytics/queueAction/logShuffleUnshuffleEvent.ts","webpack://music-player-web/./src/master/services/logger/analytics/queueAction/queueActionService.ts","webpack://music-player-web/./src/master/services/logger/getFbPerformance.ts","webpack://music-player-web/./src/master/services/logger/index.ts","webpack://music-player-web/./src/master/services/logger/initConsoleLoggerService.ts","webpack://music-player-web/./src/master/services/logger/initFBLoggerService.ts","webpack://music-player-web/./src/master/services/logger/initFBTraceService.ts","webpack://music-player-web/./src/master/services/logger/initLoggerService.ts","webpack://music-player-web/./src/master/services/logger/initLyricsReportService.ts","webpack://music-player-web/./src/master/services/logger/initMPLoggerService.ts","webpack://music-player-web/./src/master/services/logger/initPlaybackReportSendService.ts","webpack://music-player-web/./src/master/services/logger/initPlaybackReportService.ts","webpack://music-player-web/./src/master/services/logger/kibanaLoggerService.ts","webpack://music-player-web/./src/master/services/messagebus/index.ts","webpack://music-player-web/./src/master/services/messagebus/messageBus.ts","webpack://music-player-web/./src/master/services/messagebus/middleware.ts","webpack://music-player-web/./src/master/services/messagebus/typedMessageBus.ts","webpack://music-player-web/./src/master/services/navigationStack/navigationStack.ts","webpack://music-player-web/./src/master/services/navigationStack/useNavigation.ts","webpack://music-player-web/./src/master/services/navigation/index.ts","webpack://music-player-web/./src/master/services/navigation/navigation.ts","webpack://music-player-web/./src/master/services/normalizeData/index.ts","webpack://music-player-web/./src/master/services/normalizeData/normalizeAnalyticsQueueAdded.ts","webpack://music-player-web/./src/master/services/notificationFeed/configuration.ts","webpack://music-player-web/./src/master/services/notificationFeed/helpers.ts","webpack://music-player-web/./src/master/services/notificationFeed/hooks.tsx","webpack://music-player-web/./src/master/services/notificationFeed/index.ts","webpack://music-player-web/./src/master/services/notificationFeed/init.ts","webpack://music-player-web/./src/master/services/notificationFeed/update.ts","webpack://music-player-web/./src/master/services/playable/index.ts","webpack://music-player-web/./src/master/services/playable/playableService.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/initChromeCastPlayerControllerService.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/authenticate.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/castAvailable.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/castSessionResumed.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/castSessionStarted.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/castSessionStopped.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/localCastQueue.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/operation.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/remoteCastQueue.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/resumeTimeoutCheck.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/setPlayerMode.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/stopCastSession.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/stopQueue.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/sync.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/syncCurrent.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/syncExistingQueue.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/syncNewQueue.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/syncPlayState.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/syncSettings.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/actions/toggleCastSession.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/api/onCastApiAvailable.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/context/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/context/onCastStateChanged.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/context/onSessionStateChange.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/mediaSession/onMediaSessionUpdate.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/playerController/connectedChanged.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/playerController/currentTimeChanged.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/playerController/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/playerController/isMediaLoadedChanged.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/playerController/isMutedChanged.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/playerController/playerStateChanged.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/playerController/volumeChanged.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/session/onCustomCastMessageAuthenticate.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castEvents/session/onMediaSession.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/context/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/context/requestSession.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/getStatus.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/pause.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/play.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/queueInsertItems.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/queueJumpToItem.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/queueRemoveItems.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/queueReorderItems.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/queueSetRepeatMode.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/seek.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/media/stop.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/playerController/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/playerController/setIsMuted.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/playerController/setVolume.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/session/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/session/loadMedia.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/castRequests/session/sendMessage.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/error/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/error/sessionStartFailed.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/helpers/castState.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/helpers/current.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/helpers/currentTime.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/helpers/id.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/helpers/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/helpers/operation.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/helpers/playState.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/helpers/queue.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/helpers/repeat.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/helpers/requestHelper.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/localEvents/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/localEvents/playerRepeat.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/localEvents/playerSetMute.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/localEvents/playerSetVolume.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/localEvents/userLoggedIn.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/localEvents/userLoggedOut.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/models/SessionMessage.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/models/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/setup/castApiListener.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/setup/castContextListeners.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/setup/castMediaSessionListeners.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/setup/castSessionListeners.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/setup/index.ts","webpack://music-player-web/./src/master/services/player/controllers/chromeCast/service/setup/playerControllerListeners.ts","webpack://music-player-web/./src/master/services/player/controllers/initPlayerControllerService.ts","webpack://music-player-web/./src/master/services/player/controllers/local/actions/index.ts","webpack://music-player-web/./src/master/services/player/controllers/local/actions/playNext.ts","webpack://music-player-web/./src/master/services/player/controllers/local/actions/rewind.ts","webpack://music-player-web/./src/master/services/player/controllers/local/actions/rewindOrPlayPrevious.ts","webpack://music-player-web/./src/master/services/player/controllers/local/actions/shuffle.ts","webpack://music-player-web/./src/master/services/player/controllers/local/initLocalPlayerControllerService.ts","webpack://music-player-web/./src/master/services/player/controllers/service/actions/index.ts","webpack://music-player-web/./src/master/services/player/controllers/service/actions/play.ts","webpack://music-player-web/./src/master/services/player/controllers/service/actions/volume.ts","webpack://music-player-web/./src/master/services/player/controllers/service/helpers/controllerType.ts","webpack://music-player-web/./src/master/services/player/controllers/service/helpers/icons.ts","webpack://music-player-web/./src/master/services/player/controllers/service/helpers/index.ts","webpack://music-player-web/./src/master/services/player/helpers/debug.ts","webpack://music-player-web/./src/master/services/player/helpers/index.ts","webpack://music-player-web/./src/master/services/player/helpers/playState.ts","webpack://music-player-web/./src/master/services/player/helpers/position.ts","webpack://music-player-web/./src/master/services/player/inputs/index.ts","webpack://music-player-web/./src/master/services/player/inputs/initAudioInputService.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/liveRadio/index.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/liveRadio/initLiveRadioAudioInputService.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/liveRadio/service/currentLiveRadio.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/liveRadio/service/index.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/liveRadio/service/liveRadioTracks.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/liveRadio/service/playable.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/liveRadio/service/setAndPlay.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/PriorityQueueActionModal.tsx","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/addToQueue.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/audioEnded.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/clearPriorityQueue.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/clearQueue.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/dropTrack.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/endlessPlay.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/index.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/mixRadio.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/moveTrack.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/playFromAudioChange.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/playNext.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/playPrevious.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/playTrack.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/removeTrack.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/replaceQueue.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/rewind.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/rewindOrPlayPrevious.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/shuffle.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/skipOnFail.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/toggleQueueView.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/actions/updatePlayQueue.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/currentLane.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/index.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/mixRadio.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/play.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/playNext.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/playable.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/playables.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/queueLanes.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/queueTrack.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/queueView.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/repeat.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/shuffle.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/trackParents.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/helpers/tracks.ts","webpack://music-player-web/./src/master/services/player/inputs/inputs/playQueue/initPlayQueueAudioInputService.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/endReason.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/error.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/index.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/lastPosition.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/login.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/outputType.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/playChange.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/seek.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/setAndPlay.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/updateAudios.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/updateAudiosFromLiveRadio.ts","webpack://music-player-web/./src/master/services/player/inputs/service/actions/updateAudiosFromPlayQueue.ts","webpack://music-player-web/./src/master/services/player/inputs/service/helpers/audio.ts","webpack://music-player-web/./src/master/services/player/inputs/service/helpers/currentAudio.ts","webpack://music-player-web/./src/master/services/player/inputs/service/helpers/index.ts","webpack://music-player-web/./src/master/services/player/inputs/service/helpers/inputType.ts","webpack://music-player-web/./src/master/services/player/inputs/service/helpers/position.ts","webpack://music-player-web/./src/master/services/player/inputs/service/helpers/reporting.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/browserAudioOutputService.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/browserAudio/browserAudio.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/browserAudio/index.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/element/createElement.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/element/elementPool.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/element/index.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/element/mediaChange.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/element/setMuted.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/element/setPlayState.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/element/setPosition.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/element/setVolume.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/error/error.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/error/index.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/flow/index.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/flow/updateBrowserAudios.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/flow/updateFlow.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/flow/updateLoad.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/flow/updateMedia.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/flow/updatePlayState.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/flow/updatePreloadState.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/flow/updateUrl.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/hls/createHlsElement.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/hls/hlsCachePool.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/hls/hlsPreload.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/hls/index.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/log/index.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/log/log.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/skipDebounce/index.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/skipDebounce/skipDebounce.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/url/fetchTrackUrl.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/url/index.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/url/loadUrl.ts","webpack://music-player-web/./src/master/services/player/outputs/browserAudio/service/url/saveUrl.ts","webpack://music-player-web/./src/master/services/player/outputs/service/index.ts","webpack://music-player-web/./src/master/services/player/outputs/service/outputType.ts","webpack://music-player-web/./src/master/services/player/relatedServices/index.ts","webpack://music-player-web/./src/master/services/player/relatedServices/initMediaSessionService.ts","webpack://music-player-web/./src/master/services/player/relatedServices/initRecentTracksService.ts","webpack://music-player-web/./src/master/services/player/relatedServices/liveRadioHeartbeatService.ts","webpack://music-player-web/./src/master/services/playlist/addToPlaylist.ts","webpack://music-player-web/./src/master/services/playlist/index.ts","webpack://music-player-web/./src/master/services/playlist/removeTrackFromPlaylist.ts","webpack://music-player-web/./src/master/services/playlist/userPlaylistCache.ts","webpack://music-player-web/./src/master/services/pwa/initPWAService.ts","webpack://music-player-web/./src/master/services/remoteConfig/getAppMaintenanceEnvKey.ts","webpack://music-player-web/./src/master/services/remoteConfig/getEmptyMaintenanceConfig.ts","webpack://music-player-web/./src/master/services/remoteConfig/index.ts","webpack://music-player-web/./src/master/services/remoteConfig/remoteConfigService.ts","webpack://music-player-web/./src/master/services/resource/index.ts","webpack://music-player-web/./src/master/services/resource/resourceLinkService.ts","webpack://music-player-web/./src/master/services/resource/resourceProductPageService.ts","webpack://music-player-web/./src/master/services/resource/resourceService.ts","webpack://music-player-web/./src/master/services/search/index.ts","webpack://music-player-web/./src/master/services/search/searchService.ts","webpack://music-player-web/./src/master/services/search/searchViewService.ts","webpack://music-player-web/./src/master/services/selection/index.ts","webpack://music-player-web/./src/master/services/selection/multiselect.ts","webpack://music-player-web/./src/master/services/serviceWorker/appReloadService.ts","webpack://music-player-web/./src/master/services/serviceWorker/initServiceWorker.ts","webpack://music-player-web/./src/master/services/sharing/sharing.ts","webpack://music-player-web/./src/master/services/shortcuts/handleKeyPress.ts","webpack://music-player-web/./src/master/services/shortcuts/index.ts","webpack://music-player-web/./src/master/services/shortcuts/shortcutService_.ts","webpack://music-player-web/./src/master/services/sort/getSortOptionName.ts","webpack://music-player-web/./src/master/services/sort/sortService.ts","webpack://music-player-web/./src/master/services/stringHelper.ts","webpack://music-player-web/./src/master/services/tabActive/initTabActiveService.ts","webpack://music-player-web/./src/master/services/text/scrollingTextService.ts","webpack://music-player-web/./src/master/services/urlHelper.ts","webpack://music-player-web/./src/master/services/user/debug.ts","webpack://music-player-web/./src/master/services/user/index.ts","webpack://music-player-web/./src/master/services/user/user.ts","webpack://music-player-web/./src/master/services/utils.ts","webpack://music-player-web/./src/master/services/validation/index.ts","webpack://music-player-web/./src/master/services/validation/inputValidation.ts","webpack://music-player-web/./src/shared/models/app.ts","webpack://music-player-web/./src/shared/models/index.ts","webpack://music-player-web/./src/shared/services/appSettings.ts","webpack://music-player-web/./src/shared/services/formatters/index.ts","webpack://music-player-web/./src/shared/services/formatters/numberHelpers.ts","webpack://music-player-web/./src/shared/services/index.ts","webpack://music-player-web/./src/shared/services/postMessage.ts","webpack://music-player-web/./src/shared/services/serviceWorkerConfig.ts","webpack://music-player-web/./src/telmore/index.tsx","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/rng.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/regex.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/validate.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/v1.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/parse.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/v35.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/md5.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/v3.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/v4.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/sha1.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/v5.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/nil.js","webpack://music-player-web/./node_modules/uuid/dist/esm-browser/version.js","webpack://music-player-web/./node_modules/@apollo/client/link/core/execute.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/serializeFetchParameter.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/selectURI.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/iterators/reader.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/responseIterator.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/iterators/promise.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/responseIterator.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/iterators/async.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/iterators/nodeStream.js","webpack://music-player-web/./node_modules/@apollo/client/link/utils/throwServerError.js","webpack://music-player-web/./node_modules/@apollo/client/errors/index.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/checkFetcher.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/createSignalIfSupported.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/rewriteURIForGET.js","webpack://music-player-web/./node_modules/@apollo/client/link/utils/fromError.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/createHttpLink.js","webpack://music-player-web/./node_modules/@apollo/client/link/http/HttpLink.js","webpack://music-player-web/./node_modules/@wry/equality/lib/index.js","webpack://music-player-web/./node_modules/@wry/trie/lib/index.js","webpack://music-player-web/./node_modules/@apollo/client/cache/inmemory/object-canon.js","webpack://music-player-web/./node_modules/@apollo/client/core/networkStatus.js","webpack://music-player-web/./node_modules/@apollo/client/core/ObservableQuery.js","webpack://music-player-web/./node_modules/graphql/language/predicates.mjs","webpack://music-player-web/./node_modules/optimism/node_modules/@wry/trie/lib/trie.esm.js","webpack://music-player-web/./node_modules/@wry/context/lib/slot.js","webpack://music-player-web/./node_modules/@wry/context/lib/index.js","webpack://music-player-web/./node_modules/optimism/lib/bundle.esm.js","webpack://music-player-web/./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","webpack://music-player-web/./node_modules/@apollo/client/core/LocalState.js","webpack://music-player-web/./node_modules/@apollo/client/core/QueryInfo.js","webpack://music-player-web/./node_modules/@apollo/client/core/QueryManager.js","webpack://music-player-web/./node_modules/@apollo/client/cache/core/types/Cache.js","webpack://music-player-web/./node_modules/@apollo/client/core/ApolloClient.js","webpack://music-player-web/./node_modules/@apollo/client/version.js","webpack://music-player-web/./node_modules/@apollo/client/cache/core/cache.js","webpack://music-player-web/./node_modules/@apollo/client/cache/core/types/common.js","webpack://music-player-web/./node_modules/@apollo/client/cache/inmemory/helpers.js","webpack://music-player-web/./node_modules/@apollo/client/cache/inmemory/entityStore.js","webpack://music-player-web/./node_modules/@apollo/client/cache/inmemory/readFromStore.js","webpack://music-player-web/./node_modules/@apollo/client/cache/inmemory/key-extractor.js","webpack://music-player-web/./node_modules/@apollo/client/cache/inmemory/policies.js","webpack://music-player-web/./node_modules/@apollo/client/cache/inmemory/writeToStore.js","webpack://music-player-web/./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","webpack://music-player-web/./node_modules/@apollo/client/link/core/empty.js","webpack://music-player-web/./node_modules/@apollo/client/link/core/from.js","webpack://music-player-web/./node_modules/@apollo/client/link/core/split.js","webpack://music-player-web/./node_modules/@apollo/client/link/core/concat.js","webpack://music-player-web/./node_modules/@apollo/client/link/utils/toPromise.js","webpack://music-player-web/./node_modules/@apollo/client/link/utils/fromPromise.js","webpack://music-player-web/./node_modules/graphql/jsutils/invariant.mjs","webpack://music-player-web/./node_modules/graphql/language/location.mjs","webpack://music-player-web/./node_modules/graphql/language/printLocation.mjs","webpack://music-player-web/./node_modules/graphql/error/GraphQLError.mjs","webpack://music-player-web/./node_modules/graphql/jsutils/isObjectLike.mjs","webpack://music-player-web/./node_modules/graphql/error/syntaxError.mjs","webpack://music-player-web/./node_modules/graphql/language/directiveLocation.mjs","webpack://music-player-web/./node_modules/graphql/language/tokenKind.mjs","webpack://music-player-web/./node_modules/graphql/language/lexer.mjs","webpack://music-player-web/./node_modules/graphql/language/parser.mjs","webpack://music-player-web/./node_modules/graphql-tag/lib/index.js","webpack://music-player-web/./node_modules/@apollo/client/core/index.js","webpack://music-player-web/./node_modules/@apollo/client/react/context/ApolloContext.js","webpack://music-player-web/./node_modules/@apollo/client/react/context/ApolloProvider.js","webpack://music-player-web/./node_modules/@apollo/client/react/context/ApolloConsumer.js","webpack://music-player-web/./node_modules/@apollo/client/react/hooks/useApolloClient.js","webpack://music-player-web/./node_modules/@apollo/client/react/hooks/useSyncExternalStore.js","webpack://music-player-web/./node_modules/@apollo/client/react/parser/index.js","webpack://music-player-web/./node_modules/@apollo/client/react/hooks/useQuery.js","webpack://music-player-web/./node_modules/@apollo/client/react/hooks/useLazyQuery.js","webpack://music-player-web/./node_modules/@apollo/client/react/hooks/useMutation.js","webpack://music-player-web/./node_modules/@apollo/client/react/hooks/useSubscription.js","webpack://music-player-web/./node_modules/@apollo/client/react/hooks/useReactiveVar.js","webpack://music-player-web/./node_modules/@apollo/client/react/hooks/useFragment.js","webpack://music-player-web/./node_modules/@apollo/client/link/core/ApolloLink.js","webpack://music-player-web/./node_modules/@apollo/client/link/utils/createOperation.js","webpack://music-player-web/./node_modules/@apollo/client/link/utils/transformOperation.js","webpack://music-player-web/./node_modules/@apollo/client/link/utils/validateOperation.js","webpack://music-player-web/./node_modules/@apollo/client/link/error/index.js","webpack://music-player-web/./node_modules/@apollo/client/link/persisted-queries/index.js","webpack://music-player-web/./node_modules/@apollo/client/link/ws/index.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/arrays.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/canUse.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/cloneDeep.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/compact.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/errorHandling.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/incrementalResult.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/makeUniqueId.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/mergeDeep.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/mergeOptions.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/objects.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/globals/maybe.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/globals/global.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/globals/DEV.js","webpack://music-player-web/./node_modules/ts-invariant/process/index.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/globals/fix-graphql.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/globals/index.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/graphql/directives.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/graphql/fragments.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/graphql/getFromAST.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/graphql/storeUtils.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/graphql/transform.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/policies/pagination.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/observables/Concast.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/observables/asyncMap.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/observables/iteration.js","webpack://music-player-web/./node_modules/@apollo/client/utilities/observables/subclassing.js","webpack://music-player-web/./node_modules/crypto-hash/browser.js","webpack://music-player-web/./node_modules/graphql/jsutils/devAssert.mjs","webpack://music-player-web/./node_modules/graphql/jsutils/inspect.mjs","webpack://music-player-web/./node_modules/graphql/language/ast.mjs","webpack://music-player-web/./node_modules/graphql/language/blockString.mjs","webpack://music-player-web/./node_modules/graphql/language/characterClasses.mjs","webpack://music-player-web/./node_modules/graphql/language/kinds.mjs","webpack://music-player-web/./node_modules/graphql/language/printString.mjs","webpack://music-player-web/./node_modules/graphql/language/printer.mjs","webpack://music-player-web/./node_modules/graphql/jsutils/instanceOf.mjs","webpack://music-player-web/./node_modules/graphql/language/source.mjs","webpack://music-player-web/./node_modules/graphql/language/visitor.mjs","webpack://music-player-web/./node_modules/idb-keyval/dist/index.js","webpack://music-player-web/./node_modules/preact-router/dist/preact-router.mjs","webpack://music-player-web/./node_modules/preact-router/match/index.mjs","webpack://music-player-web/./node_modules/ts-invariant/lib/invariant.js","webpack://music-player-web/./node_modules/tslib/tslib.es6.mjs","webpack://music-player-web/./node_modules/zen-observable-ts/module.js","webpack://music-player-web/webpack/bootstrap","webpack://music-player-web/webpack/runtime/compat get default export","webpack://music-player-web/webpack/runtime/define property getters","webpack://music-player-web/webpack/runtime/global","webpack://music-player-web/webpack/runtime/harmony module decorator","webpack://music-player-web/webpack/runtime/hasOwnProperty shorthand","webpack://music-player-web/webpack/runtime/make namespace object","webpack://music-player-web/webpack/startup"],"sourcesContent":["import { compose } from 'redux';\nfunction extensionComposeStub() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n if (funcs.length === 0) return undefined;\n if (typeof funcs[0] === 'object') return compose;\n return compose(...funcs);\n}\nexport const composeWithDevTools = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : extensionComposeStub;\nexport const devToolsEnhancer = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\n return function (noop) {\n return noop;\n };\n};","const objectKeys = Object.keys || function (obj) {\n const keys = [];\n for (const key in obj) {\n if ({}.hasOwnProperty.call(obj, key)) keys.push(key);\n }\n return keys;\n};\nexport default function assign(obj, newKey, newValue) {\n const keys = objectKeys(obj);\n const copy = {};\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n copy[key] = obj[key];\n }\n copy[newKey] = newValue;\n return copy;\n}","import assign from './utils/assign';\nimport { compose } from 'redux';\nfunction enhancer(options) {\n const config = options || {};\n config.features = {\n pause: true,\n export: true,\n test: true\n };\n config.type = 'redux';\n if (config.autoPause === undefined) config.autoPause = true;\n if (config.latency === undefined) config.latency = 500;\n return function (createStore) {\n return function (reducer, preloadedState) {\n const store = createStore(reducer, preloadedState);\n const origDispatch = store.dispatch;\n const devTools = window.__REDUX_DEVTOOLS_EXTENSION__.connect(config);\n devTools.init(store.getState());\n const dispatch = function (action) {\n const r = origDispatch(action);\n devTools.send(action, store.getState());\n return r;\n };\n if (Object.assign) return Object.assign(store, {\n dispatch: dispatch\n });\n return assign(store, 'dispatch', dispatch);\n };\n };\n}\nfunction composeWithEnhancer(config) {\n return function () {\n return compose(compose(...arguments), enhancer(config));\n };\n}\nexport function composeWithDevTools() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n if (typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__) {\n if (funcs.length === 0) return enhancer();\n if (typeof funcs[0] === 'object') return composeWithEnhancer(funcs[0]);\n return composeWithEnhancer()(...funcs);\n }\n if (funcs.length === 0) return undefined;\n if (typeof funcs[0] === 'object') return compose;\n return compose(...funcs);\n}\nexport const devToolsEnhancer = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ? enhancer : function () {\n return function (noop) {\n return noop;\n };\n};","import { compose } from 'redux';\nimport * as logOnly from './logOnly';\nfunction extensionComposeStub() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n if (funcs.length === 0) return undefined;\n if (typeof funcs[0] === 'object') return compose;\n return compose(...funcs);\n}\nexport const composeWithDevTools = process.env.NODE_ENV === 'production' ? logOnly.composeWithDevTools : typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : extensionComposeStub;\nexport const devToolsEnhancer = process.env.NODE_ENV === 'production' ? logOnly.devToolsEnhancer : typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\n return function (noop) {\n return noop;\n };\n};","import { compose } from 'redux';\nfunction extensionComposeStub() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n if (funcs.length === 0) return undefined;\n if (typeof funcs[0] === 'object') return compose;\n return compose(...funcs);\n}\nexport const composeWithDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : extensionComposeStub;\nexport const devToolsEnhancer = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\n return function (noop) {\n return noop;\n };\n};\nexport { composeWithDevTools as composeWithDevToolsDevelopmentOnly, devToolsEnhancer as devToolsEnhancerDevelopmentOnly } from './developmentOnly';\nexport { composeWithDevTools as composeWithDevToolsLogOnly, devToolsEnhancer as devToolsEnhancerLogOnly } from './logOnly';\nexport { composeWithDevTools as composeWithDevToolsLogOnlyInProduction, devToolsEnhancer as devToolsEnhancerLogOnlyInProduction } from './logOnlyInProduction';","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable };\n//# sourceMappingURL=is.js.map\n","import { isString } from './is.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(\n elem,\n options = {},\n) {\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n const elem = el\n\n;\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getDomElement(selector) {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) ;\n }\n return null;\n}\n\nexport { getDomElement, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n","import { isString, isRegExp } from './is.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nfunction isMatchingPattern(\n value,\n pattern,\n requireExactStringMatch = false,\n) {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nfunction stringMatchesSomePattern(\n testString,\n patterns = [],\n requireExactStringMatch = false,\n) {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n//# sourceMappingURL=string.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] ;\n const wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(value)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","import { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString;\n\n/** Patch toString calls to return proper name for wrapped functions */\nclass FunctionToString {constructor() { FunctionToString.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'FunctionToString';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = FunctionToString.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function ( ...args) {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n } catch (e) {\n // ignore errors here, just don't patch this\n }\n }\n} FunctionToString.__initStatic();\n\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map\n","import { getGlobalSingleton, GLOBAL_OBJ } from './worldwide.js';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nconst CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const originalConsole = GLOBAL_OBJ.console ;\n const wrappedLevels = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] ).__sentry_original__;\n if (level in originalConsole && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] ;\n originalConsole[level] = originalWrappedFunc ;\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level ];\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n const logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger;\nif ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger };\n//# sourceMappingURL=logger.js.map\n","import { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n const gbl = GLOBAL_OBJ ;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n const getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { logger, getEventDescription, stringMatchesSomePattern } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n /^.*healthcheck.*$/,\n /^.*healthy.*$/,\n /^.*live.*$/,\n /^.*ready.*$/,\n /^.*heartbeat.*$/,\n /^.*\\/health$/,\n /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\n\n/** Inbound filters configurable by the user */\nclass InboundFilters {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'InboundFilters';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = InboundFilters.id;}\n\n constructor( _options = {}) {this._options = _options;InboundFilters.prototype.__init.call(this);}\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n const eventProcess = (event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n} InboundFilters.__initStatic();\n\n/** JSDoc */\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [\n ...(internalOptions.ignoreTransactions || []),\n ...(clientOptions.ignoreTransactions || []),\n ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n // If event.type, this is not an error\n if (event.type || !ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event, ignoreTransactions) {\n if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n const { values } = event.exception;\n try {\n const { type = '', value = '' } = (values && values[values.length - 1]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event) {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames = []) {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event) {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nexport { InboundFilters, _mergeOptions, _shouldDropEvent };\n//# sourceMappingURL=inboundfilters.js.map\n","const DEFAULT_ENVIRONMENT = 'production';\n\nexport { DEFAULT_ENVIRONMENT };\n//# sourceMappingURL=constants.js.map\n","import { isThenable } from './is.js';\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n const PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n const RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n const REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n __init() {this._state = States.PENDING;}\n __init2() {this._handlers = [];}\n\n constructor(\n executor,\n ) {SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);SyncPromise.prototype.__init5.call(this);SyncPromise.prototype.__init6.call(this);\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init3() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init4() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init5() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init6() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { timestampInSeconds, uuid4, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","import { isPlainObject, dateTimestampInSeconds, SyncPromise, logger, isThenable, arrayify, getGlobalSingleton, uuid4 } from '@sentry/utils';\nimport { updateSession } from './session.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope {\n /** Flag if notifying is happening. */\n\n /** Callback for client to receive scope changes. */\n\n /** Callback list that will be called after {@link applyToEvent}. */\n\n /** Array of breadcrumbs. */\n\n /** User */\n\n /** Tags */\n\n /** Extra */\n\n /** Contexts */\n\n /** Attachments */\n\n /** Propagation Context for distributed tracing */\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n\n /** Fingerprint */\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n\n /** Transaction Name */\n\n /** Span */\n\n /** Session */\n\n /** Request Mode Session Status */\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = generatePropagationContext();\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n static clone(scope) {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n newScope._sdkProcessingMetadata = { ...scope._sdkProcessingMetadata };\n newScope._propagationContext = { ...scope._propagationContext };\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level,\n ) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setSpan(span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSpan() {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n getTransaction() {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext )(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n if (captureContext._propagationContext) {\n this._propagationContext = captureContext._propagationContext;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext ;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n if (captureContext.propagationContext) {\n this._propagationContext = captureContext.propagationContext;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n this._propagationContext = generatePropagationContext();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getLastBreadcrumb() {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getAttachments() {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n */\n applyToEvent(event, hint = {}) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transaction = this._span.transaction;\n if (transaction) {\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: transaction.getDynamicSamplingContext(),\n ...event.sdkProcessingMetadata,\n };\n const transactionName = transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...this._sdkProcessingMetadata,\n propagationContext: this._propagationContext,\n };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setPropagationContext(context) {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getPropagationContext() {\n return this._propagationContext;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n _notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n ) {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) ;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n _applyFingerprint(event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nfunction addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n\nfunction generatePropagationContext() {\n return {\n traceId: uuid4(),\n spanId: uuid4().substring(16),\n sampled: false,\n };\n}\n\nexport { Scope, addGlobalEventProcessor };\n//# sourceMappingURL=scope.js.map\n","import { uuid4, dateTimestampInSeconds, consoleSandbox, logger, GLOBAL_OBJ, getGlobalSingleton } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { Scope } from './scope.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nconst API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * @inheritDoc\n */\nclass Hub {\n /** Is a {@link Layer}[] containing the client and scope */\n\n /** Contains the last event id of a captured event. */\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n constructor(client, scope = new Scope(), _version = API_VERSION) {this._version = _version;\n this._stack = [{ scope }];\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n isOlderThan(version) {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n bindClient(client) {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n pushScope() {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n popScope() {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n withScope(callback) {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n getClient() {\n return this.getStackTop().client ;\n }\n\n /** Returns the scope of the top stack. */\n getScope() {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n getStack() {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n getStackTop() {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint) {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level,\n hint,\n ) {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (!event.type) {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n lastEventId() {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, hint) {\n const { scope, client } = this.getStackTop();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) )\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this.getScope().setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this.getScope().setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this.getScope().setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.getScope().setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this.getScope().setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setContext(name, context) {\n this.getScope().setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n configureScope(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n run(callback) {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n startTransaction(context, customSamplingContext) {\n const result = this._callExtensionMethod('startTransaction', context, customSamplingContext);\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && !result) {\n // eslint-disable-next-line no-console\n console.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n }\n\n return result;\n }\n\n /**\n * @inheritDoc\n */\n traceHeaders() {\n return this._callExtensionMethod('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n captureSession(endSession = false) {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n endSession() {\n const layer = this.getStackTop();\n const scope = layer.scope;\n const session = scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n scope.setSession();\n }\n\n /**\n * @inheritDoc\n */\n startSession(context) {\n const { scope, client } = this.getStackTop();\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: scope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n shouldSendDefaultPii() {\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n _sendSessionUpdate() {\n const { scope, client } = this.getStackTop();\n\n const session = scope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n _withClient(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _callExtensionMethod(method, ...args) {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nfunction makeMain(hub) {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nfunction getCurrentHub() {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n if (hub) {\n return hub;\n }\n }\n\n // Return hub that lives on a global object\n return getGlobalHub(registry);\n}\n\nfunction getGlobalHub(registry = getMainCarrier()) {\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\nfunction ensureHubOnCarrier(carrier, parent = getGlobalHub()) {\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(carrier) || getHubFromCarrier(carrier).isOlderThan(API_VERSION)) {\n const globalHubTopStack = parent.getStackTop();\n setHubOnCarrier(carrier, new Hub(globalHubTopStack.client, Scope.clone(globalHubTopStack.scope)));\n }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nfunction setAsyncContextStrategy(strategy) {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n registry.__SENTRY__ = registry.__SENTRY__ || {};\n registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nfunction runWithAsyncContext(callback, options = {}) {\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n }\n\n // if there was no strategy, fallback to just calling the callback\n return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nfunction getHubFromCarrier(carrier) {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nfunction setHubOnCarrier(carrier, hub) {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n\nexport { API_VERSION, Hub, ensureHubOnCarrier, getCurrentHub, getHubFromCarrier, getMainCarrier, makeMain, runWithAsyncContext, setAsyncContextStrategy, setHubOnCarrier };\n//# sourceMappingURL=hub.js.map\n","import { logger } from './logger.js';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nfunction dsnFromString(str) {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() ;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn) {\n if (!(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n logger.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nfunction makeDsn(from) {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n\nexport { dsnFromString, dsnToString, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","import { node } from './node-stack-trace.js';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n const frames = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n const localStack = stack.slice(0, STACKTRACE_FRAME_LIMIT);\n\n const lastFrameFunction = localStack[localStack.length - 1].function;\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (lastFrameFunction && /sentryWrapped/.test(lastFrameFunction)) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n const firstFrameFunction = localStack[localStack.length - 1].function;\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (firstFrameFunction && /captureMessage|captureException/.test(firstFrameFunction)) {\n localStack.pop();\n }\n\n return localStack.map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { isNaN, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n ) {\n return value ;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n ? ((value )['__sentry_override_normalization_depth__'] )\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value );\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n const prototype = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nexport { normalize, normalizeToSize, visit as walk };\n//# sourceMappingURL=normalize.js.map\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n//# sourceMappingURL=memo.js.map\n","import { dsnToString } from './dsn.js';\nimport { normalize } from './normalize.js';\nimport { dropUndefinedKeys } from './object.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nfunction forEachEnvelopeItem(\n envelope,\n callback,\n) {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nfunction envelopeContainsItemType(envelope, types) {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8.\n */\nfunction encodeUTF8(input, textEncoder) {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope, textEncoder) {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts = JSON.stringify(envHeaders);\n\n function append(next) {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Parses an envelope\n */\nfunction parseEnvelope(\n env,\n textEncoder,\n textDecoder,\n) {\n let buffer = typeof env === 'string' ? textEncoder.encode(env) : env;\n\n function readBinary(length) {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson() {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(textDecoder.decode(readBinary(i))) ;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(\n attachment,\n textEncoder,\n) {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from from the metadata or an events */\nfunction getSdkMetadataForEnvelopeHeader(metadataOrEvent) {\n if (!metadataOrEvent || !metadataOrEvent.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nfunction createEventEnvelopeHeaders(\n event,\n sdkInfo,\n tunnel,\n dsn,\n) {\n const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n return {\n event_id: event.event_id ,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n }),\n };\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\nfunction ensureMetadataStacksAreParsed(parser) {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getMetadataForUrl(parser, filename) {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nfunction addMetadataToStackFrames(parser, event) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n if (!frame.filename) {\n continue;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Strips metadata from stack frames.\n */\nfunction stripMetadataFromStackFrames(event) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n delete frame.module_metadata;\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\nexport { addMetadataToStackFrames, getMetadataForUrl, stripMetadataFromStackFrames };\n//# sourceMappingURL=metadata.js.map\n","import { forEachEnvelopeItem } from '@sentry/utils';\nimport { stripMetadataFromStackFrames, addMetadataToStackFrames } from '../metadata.js';\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n */\nclass ModuleMetadata {constructor() { ModuleMetadata.prototype.__init.call(this); }\n /*\n * @inheritDoc\n */\n static __initStatic() {this.id = 'ModuleMetadata';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = ModuleMetadata.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n const client = getCurrentHub().getClient();\n\n if (!client || typeof client.on !== 'function') {\n return;\n }\n\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item )[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n const stackParser = client.getOptions().stackParser;\n\n addGlobalEventProcessor(event => {\n addMetadataToStackFrames(stackParser, event);\n return event;\n });\n }\n} ModuleMetadata.__initStatic();\n\nexport { ModuleMetadata };\n//# sourceMappingURL=metadata.js.map\n","const SDK_VERSION = '7.60.1';\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","import { logger, uuid4 } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction captureException(exception, captureContext) {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nfunction captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n captureContext,\n) {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nfunction captureEvent(event, hint) {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nfunction configureScope(callback) {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nfunction addBreadcrumb(breadcrumb) {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setContext(name, context) {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nfunction withScope(callback) {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nfunction startTransaction(\n context,\n customSamplingContext,\n) {\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const client = hub.getClient();\n if (!client) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\nexport { addBreadcrumb, captureCheckIn, captureEvent, captureException, captureMessage, configureScope, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction, withScope };\n//# sourceMappingURL=exports.js.map\n","import { getCurrentHub } from '../hub.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\nexport { hasTracingEnabled };\n//# sourceMappingURL=hasTracingEnabled.js.map\n","import { logger } from './logger.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n//# sourceMappingURL=supports.js.map\n","import { getGlobalObject } from '../worldwide.js';\n\n// Based on https://github.com/angular/angular.js/pull/13945/files\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (WINDOW ).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { supportsHistory };\n//# sourceMappingURL=supportsHistory.js.map\n","import { isString } from './is.js';\nimport { logger, CONSOLE_LEVELS } from './logger.js';\nimport { fill } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\nimport { supportsNativeFetch } from './supports.js';\nimport { getGlobalObject } from './worldwide.js';\nimport { supportsHistory } from './vendor/supportsHistory.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst SENTRY_XHR_DATA_KEY = '__sentry_xhr_v2__';\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers = {};\nconst instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in WINDOW)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in WINDOW.console)) {\n return;\n }\n\n fill(WINDOW.console, level, function (originalConsoleMethod) {\n return function (...args) {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(WINDOW.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(WINDOW, 'fetch', function (originalFetch) {\n return function (...args) {\n const { method, url } = parseFetchArgs(args);\n\n const handlerData = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(WINDOW, args).then(\n (response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\nfunction hasProp(obj, prop) {\n return !!obj && typeof obj === 'object' && !!(obj )[prop];\n}\n\nfunction getUrlFromResource(resource) {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request\n */\nfunction parseFetchArgs(fetchArgs) {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [url, options] = fetchArgs ;\n\n return {\n url: getUrlFromResource(url),\n method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg ),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in WINDOW)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n const url = args[1];\n const xhrInfo = (this[SENTRY_XHR_DATA_KEY] = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n request_headers: {},\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = () => {\n // For whatever reason, this is not the same instance here as from the outer method\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (!xhrInfo) {\n return;\n }\n\n if (this.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = this.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args: args ,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: this,\n } );\n }\n };\n\n if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n fill(this, 'onreadystatechange', function (original) {\n return function ( ...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(this, readyStateArgs);\n };\n });\n } else {\n this.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n fill(this, 'setRequestHeader', function (original) {\n return function ( ...setRequestHeaderArgs) {\n const [header, value] = setRequestHeaderArgs ;\n\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (xhrInfo) {\n xhrInfo.request_headers[header.toLowerCase()] = value;\n }\n\n return original.apply(this, setRequestHeaderArgs);\n };\n });\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n if (sentryXhrData && args[0] !== undefined) {\n sentryXhrData.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function ( ...args) {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target ;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in WINDOW)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW )[target] && (WINDOW )[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (\n\n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this ;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function (\n\n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this ;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = WINDOW.onerror;\n\n WINDOW.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n WINDOW.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = WINDOW.onunhandledrejection;\n\n WINDOW.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n WINDOW.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { SENTRY_XHR_DATA_KEY, addInstrumentationHandler, parseFetchArgs };\n//# sourceMappingURL=instrument.js.map\n","import { getCurrentHub } from '../hub.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction(maybeHub) {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope.getTransaction() ;\n}\n\nexport { getActiveTransaction };\n//# sourceMappingURL=utils.js.map\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { getActiveTransaction } from './utils.js';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status = 'internal_error';\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n\nexport { registerErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n","import { isString } from './is.js';\nimport { logger } from './logger.js';\n\nconst BAGGAGE_HEADER_NAME = 'baggage';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader,\n) {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n return {\n ...acc,\n ...currBaggageObject,\n };\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext ;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext,\n) {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n","import { baggageHeaderToDynamicSamplingContext } from './baggage.js';\nimport { uuid4 } from './misc.js';\n\nconst TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create tracing context from incoming headers.\n */\nfunction tracingContextFromHeaders(\n sentryTrace,\n baggage,\n)\n\n {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n const propagationContext = {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n sampled: parentSampled === undefined ? false : parentSampled,\n };\n\n if (parentSpanId) {\n propagationContext.parentSpanId = parentSpanId;\n }\n\n if (dynamicSamplingContext) {\n propagationContext.dsc = dynamicSamplingContext ;\n }\n\n return {\n traceparentData,\n dynamicSamplingContext,\n propagationContext,\n };\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nfunction generateSentryTraceHeader(\n traceId = uuid4(),\n spanId = uuid4().substring(16),\n sampled,\n) {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, tracingContextFromHeaders };\n//# sourceMappingURL=tracing.js.map\n","import { uuid4, timestampInSeconds, logger, generateSentryTraceHeader, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n __init() {this.spans = [];}\n\n constructor(maxlen = 1000) {SpanRecorder.prototype.__init.call(this);\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n add(span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span {\n /**\n * @inheritDoc\n */\n __init2() {this.traceId = uuid4();}\n\n /**\n * @inheritDoc\n */\n __init3() {this.spanId = uuid4().substring(16);}\n\n /**\n * @inheritDoc\n */\n\n /**\n * Internal keeper of the status\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * Timestamp in seconds when the span was created.\n */\n __init4() {this.startTimestamp = timestampInSeconds();}\n\n /**\n * Timestamp in seconds when the span ended.\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n __init5() {this.tags = {};}\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n __init6() {this.data = {};}\n\n /**\n * List of spans that were finalized\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * The instrumenter that created this span.\n */\n __init7() {this.instrumenter = 'sentry';}\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(spanContext) {Span.prototype.__init2.call(this);Span.prototype.__init3.call(this);Span.prototype.__init4.call(this);Span.prototype.__init5.call(this);Span.prototype.__init6.call(this);Span.prototype.__init7.call(this);\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n if (spanContext.instrumenter) {\n this.instrumenter = spanContext.instrumenter;\n }\n }\n\n /**\n * @inheritDoc\n */\n startChild(\n spanContext,\n ) {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && childSpan.transaction) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = childSpan.transaction.name || '< unknown name >';\n const idStr = childSpan.transaction.spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n setData(key, value) {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setHttpStatus(httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n this.setData('http.response.status_code', httpStatus);\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n isSuccess() {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n if (\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampInSeconds();\n }\n\n /**\n * @inheritDoc\n */\n toTraceparent() {\n return generateSentryTraceHeader(this.traceId, this.spanId, this.sampled);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(spanContext) {\n this.data = spanContext.data || {};\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = spanContext.spanId || this.spanId;\n this.startTimestamp = spanContext.startTimestamp || this.startTimestamp;\n this.status = spanContext.status;\n this.tags = spanContext.tags || {};\n this.traceId = spanContext.traceId || this.traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getTraceContext() {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n toJSON()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\nexport { Span, SpanRecorder, spanStatusfromHttpCode };\n//# sourceMappingURL=span.js.map\n","import { dropUndefinedKeys } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatchs the `createDsc` lifecycle hook as a side effect.\n */\nfunction getDynamicSamplingContextFromClient(\n trace_id,\n client,\n scope,\n) {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n user_segment,\n public_key,\n trace_id,\n }) ;\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n\nexport { getDynamicSamplingContextFromClient };\n//# sourceMappingURL=dynamicSamplingContext.js.map\n","import { logger, dropUndefinedKeys } from '@sentry/utils';\nimport { getCurrentHub } from '../hub.js';\nimport { getDynamicSamplingContextFromClient } from './dynamicSamplingContext.js';\nimport { Span, SpanRecorder } from './span.js';\n\n/** JSDoc */\nclass Transaction extends Span {\n\n /**\n * The reference to the current hub.\n */\n\n __init() {this._measurements = {};}\n\n __init2() {this._contexts = {};}\n\n __init3() {this._frozenDynamicSamplingContext = undefined;}\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(transactionContext, hub) {\n super(transactionContext);Transaction.prototype.__init.call(this);Transaction.prototype.__init2.call(this);Transaction.prototype.__init3.call(this);\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n source: 'custom',\n ...transactionContext.metadata,\n spanMetadata: {},\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this.metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n /** Getter for `name` property */\n get name() {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` as custom */\n set name(newName) {\n this.setName(newName);\n }\n\n /**\n * JSDoc\n */\n setName(name, source = 'custom') {\n this._name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n initSpanRecorder(maxlen = 1000) {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n */\n setMeasurement(name, value, unit = '') {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n setMetadata(newMetadata) {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev, current) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const metadata = this.metadata;\n\n const transaction = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n dynamicSamplingContext: this.getDynamicSamplingContext(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(transactionContext) {\n super.updateWithContext(transactionContext);\n\n this.name = transactionContext.name || '';\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n getDynamicSamplingContext() {\n if (this._frozenDynamicSamplingContext) {\n return this._frozenDynamicSamplingContext;\n }\n\n const hub = this._hub || getCurrentHub();\n const client = hub.getClient();\n\n if (!client) return {};\n\n const scope = hub.getScope();\n const dsc = getDynamicSamplingContextFromClient(this.traceId, client, scope);\n\n const maybeSampleRate = this.metadata.sampleRate;\n if (maybeSampleRate !== undefined) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const source = this.metadata.source;\n if (source && source !== 'url') {\n dsc.transaction = this.name;\n }\n\n if (this.sampled !== undefined) {\n dsc.sampled = String(this.sampled);\n }\n\n // Uncomment if we want to make DSC immutable\n // this._frozenDynamicSamplingContext = dsc;\n\n return dsc;\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n setHub(hub) {\n this._hub = hub;\n }\n}\n\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map\n","import { logger, timestampInSeconds } from '@sentry/utils';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nconst TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends SpanRecorder {\n constructor(\n _pushActivity,\n _popActivity,\n transactionSpanId,\n maxlen,\n ) {\n super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId; }\n\n /**\n * @inheritDoc\n */\n add(span) {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampInSeconds();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends Transaction {\n // Activities store a list of active spans\n __init() {this.activities = {};}\n\n // Track state of activities in previous heartbeat\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n __init2() {this._heartbeatCounter = 0;}\n\n // We should not use heartbeat if we finished a transaction\n __init3() {this._finished = false;}\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n __init4() {this._idleTimeoutCanceledPermanently = false;}\n\n __init5() {this._beforeFinishCallbacks = [];}\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n\n __init6() {this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];}\n\n constructor(\n transactionContext,\n _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n _idleTimeout = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = TRACING_DEFAULTS.finalTimeout,\n _heartbeatInterval = TRACING_DEFAULTS.heartbeatInterval,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._heartbeatInterval = _heartbeatInterval;this._onScope = _onScope;IdleTransaction.prototype.__init.call(this);IdleTransaction.prototype.__init2.call(this);IdleTransaction.prototype.__init3.call(this);IdleTransaction.prototype.__init4.call(this);IdleTransaction.prototype.__init5.call(this);IdleTransaction.prototype.__init6.call(this);\n if (_onScope) {\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._restartIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n finish(endTimestamp = timestampInSeconds()) {\n this._finished = true;\n this.activities = {};\n\n if (this.op === 'ui.action.click') {\n this.setTag(FINISH_REASON_TAG, this._finishReason);\n }\n\n if (this.spanRecorder) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n const scope = this._idleHub.getScope();\n if (scope.getTransaction() === this) {\n scope.setSpan(undefined);\n }\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n registerBeforeFinishCallback(callback) {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n initSpanRecorder(maxlen) {\n if (!this.spanRecorder) {\n const pushActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n cancelIdleTimeout(\n endTimestamp,\n {\n restartOnChildSpanChange,\n }\n\n = {\n restartOnChildSpanChange: true,\n },\n ) {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.finish(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n setFinishReason(reason) {\n this._finishReason = reason;\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n _restartIdleTimeout(endTimestamp) {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n _pushActivity(spanId) {\n this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n _popActivity(spanId) {\n if (this.activities[spanId]) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampInSeconds();\n if (this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.finish(endTimestamp);\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampInSeconds is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n _beat() {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n\nexport { IdleTransaction, IdleTransactionSpanRecorder, TRACING_DEFAULTS };\n//# sourceMappingURL=idletransaction.js.map\n","import { logger, isNaN } from '@sentry/utils';\nimport { getMainCarrier } from '../hub.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { Transaction } from './transaction.js';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n const scope = this.getScope();\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': span.toTraceparent(),\n }\n : {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n sampleRate: Number(transaction.sampled),\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setMetadata({\n sampleRate,\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n\n transactionContext,\n customSamplingContext,\n) {\n const client = this.getClient();\n const options = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n transactionContext.sampled = false;\n }\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n heartbeatInterval,\n) {\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, heartbeatInterval, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nfunction addTracingExtensions() {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n\n registerErrorInstrumentation();\n}\n\nexport { addTracingExtensions, startIdleTransaction };\n//# sourceMappingURL=hubextensions.js.map\n","/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n /** Display name of this error instance. */\n\n constructor( message, logLevel = 'warn') {\n super(message);this.message = message;\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n\nexport { SentryError };\n//# sourceMappingURL=error.js.map\n","// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nconst DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nfunction disabledUntil(limits, category) {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, category, now = Date.now()) {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nfunction updateRateLimits(\n limits,\n { statusCode, headers },\n now = Date.now(),\n) {\n const updatedRateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n","import { makePromiseBuffer, forEachEnvelopeItem, envelopeItemTypeToDataCategory, isRateLimited, resolvedSyncPromise, createEnvelope, SentryError, logger, serializeEnvelope, updateRateLimits } from '@sentry/utils';\n\nconst DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n) {\n let rateLimits = {};\n const flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n const filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory, event);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason) => {\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n });\n };\n\n const requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n // We use this to identifify if the transport is the base transport\n // TODO (v8): Remove this again as we'll no longer need it\n send.__sentry__baseTransport__ = true;\n\n return {\n send,\n flush,\n };\n}\n\nfunction getEventForEnvelopeItem(item, type) {\n if (type !== 'event' && type !== 'transaction') {\n return undefined;\n }\n\n return Array.isArray(item) ? (item )[1] : undefined;\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n","import { SentryError } from './error.js';\nimport { rejectedSyncPromise, SyncPromise, resolvedSyncPromise } from './syncpromise.js';\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit) {\n const buffer = [];\n\n function isReady() {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task) {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer) {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout) {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n\nexport { makePromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map\n","import { makeDsn, dsnToString, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(\n dsn,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions = {} ,\n) {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(\n dsnLike,\n dialogOptions\n\n,\n) {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n","import { dsnFromString, forEachEnvelopeItem } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from '../api.js';\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nfunction eventFromEnvelope(env, types) {\n let event;\n\n forEachEnvelopeItem(env, (item, type) => {\n if (types.includes(type)) {\n event = Array.isArray(item) ? (item )[1] : undefined;\n }\n // bail out if we found an event\n return !!event;\n });\n\n return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport(\n createTransport,\n release,\n) {\n return options => {\n const transport = createTransport(options);\n\n return {\n send: async (envelope) => {\n const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n if (event) {\n event.release = release;\n }\n return transport.send(envelope);\n },\n flush: timeout => transport.flush(timeout),\n };\n };\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n */\nfunction makeMultiplexedTransport(\n createTransport,\n matcher,\n) {\n return options => {\n const fallbackTransport = createTransport(options);\n const otherTransports = {};\n\n function getTransport(dsn, release) {\n // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n // use at the same time\n const key = release ? `${dsn}:${release}` : dsn;\n\n if (!otherTransports[key]) {\n const validatedDsn = dsnFromString(dsn);\n if (!validatedDsn) {\n return undefined;\n }\n const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn);\n\n otherTransports[key] = release\n ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n : createTransport({ ...options, url });\n }\n\n return otherTransports[key];\n }\n\n async function send(envelope) {\n function getEvent(types) {\n const eventTypes = types && types.length ? types : ['event'];\n return eventFromEnvelope(envelope, eventTypes);\n }\n\n const transports = matcher({ envelope, getEvent })\n .map(result => {\n if (typeof result === 'string') {\n return getTransport(result, undefined);\n } else {\n return getTransport(result.dsn, result.release);\n }\n })\n .filter((t) => !!t);\n\n // If we have no transports to send to, use the fallback transport\n if (transports.length === 0) {\n transports.push(fallbackTransport);\n }\n\n const results = await Promise.all(transports.map(transport => transport.send(envelope)));\n\n return results[0];\n }\n\n async function flush(timeout) {\n const allTransports = [...Object.keys(otherTransports).map(dsn => otherTransports[dsn]), fallbackTransport];\n const results = await Promise.all(allTransports.map(transport => transport.flush(timeout)));\n return results.every(r => r);\n }\n\n return {\n send,\n flush,\n };\n };\n}\n\nexport { eventFromEnvelope, makeMultiplexedTransport };\n//# sourceMappingURL=multiplexed.js.map\n","import { isThenable } from '@sentry/utils';\nimport { getCurrentHub } from '../hub.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n *\n * This function is meant to be used internally and may break at any time. Use at your own risk.\n *\n * @internal\n * @private\n */\nfunction trace(\n context,\n callback,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onError = () => {},\n) {\n const ctx = { ...context };\n // If a name is set and a description is not, set the description to the name.\n if (ctx.name !== undefined && ctx.description === undefined) {\n ctx.description = ctx.name;\n }\n\n const hub = getCurrentHub();\n const scope = hub.getScope();\n\n const parentSpan = scope.getSpan();\n\n function getActiveSpan() {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n return parentSpan ? parentSpan.startChild(ctx) : hub.startTransaction(ctx);\n }\n\n const activeSpan = getActiveSpan();\n scope.setSpan(activeSpan);\n\n function finishAndSetSpan() {\n activeSpan && activeSpan.finish();\n hub.getScope().setSpan(parentSpan);\n }\n\n let maybePromiseResult;\n try {\n maybePromiseResult = callback(activeSpan);\n } catch (e) {\n activeSpan && activeSpan.setStatus('internal_error');\n onError(e);\n finishAndSetSpan();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n Promise.resolve(maybePromiseResult).then(\n () => {\n finishAndSetSpan();\n },\n e => {\n activeSpan && activeSpan.setStatus('internal_error');\n onError(e);\n finishAndSetSpan();\n },\n );\n } else {\n finishAndSetSpan();\n }\n\n return maybePromiseResult;\n}\n\nexport { trace };\n//# sourceMappingURL=trace.js.map\n","import { withScope, captureException } from '@sentry/core';\nimport { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, addExceptionTypeValue, addExceptionMechanism } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n before,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped = function () {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope) => {\n scope.addEventProcessor((event) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\n\nexport { WINDOW, ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","import { arrayify, logger } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\nimport { addGlobalEventProcessor } from './scope.js';\n\nconst installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations) {\n const integrationsByName = {};\n\n integrations.forEach(currentInstance => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.keys(integrationsByName).map(k => integrationsByName[k]);\n}\n\n/** Gets integrations to install */\nfunction getIntegrationsToSetup(options) {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach(integration => {\n integration.isDefaultInstance = true;\n });\n\n let integrations;\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n integrations = arrayify(userIntegrations(defaultIntegrations));\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = findIndex(finalIntegrations, integration => integration.name === 'Debug');\n if (debugIndex !== -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(integrations) {\n const integrationIndex = {};\n\n integrations.forEach(integration => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/** Setup a single integration. */\nfunction setupIntegration(integration, integrationIndex) {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);\n }\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex(arr, callback) {\n for (let i = 0; i < arr.length; i++) {\n if (callback(arr[i]) === true) {\n return i;\n }\n }\n\n return -1;\n}\n\nexport { getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","import { uuid4, dateTimestampInSeconds, resolvedSyncPromise, truncate, GLOBAL_OBJ, normalize } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { Scope } from '../scope.js';\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nfunction prepareEvent(\n options,\n event,\n hint,\n scope,\n) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options;\n const prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n //\n // We need to check for the existence of `finalScope.getAttachments`\n // because `getAttachments` can be undefined if users are using an older version\n // of `@sentry/core` that does not have the `getAttachments` method.\n // See: https://github.com/getsentry/sentry-javascript/issues/5229\n if (finalScope) {\n // Collect attachments from the hint and scope\n if (finalScope.getAttachments) {\n const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event, options) {\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n}\n\nconst debugIdStackParserCache = new WeakMap();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n if (!debugIdMap) {\n return;\n }\n\n let debugIdStackFramesCache;\n const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n if (cachedDebugIdStackFrameCache) {\n debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n } else {\n debugIdStackFramesCache = new Map();\n debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n }\n\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = Object.keys(debugIdMap).reduce((acc, debugIdStackTrace) => {\n let parsedStack;\n const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n if (cachedParsedStack) {\n parsedStack = cachedParsedStack;\n } else {\n parsedStack = stackParser(debugIdStackTrace);\n debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n }\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n if (stackFrame.filename) {\n acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n break;\n }\n }\n return acc;\n }, {});\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nfunction applyDebugMeta(event) {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap = {};\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.keys(filenameDebugIdMap).forEach(filename => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id: filenameDebugIdMap[filename],\n });\n });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event, integrationNames) {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n const normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n}\n\nexport { applyDebugIds, applyDebugMeta, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n","import { makeDsn, logger, checkOrSetAlreadyCaught, isPrimitive, resolvedSyncPromise, addItemToEnvelope, createAttachmentEnvelopeItem, SyncPromise, rejectedSyncPromise, SentryError, isThenable, isPlainObject } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegrations, setupIntegration } from './integration.js';\nimport { updateSession } from './session.js';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /** Options passed to the SDK. */\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n /** Array of set up integrations. */\n __init() {this._integrations = {};}\n\n /** Indicates whether this client's integrations have been set up. */\n __init2() {this._integrationsInitialized = false;}\n\n /** Number of calls being processed */\n __init3() {this._numProcessing = 0;}\n\n /** Holds flushable */\n __init4() {this._outcomes = {};}\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n __init5() {this._hooks = {};}\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {BaseClient.prototype.__init.call(this);BaseClient.prototype.__init2.call(this);BaseClient.prototype.__init3.call(this);BaseClient.prototype.__init4.call(this);BaseClient.prototype.__init5.call(this);\n this._options = options;\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('No DSN provided, client will not do anything.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n captureException(exception, hint, scope) {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level,\n hint,\n scope,\n ) {\n let eventId = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureSession(session) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @see SdkMetadata in @sentry/types\n *\n * @return The metadata of the SDK\n */\n getSdkMetadata() {\n return this._options._metadata;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n const transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n setupIntegrations() {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n getIntegrationById(integrationId) {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n try {\n return (this._integrations[integration.id] ) || null;\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n addIntegration(integration) {\n setupIntegration(integration, this._integrations);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n const promise = this._sendEnvelope(env);\n if (promise) {\n promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n }\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n if (this._dsn) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n void this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category, _event) {\n // Note: we use `event` in replay, where we overwrite this hook.\n\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n // Keep on() & emit() signatures in sync with types' client.ts interface\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n on(hook, callback) {\n if (!this._hooks[hook]) {\n this._hooks[hook] = [];\n }\n\n // @ts-ignore We assue the types are correct\n this._hooks[hook].push(callback);\n }\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n emit(hook, ...rest) {\n if (this._hooks[hook]) {\n // @ts-ignore we cannot enforce the callback to match the hook\n this._hooks[hook].forEach(callback => callback(...rest));\n }\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n _isClientDoneProcessing(timeout) {\n return new SyncPromise(resolve => {\n let ticked = 0;\n const tick = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(event, hint, scope) {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations.length > 0) {\n hint.integrations = integrations;\n }\n return prepareEvent(options, event, hint, scope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n // If a trace context is not set on the event, we use the propagationContext set on the event to\n // generate a trace context. If the propagationContext does not have a dynamic sampling context, we\n // also generate one for it.\n const { propagationContext } = evt.sdkProcessingMetadata || {};\n const trace = evt.contexts && evt.contexts.trace;\n if (!trace && propagationContext) {\n const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext ;\n evt.contexts = {\n trace: {\n trace_id,\n span_id: spanId,\n parent_span_id: parentSpanId,\n },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this, scope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n }\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason ;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(event, hint, scope) {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\n }\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n const dataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory, event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory, event);\n throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(promise) {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n _sendEnvelope(envelope) {\n if (this._transport && this._dsn) {\n this.emit('beforeEnvelope', envelope);\n\n return this._transport.send(envelope).then(null, reason => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Error while sending event:', reason);\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult,\n beforeSendLabel,\n) {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n options,\n event,\n hint,\n) {\n const { beforeSend, beforeSendTransaction } = options;\n\n if (isErrorEvent(event) && beforeSend) {\n return beforeSend(event, hint);\n }\n\n if (isTransactionEvent(event) && beforeSendTransaction) {\n return beforeSendTransaction(event, hint);\n }\n\n return event;\n}\n\nfunction isErrorEvent(event) {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map\n","import { getSdkMetadataForEnvelopeHeader, dsnToString, createEnvelope, createEventEnvelopeHeaders } from '@sentry/utils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n session,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n };\n\n const envelopeItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n event,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n /*\n Note: Due to TS, event.type may be `replay_event`, theoretically.\n In practice, we never call `createEventEnvelope` with `replay_event` type,\n and we'd have to adjut a looot of types to make this work properly.\n We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n So the safe choice is to really guard against the replay_event type here.\n */\n const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n const eventItem = [{ type: eventType }, event];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nexport { createEventEnvelope, createSessionEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, normalizeToSize, extractExceptionKeysForMessage } from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception ).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex) {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if (isErrorEvent(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception )) {\n const domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n stackParser,\n input,\n syntheticException,\n attachStacktrace,\n) {\n const event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception,\n { isUnhandledRejection },\n) {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch (e) {\n // ignore errors here\n }\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nconst validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nfunction severityFromString(level) {\n return severityLevelFromString(level) ;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nfunction severityLevelFromString(level) {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') ;\n}\n\nexport { severityFromString, severityLevelFromString, validSeverityLevels };\n//# sourceMappingURL=severity.js.map\n","/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url) {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nfunction getNumberOfUrlSegments(url) {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span description\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlString(url) {\n const { protocol, host, path } = url;\n\n const filteredHost =\n (host &&\n host\n // Always filter out authority\n .replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n .replace(':80', '')\n .replace(':443', '')) ||\n '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\nexport { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, getEventDescription, severityLevelFromString, safeJoin, SENTRY_XHR_DATA_KEY, parseUrl, logger, htmlTreeAsString } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nclass Breadcrumbs {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = BREADCRUMB_INTEGRATION_ID;}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Breadcrumbs.id;}\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n\n /**\n * @inheritDoc\n */\n constructor(options) {Breadcrumbs.prototype.__init.call(this);\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n setupOnce() {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n\n /**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\n addSentryBreadcrumb(event) {\n if (this.options.sentry) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n }\n} Breadcrumbs.__initStatic();\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _domBreadcrumb(dom) {\n function _innerDomBreadcrumb(handlerData) {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n let maxStringLength =\n typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n );\n maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n }\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n const event = handlerData.event ;\n target = _isEvent(event)\n ? htmlTreeAsString(event.target, { keyAttrs, maxStringLength })\n : htmlTreeAsString(event, { keyAttrs, maxStringLength });\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _consoleBreadcrumb(handlerData) {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/6010\n // see: https://github.com/getsentry/sentry-javascript/issues/5916\n for (let i = 0; i < handlerData.args.length; i++) {\n if (handlerData.args[i] === 'ref=Ref<') {\n handlerData.args[i + 1] = 'viewRef';\n break;\n }\n }\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _xhrBreadcrumb(handlerData) {\n const { startTimestamp, endTimestamp } = handlerData;\n\n const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n // We only capture complete, non-sentry requests\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return;\n }\n\n const { method, url, status_code, body } = sentryXhrData;\n\n const data = {\n method,\n url,\n status_code,\n };\n\n const hint = {\n xhr: handlerData.xhr,\n input: body,\n startTimestamp,\n endTimestamp,\n };\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data,\n type: 'http',\n },\n hint,\n );\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _fetchBreadcrumb(handlerData) {\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n const data = handlerData.fetchData;\n const hint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data,\n level: 'error',\n type: 'http',\n },\n hint,\n );\n } else {\n const data = {\n ...handlerData.fetchData,\n status_code: handlerData.response && handlerData.response.status,\n };\n const hint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp,\n endTimestamp,\n };\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data,\n type: 'http',\n },\n hint,\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _historyBreadcrumb(handlerData) {\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n\nfunction _isEvent(event) {\n return !!event && !!(event ).target;\n}\n\nexport { BREADCRUMB_INTEGRATION_ID, Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { dsnToString, createEnvelope } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nfunction createUserFeedbackEnvelope(\n feedback,\n {\n metadata,\n tunnel,\n dsn,\n }\n\n,\n) {\n const headers = {\n event_id: feedback.event_id,\n sent_at: new Date().toISOString(),\n ...(metadata &&\n metadata.sdk && {\n sdk: {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n },\n }),\n ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n };\n const item = createUserFeedbackEnvelopeItem(feedback);\n\n return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback) {\n const feedbackHeaders = {\n type: 'user_report',\n };\n return [feedbackHeaders, feedback];\n}\n\nexport { createUserFeedbackEnvelope };\n//# sourceMappingURL=userfeedback.js.map\n","import { BaseClient, SDK_VERSION } from '@sentry/core';\nimport { getSDKSource, logger, createClientReportEnvelope, dsnToString } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs.js';\nimport { createUserFeedbackEnvelope } from './userfeedback.js';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: `${sdkSource}:@sentry/browser`,\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint) {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) ;\n // We check for definedness of `addSentryBreadcrumb` in case users provided their own integration with id\n // \"Breadcrumbs\" that does not have this function.\n if (breadcrumbIntegration && breadcrumbIntegration.addSentryBreadcrumb) {\n breadcrumbIntegration.addSentryBreadcrumb(event);\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * Sends user feedback to Sentry.\n */\n captureUserFeedback(feedback) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture user feedback.');\n return;\n }\n\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this.getSdkMetadata(),\n dsn: this.getDsn(),\n tunnel: this.getOptions().tunnel,\n });\n void this._sendEnvelope(envelope);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n void this._sendEnvelope(envelope);\n }\n}\n\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n const clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","import { isNativeFetch, logger } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\nlet cachedFetchImpl = undefined;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nfunction getNativeFetchImplementation() {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(WINDOW.fetch)) {\n return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n }\n\n const document = WINDOW.document;\n let fetchImpl = WINDOW.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nfunction clearCachedFetchImplementation() {\n cachedFetchImpl = undefined;\n}\n\nexport { clearCachedFetchImplementation, getNativeFetchImplementation };\n//# sourceMappingURL=utils.js.map\n","import { createTransport } from '@sentry/core';\nimport { rejectedSyncPromise } from '@sentry/utils';\nimport { getNativeFetchImplementation, clearCachedFetchImplementation } from './utils.js';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n options,\n nativeFetch = getNativeFetchImplementation(),\n) {\n let pendingBodySize = 0;\n let pendingCount = 0;\n\n function makeRequest(request) {\n const requestSize = request.body.length;\n pendingBodySize += requestSize;\n pendingCount++;\n\n const requestOptions = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n // If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n // We will therefore only activate the flag when we're below that limit.\n // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n keepalive: pendingBodySize <= 60000 && pendingCount < 15,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => {\n pendingBodySize -= requestSize;\n pendingCount--;\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n });\n } catch (e) {\n clearCachedFetchImplementation();\n pendingBodySize -= requestSize;\n pendingCount--;\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeFetchTransport };\n//# sourceMappingURL=fetch.js.map\n","import { createTransport } from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nfunction makeXHRTransport(options) {\n function makeRequest(request) {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeXHRTransport };\n//# sourceMappingURL=xhr.js.map\n","import { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename, func, lineno, colno) {\n const frame = {\n filename,\n function: func,\n in_app: true, // All browser frames are considered in_app\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nconst chromeStackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nconst geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nconst winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10 = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nconst opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11 = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nconst opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nconst defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nconst defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func, filename) => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n//# sourceMappingURL=stack-parsers.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, isString, isPrimitive, isErrorEvent, getLocationHref, logger, addExceptionMechanism } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** Global handlers */\nclass GlobalHandlers {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'GlobalHandlers';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = GlobalHandlers.id;}\n\n /** JSDoc */\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n __init2() {this._installFunc = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };}\n\n /** JSDoc */\n constructor(options) {GlobalHandlers.prototype.__init.call(this);GlobalHandlers.prototype.__init2.call(this);\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n setupOnce() {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key ];\n if (installFunc && options[key ]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key ] = undefined;\n }\n }\n }\n} GlobalHandlers.__initStatic();\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg, url, line, column) {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event, url, line, column) {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub, error, event, type) {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions() {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map\n","import { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\nimport { WINDOW, wrap } from '../helpers.js';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nclass TryCatch {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'TryCatch';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = TryCatch.id;}\n\n /** JSDoc */\n\n /**\n * @inheritDoc\n */\n constructor(options) {TryCatch.prototype.__init.call(this);\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n setupOnce() {\n if (this._options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n} TryCatch.__initStatic();\n\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( ...args) {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( callback) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( ...args) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original) {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW ;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original)\n\n {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n eventName,\n fn,\n options,\n ) {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn , {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n eventName,\n fn,\n options,\n ) {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn ;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map\n","import { isInstanceOf } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nfunction applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation,\n parser,\n maxValueLimit = 250,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = truncateAggregateExceptions(\n aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException ,\n key,\n event.exception.values,\n originalException,\n 0,\n ),\n maxValueLimit,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error,\n key,\n prevExceptions,\n exception,\n exceptionId,\n) {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, error[key]);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key],\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (Array.isArray(error.errors)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, childError);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception, exceptionId) {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n is_exception_group: true,\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception,\n source,\n exceptionId,\n parentId,\n) {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions, maxValueLength) {\n return exceptions.map(exception => {\n if (exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n return exception;\n });\n}\n\nexport { applyAggregateErrorsToEvent };\n//# sourceMappingURL=aggregate-errors.js.map\n","import { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nclass LinkedErrors {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'LinkedErrors';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = LinkedErrors.id;}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {LinkedErrors.prototype.__init.call(this);\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n addGlobalEventProcessor((event, hint) => {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const self = hub.getIntegration(LinkedErrors);\n\n if (!client || !self) {\n return event;\n }\n\n const options = client.getOptions();\n applyAggregateErrorsToEvent(\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n self._key,\n self._limit,\n event,\n hint,\n );\n\n return event;\n });\n }\n} LinkedErrors.__initStatic();\n\nexport { LinkedErrors };\n//# sourceMappingURL=linkederrors.js.map\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\n\n/** HttpContext integration collects information about HTTP request headers */\nclass HttpContext {constructor() { HttpContext.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'HttpContext';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = HttpContext.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n addGlobalEventProcessor((event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...event.request, ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n} HttpContext.__initStatic();\n\nexport { HttpContext };\n//# sourceMappingURL=httpcontext.js.map\n","import { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nclass Dedupe {constructor() { Dedupe.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Dedupe';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Dedupe.id;}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n const eventProcessor = currentEvent => {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n} Dedupe.__initStatic();\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames ;\n previousFrames = previousFrames ;\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint ;\n previousFingerprint = previousFingerprint ;\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n\nexport { Dedupe };\n//# sourceMappingURL=dedupe.js.map\n","import { Integrations, getIntegrationsToSetup, initAndBind, getReportDialogEndpoint, getCurrentHub } from '@sentry/core';\nimport { stackParserFromStackParserOptions, supportsFetch, logger, resolvedSyncPromise, addInstrumentationHandler } from '@sentry/utils';\nimport { BrowserClient } from './client.js';\nimport { WINDOW, wrap as wrap$1 } from './helpers.js';\nimport { GlobalHandlers } from './integrations/globalhandlers.js';\nimport { TryCatch } from './integrations/trycatch.js';\nimport { Breadcrumbs } from './integrations/breadcrumbs.js';\nimport { LinkedErrors } from './integrations/linkederrors.js';\nimport { HttpContext } from './integrations/httpcontext.js';\nimport { Dedupe } from './integrations/dedupe.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { makeXHRTransport } from './transports/xhr.js';\n\nconst defaultIntegrations = [\n new Integrations.InboundFilters(),\n new Integrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nfunction init(options = {}) {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n if (typeof __SENTRY_RELEASE__ === 'string') {\n options.release = __SENTRY_RELEASE__;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n options.release = WINDOW.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nfunction showReportDialog(options = {}, hub = getCurrentHub()) {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.crossOrigin = 'anonymous';\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nfunction lastEventId() {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nfunction flush(timeout) {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nfunction close(timeout) {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction wrap(fn) {\n return wrap$1(fn)();\n}\n\nfunction startSessionOnHub(hub) {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n if (typeof WINDOW.document === 'undefined') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n */\nfunction captureUserFeedback(feedback) {\n const client = getCurrentHub().getClient();\n if (client) {\n client.captureUserFeedback(feedback);\n }\n}\n\nexport { captureUserFeedback, close, defaultIntegrations, flush, forceLoad, init, lastEventId, onLoad, showReportDialog, wrap };\n//# sourceMappingURL=sdk.js.map\n","import { getCurrentHub, addGlobalEventProcessor, prepareEvent, setContext, captureException } from '@sentry/core';\nimport { GLOBAL_OBJ, normalize, fill, htmlTreeAsString, logger, uuid4, SENTRY_XHR_DATA_KEY, dropUndefinedKeys, stringMatchesSomePattern, addInstrumentationHandler, browserPerformanceTimeOrigin, createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader, isNodeEnv } from '@sentry/utils';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and replay packages should `@sentry/browser` import\n// from `@sentry/replay` in the future\nconst WINDOW = GLOBAL_OBJ ;\n\nconst REPLAY_SESSION_KEY = 'sentryReplaySession';\nconst REPLAY_EVENT_NAME = 'replay_event';\nconst UNABLE_TO_SEND_REPLAY = 'Unable to send Replay';\n\n// The idle limit for a session after which recording is paused.\nconst SESSION_IDLE_PAUSE_DURATION = 300000; // 5 minutes in ms\n\n// The idle limit for a session after which the session expires.\nconst SESSION_IDLE_EXPIRE_DURATION = 900000; // 15 minutes in ms\n\n// The maximum length of a session\nconst MAX_SESSION_LIFE = 3600000; // 60 minutes in ms\n\n/** Default flush delays */\nconst DEFAULT_FLUSH_MIN_DELAY = 5000;\n// XXX: Temp fix for our debounce logic where `maxWait` would never occur if it\n// was the same as `wait`\nconst DEFAULT_FLUSH_MAX_DELAY = 5500;\n\n/* How long to wait for error checkouts */\nconst BUFFER_CHECKOUT_TIME = 60000;\n\nconst RETRY_BASE_INTERVAL = 5000;\nconst RETRY_MAX_COUNT = 3;\n\n/* The max (uncompressed) size in bytes of a network body. Any body larger than this will be truncated. */\nconst NETWORK_BODY_MAX_SIZE = 150000;\n\n/* The max size of a single console arg that is captured. Any arg larger than this will be truncated. */\nconst CONSOLE_ARG_MAX_SIZE = 5000;\n\n/* Min. time to wait before we consider something a slow click. */\nconst SLOW_CLICK_THRESHOLD = 3000;\n/* For scroll actions after a click, we only look for a very short time period to detect programmatic scrolling. */\nconst SLOW_CLICK_SCROLL_TIMEOUT = 300;\n\n/** When encountering a total segment size exceeding this size, stop the replay (as we cannot properly ingest it). */\nconst REPLAY_MAX_EVENT_BUFFER_SIZE = 20000000; // ~20MB\n\n/** Replays must be min. 5s long before we send them. */\nconst MIN_REPLAY_DURATION = 4999;\n/* The max. allowed value that the minReplayDuration can be set to. */\nconst MIN_REPLAY_DURATION_LIMIT = 15000;\n\nvar NodeType$1;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType$1 || (NodeType$1 = {}));\n\nfunction isElement(n) {\n return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n const host = n === null || n === void 0 ? void 0 : n.host;\n return Boolean(host && host.shadowRoot && host.shadowRoot === n);\n}\nfunction isInputTypeMasked({ maskInputOptions, tagName, type, }) {\n if (tagName.toLowerCase() === 'option') {\n tagName = 'select';\n }\n const actualType = typeof type === 'string' ? type.toLowerCase() : undefined;\n return (maskInputOptions[tagName.toLowerCase()] ||\n (actualType && maskInputOptions[actualType]) ||\n actualType === 'password' ||\n (tagName === 'input' && !type && maskInputOptions['text']));\n}\nfunction hasInputMaskOptions({ tagName, type, maskInputOptions, maskInputSelector, }) {\n return (maskInputSelector || isInputTypeMasked({ maskInputOptions, tagName, type }));\n}\nfunction maskInputValue({ input, maskInputSelector, unmaskInputSelector, maskInputOptions, tagName, type, value, maskInputFn, }) {\n let text = value || '';\n if (unmaskInputSelector && input.matches(unmaskInputSelector)) {\n return text;\n }\n if (input.hasAttribute('data-rr-is-password')) {\n type = 'password';\n }\n if (isInputTypeMasked({ maskInputOptions, tagName, type }) ||\n (maskInputSelector && input.matches(maskInputSelector))) {\n if (maskInputFn) {\n text = maskInputFn(text);\n }\n else {\n text = '*'.repeat(text.length);\n }\n }\n return text;\n}\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext('2d');\n if (!ctx)\n return true;\n const chunkSize = 50;\n for (let x = 0; x < canvas.width; x += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n : getImageData;\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some((pixel) => pixel !== 0))\n return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute('data-rr-is-password')\n ? 'password'\n : type\n ? type.toLowerCase()\n : null;\n}\nfunction getInputValue(el, tagName, type) {\n typeof type === 'string' ? type.toLowerCase() : '';\n if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\n return el.getAttribute('value') || '';\n }\n return el.value;\n}\n\nlet _id = 1;\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\nconst IGNORED_NODE = -2;\nfunction defaultMaskFn(str) {\n return str ? str.replace(/[\\S]/g, '*') : '';\n}\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName(element) {\n if (element instanceof HTMLFormElement) {\n return 'form';\n }\n const processedTagName = element.tagName.toLowerCase().trim();\n if (tagNameRegex.test(processedTagName)) {\n return 'div';\n }\n return processedTagName;\n}\nfunction getCssRulesString(s) {\n try {\n const rules = s.rules || s.cssRules;\n return rules ? Array.from(rules).map(getCssRuleString).join('') : null;\n }\n catch (error) {\n return null;\n }\n}\nfunction getCssRuleString(rule) {\n let cssStringified = rule.cssText;\n if (isCSSImportRule(rule)) {\n try {\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\n }\n catch (_a) {\n }\n }\n return validateStringifiedCssRule(cssStringified);\n}\nfunction validateStringifiedCssRule(cssStringified) {\n if (cssStringified.indexOf(':') > -1) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, '$1\\\\$2');\n }\n return cssStringified;\n}\nfunction isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n}\nfunction stringifyStyleSheet(sheet) {\n return sheet.cssRules\n ? Array.from(sheet.cssRules)\n .map((rule) => rule.cssText ? validateStringifiedCssRule(rule.cssText) : '')\n .join('')\n : '';\n}\nfunction extractOrigin(url) {\n let origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n }\n else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n}\nlet canvasService;\nlet canvasCtx;\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absoluteToStylesheet(cssText, href) {\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || '';\n if (!filePath) {\n return origin;\n }\n if (!RELATIVE_PATH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === '/') {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split('/');\n const parts = filePath.split('/');\n stack.pop();\n for (const part of parts) {\n if (part === '.') {\n continue;\n }\n else if (part === '..') {\n stack.pop();\n }\n else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\n });\n}\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === '') {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars;\n let match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\n }\n return '';\n }\n let output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === ',') {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n }\n else {\n let descriptorsStr = '';\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n let c = attributeValue.charAt(pos);\n if (c === '') {\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (!inParens) {\n if (c === ',') {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (c === '(') {\n inParens = true;\n }\n }\n else {\n if (c === ')') {\n inParens = false;\n }\n }\n descriptorsStr += c;\n pos += 1;\n }\n }\n }\n return output.join(', ');\n}\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === '') {\n return attributeValue;\n }\n const a = doc.createElement('a');\n a.href = attributeValue;\n return a.href;\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\n}\nfunction getHref() {\n const a = document.createElement('a');\n a.href = '';\n return a.href;\n}\nfunction transformAttribute(doc, element, _tagName, _name, value, maskAllText, unmaskTextSelector, maskTextFn) {\n if (!value) {\n return value;\n }\n const name = _name.toLowerCase();\n const tagName = _tagName.toLowerCase();\n if (name === 'src' || name === 'href') {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'xlink:href' && value[0] !== '#') {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'background' &&\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'srcset') {\n return getAbsoluteSrcsetString(doc, value);\n }\n else if (name === 'style') {\n return absoluteToStylesheet(value, getHref());\n }\n else if (tagName === 'object' && name === 'data') {\n return absoluteToDoc(doc, value);\n }\n else if (maskAllText &&\n _shouldMaskAttribute(element, name, tagName, unmaskTextSelector)) {\n return maskTextFn ? maskTextFn(value) : defaultMaskFn(value);\n }\n return value;\n}\nfunction _shouldMaskAttribute(element, attribute, tagName, unmaskTextSelector) {\n if (unmaskTextSelector && element.matches(unmaskTextSelector)) {\n return false;\n }\n return (['placeholder', 'title', 'aria-label'].indexOf(attribute) > -1 ||\n (tagName === 'input' &&\n attribute === 'value' &&\n element.hasAttribute('type') &&\n ['submit', 'button'].indexOf(element.getAttribute('type').toLowerCase()) > -1));\n}\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\n if (unblockSelector && element.matches(unblockSelector)) {\n return false;\n }\n if (typeof blockClass === 'string') {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n }\n else {\n for (let eIndex = 0; eIndex < element.classList.length; eIndex++) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n return false;\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextSelector, maskAllText) {\n if (!node) {\n return false;\n }\n if (node.nodeType !== node.ELEMENT_NODE) {\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector, unmaskTextSelector, maskAllText);\n }\n if (unmaskTextSelector) {\n if (node.matches(unmaskTextSelector) ||\n node.closest(unmaskTextSelector)) {\n return false;\n }\n }\n if (maskAllText) {\n return true;\n }\n if (typeof maskTextClass === 'string') {\n if (node.classList.contains(maskTextClass)) {\n return true;\n }\n }\n else {\n for (let eIndex = 0; eIndex < node.classList.length; eIndex++) {\n const className = node.classList[eIndex];\n if (maskTextClass.test(className)) {\n return true;\n }\n }\n }\n if (maskTextSelector) {\n if (node.matches(maskTextSelector)) {\n return true;\n }\n }\n return needMaskingText(node.parentNode, maskTextClass, maskTextSelector, unmaskTextSelector, maskAllText);\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n }\n catch (error) {\n return;\n }\n if (readyState !== 'complete') {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener('load', () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = 'about:blank';\n if (win.location.href !== blankUrl ||\n iframeEl.src === blankUrl ||\n iframeEl.src === '') {\n setTimeout(listener, 0);\n return;\n }\n iframeEl.addEventListener('load', listener);\n}\nfunction serializeNode(n, options) {\n var _a;\n const { doc, blockClass, blockSelector, unblockSelector, maskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputSelector, unmaskInputSelector, maskAllText, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, } = options;\n let rootId;\n if (doc.__sn) {\n const docId = doc.__sn.id;\n rootId = docId === 1 ? undefined : docId;\n }\n switch (n.nodeType) {\n case n.DOCUMENT_NODE:\n if (n.compatMode !== 'CSS1Compat') {\n return {\n type: NodeType$1.Document,\n childNodes: [],\n compatMode: n.compatMode,\n rootId,\n };\n }\n else {\n return {\n type: NodeType$1.Document,\n childNodes: [],\n rootId,\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$1.DocumentType,\n name: n.name,\n publicId: n.publicId,\n systemId: n.systemId,\n rootId,\n };\n case n.ELEMENT_NODE:\n const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\n const tagName = getValidTagName(n);\n let attributes = {};\n for (const { name, value } of Array.from(n.attributes)) {\n if (!skipAttribute(tagName, name)) {\n attributes[name] = transformAttribute(doc, n, tagName, name, value, maskAllText, unmaskTextSelector, maskTextFn);\n }\n }\n if (tagName === 'link' && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\n return s.href === n.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = getCssRulesString(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n }\n }\n if (tagName === 'style' &&\n n.sheet &&\n !(n.innerText ||\n n.textContent ||\n '').trim().length) {\n const cssText = getCssRulesString(n.sheet);\n if (cssText) {\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\n }\n }\n if (tagName === 'input' ||\n tagName === 'textarea' ||\n tagName === 'select' ||\n tagName === 'option') {\n const el = n;\n const type = getInputType(el);\n const value = getInputValue(el, tagName.toUpperCase(), type);\n const checked = n.checked;\n if (type !== 'submit' &&\n type !== 'button' &&\n value) {\n attributes.value = maskInputValue({\n input: el,\n type,\n tagName,\n value,\n maskInputSelector,\n unmaskInputSelector,\n maskInputOptions,\n maskInputFn,\n });\n }\n if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === 'option') {\n if (n.selected && !maskInputOptions['select']) {\n attributes.selected = true;\n }\n else {\n delete attributes.selected;\n }\n }\n if (tagName === 'canvas' && recordCanvas) {\n if (n.__context === '2d') {\n if (!is2DCanvasBlank(n)) {\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n }\n else if (!('__context' in n)) {\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n const blankCanvas = document.createElement('canvas');\n blankCanvas.width = n.width;\n blankCanvas.height = n.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === 'img' && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement('canvas');\n canvasCtx = canvasService.getContext('2d');\n }\n const image = n;\n const oldValue = image.crossOrigin;\n image.crossOrigin = 'anonymous';\n const recordInlineImage = () => {\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n catch (err) {\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\n }\n oldValue\n ? (attributes.crossOrigin = oldValue)\n : delete attributes.crossOrigin;\n };\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else\n image.onload = recordInlineImage;\n }\n if (tagName === 'audio' || tagName === 'video') {\n attributes.rr_mediaState = n.paused\n ? 'paused'\n : 'played';\n attributes.rr_mediaCurrentTime = n.currentTime;\n }\n if (n.scrollLeft) {\n attributes.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes.rr_scrollTop = n.scrollTop;\n }\n if (needBlock) {\n const { width, height } = n.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`,\n };\n }\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\n if (!n.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n return {\n type: NodeType$1.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n) || undefined,\n needBlock,\n rootId,\n };\n case n.TEXT_NODE:\n const parentTagName = n.parentNode && n.parentNode.tagName;\n let textContent = n.textContent;\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\n if (isStyle && textContent) {\n try {\n if (n.nextSibling || n.previousSibling) {\n }\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\n textContent = stringifyStyleSheet(n.parentNode.sheet);\n }\n }\n catch (err) {\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\n }\n textContent = absoluteToStylesheet(textContent, getHref());\n }\n if (isScript) {\n textContent = 'SCRIPT_PLACEHOLDER';\n }\n if (parentTagName === 'TEXTAREA' && textContent) {\n textContent = '';\n }\n else if (parentTagName === 'OPTION' && textContent) {\n const option = n.parentNode;\n textContent = maskInputValue({\n input: option,\n type: null,\n tagName: parentTagName,\n value: textContent,\n maskInputSelector,\n unmaskInputSelector,\n maskInputOptions,\n maskInputFn,\n });\n }\n else if (!isStyle &&\n !isScript &&\n needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextSelector, maskAllText) &&\n textContent) {\n textContent = maskTextFn\n ? maskTextFn(textContent)\n : defaultMaskFn(textContent);\n }\n return {\n type: NodeType$1.Text,\n textContent: textContent || '',\n isStyle,\n rootId,\n };\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType$1.CDATA,\n textContent: '',\n rootId,\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType$1.Comment,\n textContent: n.textContent || '',\n rootId,\n };\n default:\n return false;\n }\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === undefined || maybeAttr === null) {\n return '';\n }\n else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$1.Comment) {\n return true;\n }\n else if (sn.type === NodeType$1.Element) {\n if (slimDOMOptions.script &&\n (sn.tagName === 'script' ||\n (sn.tagName === 'link' &&\n (sn.attributes.rel === 'preload' ||\n sn.attributes.rel === 'modulepreload') &&\n sn.attributes.as === 'script') ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'prefetch' &&\n typeof sn.attributes.href === 'string' &&\n sn.attributes.href.endsWith('.js')))) {\n return true;\n }\n else if (slimDOMOptions.headFavicon &&\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n (sn.tagName === 'meta' &&\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\n lowerIfExists(sn.attributes.name) === 'application-name' ||\n lowerIfExists(sn.attributes.rel) === 'icon' ||\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\n return true;\n }\n else if (sn.tagName === 'meta') {\n if (slimDOMOptions.headMetaDescKeywords &&\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n }\n else if (slimDOMOptions.headMetaSocial &&\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\n return true;\n }\n else if (slimDOMOptions.headMetaRobots &&\n (lowerIfExists(sn.attributes.name) === 'robots' ||\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\n return true;\n }\n else if (slimDOMOptions.headMetaHttpEquiv &&\n sn.attributes['http-equiv'] !== undefined) {\n return true;\n }\n else if (slimDOMOptions.headMetaAuthorship &&\n (lowerIfExists(sn.attributes.name) === 'author' ||\n lowerIfExists(sn.attributes.name) === 'generator' ||\n lowerIfExists(sn.attributes.name) === 'framework' ||\n lowerIfExists(sn.attributes.name) === 'publisher' ||\n lowerIfExists(sn.attributes.name) === 'progid' ||\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n }\n else if (slimDOMOptions.headMetaVerification &&\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n lowerIfExists(sn.attributes.name) === 'verification' ||\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n, options) {\n const { doc, map, blockClass, blockSelector, unblockSelector, maskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputSelector, unmaskInputSelector, maskAllText, maskInputOptions = {}, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, keepIframeSrcFn = () => false, } = options;\n let { preserveWhiteSpace = true } = options;\n const _serializedNode = serializeNode(n, {\n doc,\n blockClass,\n blockSelector,\n unblockSelector,\n maskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n inlineStylesheet,\n maskInputSelector,\n unmaskInputSelector,\n maskAllText,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n });\n if (!_serializedNode) {\n console.warn(n, 'not serialized');\n return null;\n }\n let id;\n if ('__sn' in n) {\n id = n.__sn.id;\n }\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n (!preserveWhiteSpace &&\n _serializedNode.type === NodeType$1.Text &&\n !_serializedNode.isStyle &&\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\n id = IGNORED_NODE;\n }\n else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n n.__sn = serializedNode;\n if (id === IGNORED_NODE) {\n return null;\n }\n map[id] = n;\n if (onSerialize) {\n onSerialize(n);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$1.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n if (n.shadowRoot)\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$1.Document ||\n serializedNode.type === NodeType$1.Element) &&\n recordChild) {\n if (slimDOMOptions.headWhitespace &&\n _serializedNode.type === NodeType$1.Element &&\n _serializedNode.tagName === 'head') {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n map,\n blockClass,\n blockSelector,\n unblockSelector,\n maskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputSelector,\n unmaskInputSelector,\n maskAllText,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n keepIframeSrcFn,\n };\n for (const childN of Array.from(n.childNodes)) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n if (isElement(n) && n.shadowRoot) {\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedChildNode.isShadow = true;\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n if (n.parentNode && isShadowRoot(n.parentNode)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$1.Element &&\n serializedNode.tagName === 'iframe') {\n onceIframeLoaded(n, () => {\n const iframeDoc = n.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n map,\n blockClass,\n blockSelector,\n unblockSelector,\n maskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputSelector,\n unmaskInputSelector,\n maskAllText,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n keepIframeSrcFn,\n });\n if (serializedIframeNode) {\n onIframeLoad(n, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n, options) {\n const { blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskInputSelector = null, unmaskInputSelector = null, maskAllText = false, maskAllInputs = false, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\n const idNodeMap = {};\n const maskInputOptions = maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n }\n : maskAllInputs === false\n ? {}\n : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\n ?\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === 'all',\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true,\n }\n : slimDOM === false\n ? {}\n : slimDOM;\n return [\n serializeNodeWithId(n, {\n doc: n,\n map: idNodeMap,\n blockClass,\n blockSelector,\n unblockSelector,\n maskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputSelector,\n unmaskInputSelector,\n maskAllText,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n keepIframeSrcFn,\n }),\n idNodeMap,\n ];\n}\nfunction skipAttribute(tagName, attributeName, value) {\n return ((tagName === 'video' || tagName === 'audio') && attributeName === 'autoplay');\n}\n\nvar EventType;\n(function (EventType) {\n EventType[EventType[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType[EventType[\"Load\"] = 1] = \"Load\";\n EventType[EventType[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType[EventType[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType[EventType[\"Meta\"] = 4] = \"Meta\";\n EventType[EventType[\"Custom\"] = 5] = \"Custom\";\n EventType[EventType[\"Plugin\"] = 6] = \"Plugin\";\n})(EventType || (EventType = {}));\nvar IncrementalSource;\n(function (IncrementalSource) {\n IncrementalSource[IncrementalSource[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource[IncrementalSource[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource[IncrementalSource[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource[IncrementalSource[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource[IncrementalSource[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource[IncrementalSource[\"Input\"] = 5] = \"Input\";\n IncrementalSource[IncrementalSource[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource[IncrementalSource[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource[IncrementalSource[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource[IncrementalSource[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource[IncrementalSource[\"Font\"] = 10] = \"Font\";\n IncrementalSource[IncrementalSource[\"Log\"] = 11] = \"Log\";\n IncrementalSource[IncrementalSource[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource[IncrementalSource[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n})(IncrementalSource || (IncrementalSource = {}));\nvar MouseInteractions;\n(function (MouseInteractions) {\n MouseInteractions[MouseInteractions[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions[MouseInteractions[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions[MouseInteractions[\"Click\"] = 2] = \"Click\";\n MouseInteractions[MouseInteractions[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions[MouseInteractions[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions[MouseInteractions[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions[MouseInteractions[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions[MouseInteractions[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions[MouseInteractions[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions[MouseInteractions[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions[MouseInteractions[\"TouchCancel\"] = 10] = \"TouchCancel\";\n})(MouseInteractions || (MouseInteractions = {}));\nvar CanvasContext;\n(function (CanvasContext) {\n CanvasContext[CanvasContext[\"2D\"] = 0] = \"2D\";\n CanvasContext[CanvasContext[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext[CanvasContext[\"WebGL2\"] = 2] = \"WebGL2\";\n})(CanvasContext || (CanvasContext = {}));\nvar MediaInteractions;\n(function (MediaInteractions) {\n MediaInteractions[MediaInteractions[\"Play\"] = 0] = \"Play\";\n MediaInteractions[MediaInteractions[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions[MediaInteractions[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions[MediaInteractions[\"VolumeChange\"] = 3] = \"VolumeChange\";\n})(MediaInteractions || (MediaInteractions = {}));\nvar ReplayerEvents;\n(function (ReplayerEvents) {\n ReplayerEvents[\"Start\"] = \"start\";\n ReplayerEvents[\"Pause\"] = \"pause\";\n ReplayerEvents[\"Resume\"] = \"resume\";\n ReplayerEvents[\"Resize\"] = \"resize\";\n ReplayerEvents[\"Finish\"] = \"finish\";\n ReplayerEvents[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents[\"EventCast\"] = \"event-cast\";\n ReplayerEvents[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents[\"Flush\"] = \"flush\";\n ReplayerEvents[\"StateChange\"] = \"state-change\";\n ReplayerEvents[\"PlayBack\"] = \"play-back\";\n})(ReplayerEvents || (ReplayerEvents = {}));\n\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nfunction createMirror() {\n return {\n map: {},\n getId(n) {\n if (!n || !n.__sn) {\n return -1;\n }\n return n.__sn.id;\n },\n getNode(id) {\n return this.map[id] || null;\n },\n removeNodeFromMap(n) {\n const id = n.__sn && n.__sn.id;\n delete this.map[id];\n if (n.childNodes) {\n n.childNodes.forEach((child) => this.removeNodeFromMap(child));\n }\n },\n has(id) {\n return this.map.hasOwnProperty(id);\n },\n reset() {\n this.map = {};\n },\n };\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n '\\r\\n' +\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n '\\r\\n' +\n 'or you can use record.mirror to access the mirror instance during recording.';\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === 'map') {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\nfunction throttle$1(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function (arg) {\n let now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n let remaining = wait - (now - previous);\n let context = this;\n let args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked\n ? d\n : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n },\n });\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => { };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original,\n },\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n }\n catch (_a) {\n return () => { };\n }\n}\nfunction getWindowHeight() {\n return (window.innerHeight ||\n (document.documentElement && document.documentElement.clientHeight) ||\n (document.body && document.body.clientHeight));\n}\nfunction getWindowWidth() {\n return (window.innerWidth ||\n (document.documentElement && document.documentElement.clientWidth) ||\n (document.body && document.body.clientWidth));\n}\nfunction isBlocked(node, blockClass, blockSelector, unblockSelector) {\n if (!node) {\n return false;\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n let needBlock = false;\n const needUnblock = unblockSelector && node.matches(unblockSelector);\n if (typeof blockClass === 'string') {\n if (node.closest !== undefined) {\n needBlock =\n !needUnblock &&\n node.closest('.' + blockClass) !== null;\n }\n else {\n needBlock =\n !needUnblock && node.classList.contains(blockClass);\n }\n }\n else {\n !needUnblock &&\n node.classList.forEach((className) => {\n if (blockClass.test(className)) {\n needBlock = true;\n }\n });\n }\n if (!needBlock && blockSelector) {\n needBlock = node.matches(blockSelector);\n }\n return ((!needUnblock && needBlock) ||\n isBlocked(node.parentNode, blockClass, blockSelector, unblockSelector));\n }\n if (node.nodeType === node.TEXT_NODE) {\n return isBlocked(node.parentNode, blockClass, blockSelector, unblockSelector);\n }\n return isBlocked(node.parentNode, blockClass, blockSelector, unblockSelector);\n}\nfunction isIgnored(n) {\n if ('__sn' in n) {\n return n.__sn.id === IGNORED_NODE;\n }\n return false;\n}\nfunction isAncestorRemoved(target, mirror) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror.getId(target);\n if (!mirror.has(id)) {\n return true;\n }\n if (target.parentNode &&\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!target.parentNode) {\n return true;\n }\n return isAncestorRemoved(target.parentNode, mirror);\n}\nfunction isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill(win = window) {\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype\n .forEach;\n }\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype\n .forEach;\n }\n if (!Node.prototype.contains) {\n Node.prototype.contains = function contains(node) {\n if (!(0 in arguments)) {\n throw new TypeError('1 argument is required');\n }\n do {\n if (this === node) {\n return true;\n }\n } while ((node = node && node.parentNode));\n return false;\n };\n }\n}\nfunction isIframeINode(node) {\n if ('__sn' in node) {\n return (node.__sn.type === NodeType$1.Element && node.__sn.tagName === 'iframe');\n }\n return false;\n}\nfunction hasShadowRoot(n) {\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\n}\n\nfunction isNodeInLinkedList(n) {\n return '__ln' in n;\n}\nclass DoubleLinkedList {\n constructor() {\n this.length = 0;\n this.head = null;\n }\n get(position) {\n if (position >= this.length) {\n throw new Error('Position outside of list range');\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n) {\n const node = {\n value: n,\n previous: null,\n next: null,\n };\n n.__ln = node;\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n const current = n.previousSibling.__ln.next;\n node.next = current;\n node.previous = n.previousSibling.__ln;\n n.previousSibling.__ln.next = node;\n if (current) {\n current.previous = node;\n }\n }\n else if (n.nextSibling &&\n isNodeInLinkedList(n.nextSibling) &&\n n.nextSibling.__ln.previous) {\n const current = n.nextSibling.__ln.previous;\n node.previous = current;\n node.next = n.nextSibling.__ln;\n n.nextSibling.__ln.previous = node;\n if (current) {\n current.next = node;\n }\n }\n else {\n if (this.head) {\n this.head.previous = node;\n }\n node.next = this.head;\n this.head = node;\n }\n this.length++;\n }\n removeNode(n) {\n const current = n.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n }\n }\n else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n }\n }\n if (n.__ln) {\n delete n.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nfunction isINode(n) {\n return '__sn' in n;\n}\nclass MutationBuffer {\n constructor() {\n this.frozen = false;\n this.locked = false;\n this.texts = [];\n this.attributes = [];\n this.removes = [];\n this.mapRemoves = [];\n this.movedMap = {};\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.processMutations = (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n };\n this.emit = () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addList = new DoubleLinkedList();\n const getNextId = (n) => {\n let ns = n;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n) => {\n var _a, _b, _c, _d, _e;\n const shadowHost = n.getRootNode\n ? (_a = n.getRootNode()) === null || _a === void 0 ? void 0 : _a.host\n : null;\n let rootShadowHost = shadowHost;\n while ((_c = (_b = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _b === void 0 ? void 0 : _b.call(rootShadowHost)) === null || _c === void 0 ? void 0 : _c.host)\n rootShadowHost =\n ((_e = (_d = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _d === void 0 ? void 0 : _d.call(rootShadowHost)) === null || _e === void 0 ? void 0 : _e.host) ||\n null;\n const notInDoc = !this.doc.contains(n) &&\n (!rootShadowHost || !this.doc.contains(rootShadowHost));\n if (!n.parentNode || notInDoc) {\n return;\n }\n const parentId = isShadowRoot(n.parentNode)\n ? this.mirror.getId(shadowHost)\n : this.mirror.getId(n.parentNode);\n const nextId = getNextId(n);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n);\n }\n let sn = serializeNodeWithId(n, {\n doc: this.doc,\n map: this.mirror.map,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n unblockSelector: this.unblockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n unmaskTextSelector: this.unmaskTextSelector,\n maskInputSelector: this.maskInputSelector,\n unmaskInputSelector: this.unmaskInputSelector,\n skipChild: true,\n inlineStylesheet: this.inlineStylesheet,\n maskAllText: this.maskAllText,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isIframeINode(currentN)) {\n this.iframeManager.addIframe(currentN);\n }\n if (hasShadowRoot(n)) {\n this.shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn,\n });\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n of this.movedSet) {\n if (isParentRemoved(this.removes, n, this.mirror) &&\n !this.movedSet.has(n.parentNode)) {\n continue;\n }\n pushAdd(n);\n }\n for (const n of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n) &&\n !isParentRemoved(this.removes, n, this.mirror)) {\n pushAdd(n);\n }\n else if (isAncestorInSet(this.movedSet, n)) {\n pushAdd(n);\n }\n else {\n this.droppedSet.add(n);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node = null;\n if (candidate) {\n const parentId = this.mirror.getId(candidate.value.parentNode);\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node = candidate;\n }\n }\n if (!node) {\n for (let index = addList.length - 1; index >= 0; index--) {\n const _node = addList.get(index);\n if (_node) {\n const parentId = this.mirror.getId(_node.value.parentNode);\n const nextId = getNextId(_node.value);\n if (parentId !== -1 && nextId !== -1) {\n node = _node;\n break;\n }\n }\n }\n }\n if (!node) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node.previous;\n addList.removeNode(node.value);\n pushAdd(node.value);\n }\n const payload = {\n texts: this.texts\n .map((text) => ({\n id: this.mirror.getId(text.node),\n value: text.value,\n }))\n .filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes\n .map((attribute) => ({\n id: this.mirror.getId(attribute.node),\n attributes: attribute.attributes,\n }))\n .filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds,\n };\n if (!payload.texts.length &&\n !payload.attributes.length &&\n !payload.removes.length &&\n !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.removes = [];\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n };\n this.processMutation = (m) => {\n if (isIgnored(m.target)) {\n return;\n }\n switch (m.type) {\n case 'characterData': {\n const value = m.target.textContent;\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextSelector, this.maskAllText) && value\n ? this.maskTextFn\n ? this.maskTextFn(value)\n : value.replace(/[\\S]/g, '*')\n : value,\n node: m.target,\n });\n }\n break;\n }\n case 'attributes': {\n const target = m.target;\n let value = target.getAttribute(m.attributeName);\n if (m.attributeName === 'value') {\n value = maskInputValue({\n input: target,\n maskInputSelector: this.maskInputSelector,\n unmaskInputSelector: this.unmaskInputSelector,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type: target.getAttribute('type'),\n value,\n maskInputFn: this.maskInputFn,\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector) || value === m.oldValue) {\n return;\n }\n let item = this.attributes.find((a) => a.node === m.target);\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n };\n this.attributes.push(item);\n }\n if (m.attributeName === 'type' &&\n target.tagName === 'INPUT' &&\n (m.oldValue || '').toLowerCase() === 'password') {\n target.setAttribute('data-rr-is-password', 'true');\n }\n if (m.attributeName === 'style') {\n const old = this.doc.createElement('span');\n if (m.oldValue) {\n old.setAttribute('style', m.oldValue);\n }\n if (item.attributes.style === undefined ||\n item.attributes.style === null) {\n item.attributes.style = {};\n }\n try {\n const styleObj = item.attributes.style;\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) ||\n newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === '') {\n styleObj[pname] = newValue;\n }\n else {\n styleObj[pname] = [newValue, newPriority];\n }\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === '') {\n styleObj[pname] = false;\n }\n }\n }\n catch (error) {\n console.warn('[rrweb] Error when parsing update to style attribute:', error);\n }\n }\n else {\n const element = m.target;\n item.attributes[m.attributeName] = transformAttribute(this.doc, element, element.tagName, m.attributeName, value, this.maskAllText, this.unmaskTextSelector, this.maskTextFn);\n }\n break;\n }\n case 'childList': {\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\n m.removedNodes.forEach((n) => {\n const nodeId = this.mirror.getId(n);\n const parentId = isShadowRoot(m.target)\n ? this.mirror.getId(m.target.host)\n : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector) || isIgnored(n)) {\n return;\n }\n if (this.addedSet.has(n)) {\n deepDelete(this.addedSet, n);\n this.droppedSet.add(n);\n }\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n) &&\n this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n);\n }\n else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) ? true : undefined,\n });\n }\n this.mapRemoves.push(n);\n });\n break;\n }\n }\n };\n this.genAdds = (n, target) => {\n if (target && isBlocked(target, this.blockClass, this.blockSelector, this.unblockSelector)) {\n return;\n }\n if (isINode(n)) {\n if (isIgnored(n)) {\n return;\n }\n this.movedSet.add(n);\n let targetId = null;\n if (target && isINode(target)) {\n targetId = target.__sn.id;\n }\n if (targetId) {\n this.movedMap[moveKey(n.__sn.id, targetId)] = true;\n }\n }\n else {\n this.addedSet.add(n);\n this.droppedSet.delete(n);\n }\n if (!isBlocked(n, this.blockClass, this.blockSelector, this.unblockSelector))\n n.childNodes.forEach((childN) => this.genAdds(childN));\n };\n }\n init(options) {\n [\n 'mutationCb',\n 'blockClass',\n 'blockSelector',\n 'unblockSelector',\n 'maskTextClass',\n 'maskTextSelector',\n 'unmaskTextSelector',\n 'maskInputSelector',\n 'unmaskInputSelector',\n 'inlineStylesheet',\n 'maskAllText',\n 'maskInputOptions',\n 'maskTextFn',\n 'maskInputFn',\n 'recordCanvas',\n 'inlineImages',\n 'slimDOMOptions',\n 'doc',\n 'mirror',\n 'iframeManager',\n 'shadowDomManager',\n 'canvasManager',\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n) {\n addsSet.delete(n);\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction isParentRemoved(removes, n, mirror) {\n const { parentNode } = n;\n if (!parentNode) {\n return false;\n }\n const parentId = mirror.getId(parentNode);\n if (removes.some((r) => r.id === parentId)) {\n return true;\n }\n return isParentRemoved(removes, parentNode, mirror);\n}\nfunction isAncestorInSet(set, n) {\n const { parentNode } = n;\n if (!parentNode) {\n return false;\n }\n if (set.has(parentNode)) {\n return true;\n }\n return isAncestorInSet(set, parentNode);\n}\n\nconst callbackWrapper = (cb) => {\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n }\n catch (error) {\n try {\n error.__rrweb__ = true;\n }\n catch (_a) {\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\n\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if ('composedPath' in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n }\n else if ('path' in event && event.path.length) {\n return event.path[0];\n }\n }\n catch (_a) { }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n var _a, _b;\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n let mutationObserverCtor = window.MutationObserver ||\n window.__rrMutationObserver;\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\n if (angularZoneSymbol &&\n window[angularZoneSymbol]) {\n mutationObserverCtor = window[angularZoneSymbol];\n }\n const observer = new mutationObserverCtor(callbackWrapper((mutations) => {\n if (options.onMutation && options.onMutation(mutations) === false) {\n return;\n }\n mutationBuffer.processMutations(mutations);\n }));\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n });\n return observer;\n}\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\n if (sampling.mousemove === false) {\n return () => { };\n }\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\n ? sampling.mousemoveCallback\n : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle$1((source) => {\n const totalOffset = Date.now() - timeBaseline;\n callbackWrapper(mousemoveCb)(positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }), source);\n positions = [];\n timeBaseline = null;\n }, callbackThreshold);\n const updatePosition = throttle$1((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = isTouchEvent(evt)\n ? evt.changedTouches[0]\n : evt;\n if (!timeBaseline) {\n timeBaseline = Date.now();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror.getId(target),\n timeOffset: Date.now() - timeBaseline,\n });\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\n ? IncrementalSource.Drag\n : evt instanceof MouseEvent\n ? IncrementalSource.MouseMove\n : IncrementalSource.TouchMove);\n }, threshold, {\n trailing: false,\n });\n const handlers = [\n on('mousemove', callbackWrapper(updatePosition), doc),\n on('touchmove', callbackWrapper(updatePosition), doc),\n on('drag', callbackWrapper(updatePosition), doc),\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\n if (sampling.mouseInteraction === false) {\n return () => { };\n }\n const disableMap = sampling.mouseInteraction === true ||\n sampling.mouseInteraction === undefined\n ? {}\n : sampling.mouseInteraction;\n const handlers = [];\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, unblockSelector)) {\n return;\n }\n const e = isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e) {\n return;\n }\n const id = mirror.getId(target);\n const { clientX, clientY } = e;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[eventKey],\n id,\n x: clientX,\n y: clientY,\n });\n };\n };\n Object.keys(MouseInteractions)\n .filter((key) => Number.isNaN(Number(key)) &&\n !key.endsWith('_Departed') &&\n disableMap[key] !== false)\n .forEach((eventKey) => {\n const eventName = eventKey.toLowerCase();\n const handler = callbackWrapper(getHandler(eventKey));\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\n const updatePosition = throttle$1((evt) => {\n const target = getEventTarget(evt);\n if (!target ||\n isBlocked(target, blockClass, blockSelector, unblockSelector)) {\n return;\n }\n const id = mirror.getId(target);\n if (target === doc) {\n const scrollEl = (doc.scrollingElement || doc.documentElement);\n callbackWrapper(scrollCb)({\n id,\n x: scrollEl.scrollLeft,\n y: scrollEl.scrollTop,\n });\n }\n else {\n callbackWrapper(scrollCb)({\n id,\n x: target.scrollLeft,\n y: target.scrollTop,\n });\n }\n }, sampling.scroll || 100);\n return on('scroll', callbackWrapper(updatePosition), doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = throttle$1(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n callbackWrapper(viewportResizeCb)({\n width: Number(width),\n height: Number(height),\n });\n lastH = height;\n lastW = width;\n }\n }, 200);\n return on('resize', callbackWrapper(updateDimension), window);\n}\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\n const value = Object.assign({}, v);\n if (!enable)\n delete value.userTriggered;\n return value;\n}\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\nconst lastInputValueMap = new WeakMap();\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, unblockSelector, ignoreClass, ignoreSelector, maskInputSelector, unmaskInputSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const tagName = target && target.tagName;\n const userTriggered = event.isTrusted;\n if (tagName === 'OPTION')\n target = target.parentElement;\n if (!target ||\n !tagName ||\n INPUT_TAGS.indexOf(tagName) < 0 ||\n isBlocked(target, blockClass, blockSelector, unblockSelector)) {\n return;\n }\n const el = target;\n const type = getInputType(el);\n if (el.classList.contains(ignoreClass) ||\n (ignoreSelector && el.matches(ignoreSelector))) {\n return;\n }\n let text = getInputValue(el, tagName, type);\n let isChecked = false;\n if (type === 'radio' || type === 'checkbox') {\n isChecked = target.checked;\n }\n if (hasInputMaskOptions({\n maskInputOptions,\n maskInputSelector,\n tagName,\n type,\n })) {\n text = maskInputValue({\n input: el,\n maskInputOptions,\n maskInputSelector,\n unmaskInputSelector,\n tagName,\n type,\n value: text,\n maskInputFn,\n });\n }\n cbWithDedup(target, callbackWrapper(wrapEventWithUserTriggeredFlag)({ text, isChecked, userTriggered }, userTriggeredOnInput));\n const name = target.name;\n if (type === 'radio' && name && isChecked) {\n doc\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\n .forEach((el) => {\n if (el !== target) {\n const text = maskInputValue({\n input: el,\n maskInputOptions,\n maskInputSelector,\n unmaskInputSelector,\n tagName,\n type,\n value: getInputValue(el, tagName, type),\n maskInputFn,\n });\n cbWithDedup(el, callbackWrapper(wrapEventWithUserTriggeredFlag)({\n text,\n isChecked: !isChecked,\n userTriggered: false,\n }, userTriggeredOnInput));\n }\n });\n }\n }\n function cbWithDedup(target, v) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue ||\n lastInputValue.text !== v.text ||\n lastInputValue.isChecked !== v.isChecked) {\n lastInputValueMap.set(target, v);\n const id = mirror.getId(target);\n inputCb(Object.assign(Object.assign({}, v), { id }));\n }\n }\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\n const propertyDescriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');\n const hookProperties = [\n [HTMLInputElement.prototype, 'value'],\n [HTMLInputElement.prototype, 'checked'],\n [HTMLSelectElement.prototype, 'value'],\n [HTMLTextAreaElement.prototype, 'value'],\n [HTMLSelectElement.prototype, 'selectedIndex'],\n [HTMLOptionElement.prototype, 'selected'],\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\n set() {\n callbackWrapper(eventHandler)({ target: this });\n },\n })));\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule) {\n const positions = [];\n function recurse(childRule, pos) {\n if ((hasNestedCSSRule('CSSGroupingRule') &&\n childRule.parentRule instanceof CSSGroupingRule) ||\n (hasNestedCSSRule('CSSMediaRule') &&\n childRule.parentRule instanceof CSSMediaRule) ||\n (hasNestedCSSRule('CSSSupportsRule') &&\n childRule.parentRule instanceof CSSSupportsRule) ||\n (hasNestedCSSRule('CSSConditionRule') &&\n childRule.parentRule instanceof CSSConditionRule)) {\n const rules = Array.from(childRule.parentRule.cssRules);\n const index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n else {\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\n const index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n return pos;\n }\n return recurse(rule, positions);\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => { };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [rule, index] = argumentsList;\n const id = mirror.getId(thisArg.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id,\n adds: [{ rule, index }],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [index] = argumentsList;\n const id = mirror.getId(thisArg.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id,\n removes: [{ index }],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n }\n else {\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n insertRule: type.prototype.insertRule,\n deleteRule: type.prototype.deleteRule,\n };\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [rule, index] = argumentsList;\n const id = mirror.getId(thisArg.parentStyleSheet.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id,\n adds: [\n {\n rule,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index || 0,\n ],\n },\n ],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [index] = argumentsList;\n const id = mirror.getId(thisArg.parentStyleSheet.ownerNode);\n if (id !== -1) {\n styleSheetRuleCb({\n id,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index] },\n ],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror }, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n var _a, _b;\n const [property, value, priority] = argumentsList;\n const id = mirror.getId((_b = (_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n if (id !== -1) {\n styleDeclarationCb({\n id,\n set: {\n property,\n value,\n priority,\n },\n index: getNestedCSSRulePositions(thisArg.parentRule),\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n var _a, _b;\n const [property] = argumentsList;\n const id = mirror.getId((_b = (_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n if (id !== -1) {\n styleDeclarationCb({\n id,\n remove: {\n property,\n },\n index: getNestedCSSRulePositions(thisArg.parentRule),\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, unblockSelector, mirror, sampling, }) {\n const handler = (type) => throttle$1(callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target ||\n isBlocked(target, blockClass, blockSelector, unblockSelector)) {\n return;\n }\n const { currentTime, volume, muted } = target;\n mediaInteractionCb({\n type,\n id: mirror.getId(target),\n currentTime,\n volume,\n muted,\n });\n }), sampling.media || 500);\n const handlers = [\n on('play', handler(0)),\n on('pause', handler(1)),\n on('seeked', handler(2)),\n on('volumechange', handler(3)),\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => { };\n }\n const handlers = [];\n const fontMap = new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== 'string',\n descriptors,\n fontSource: typeof source === 'string'\n ? source\n :\n JSON.stringify(Array.from(new Uint8Array(source))),\n });\n return fontFace;\n };\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\n return function (fontFace) {\n setTimeout(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }, 0);\n return original.apply(this, [fontFace]);\n };\n });\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction mergeHooks(o, hooks) {\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, } = o;\n o.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n}\nfunction initObservers(o, hooks = {}) {\n const currentWindow = o.doc.defaultView;\n if (!currentWindow) {\n return () => { };\n }\n mergeHooks(o, hooks);\n const mutationObserver = initMutationObserver(o, o.doc);\n const mousemoveHandler = initMoveObserver(o);\n const mouseInteractionHandler = initMouseInteractionObserver(o);\n const scrollHandler = initScrollObserver(o);\n const viewportResizeHandler = initViewportResizeObserver(o);\n const inputHandler = initInputObserver(o);\n const mediaInteractionHandler = initMediaInteractionObserver(o);\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\n win: currentWindow,\n });\n const fontObserver = o.collectFonts ? initFontObserver(o) : () => { };\n const pluginHandlers = [];\n for (const plugin of o.plugins) {\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n try {\n styleSheetObserver();\n styleDeclarationObserver();\n }\n catch (e) {\n }\n fontObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== 'undefined';\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(typeof window[prop] !== 'undefined' &&\n window[prop].prototype &&\n 'insertRule' in window[prop].prototype &&\n 'deleteRule' in window[prop].prototype);\n}\n\nclass IframeManager {\n constructor(options) {\n this.iframes = new WeakMap();\n this.mutationCb = options.mutationCb;\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a;\n this.mutationCb({\n adds: [\n {\n parentId: iframeEl.__sn.id,\n nextId: null,\n node: childSn,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n });\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\n }\n}\n\nclass ShadowDomManager {\n constructor(options) {\n this.restorePatches = [];\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n const manager = this;\n this.restorePatches.push(patch(HTMLElement.prototype, 'attachShadow', function (original) {\n return function () {\n const shadowRoot = original.apply(this, arguments);\n if (this.shadowRoot)\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\n return shadowRoot;\n };\n }));\n }\n addShadowRoot(shadowRoot, doc) {\n initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\n initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\n }\n observeAttachShadow(iframeElement) {\n if (iframeElement.contentWindow) {\n const manager = this;\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\n return function () {\n const shadowRoot = original.apply(this, arguments);\n if (this.shadowRoot)\n manager.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\n return shadowRoot;\n };\n }));\n }\n }\n reset() {\n this.restorePatches.forEach((restorePatch) => restorePatch());\n }\n}\n\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\nfunction __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\nfunction initCanvas2DMutationObserver(cb, win, blockClass, unblockSelector, blockSelector, mirror) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\n continue;\n }\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\n return function (...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, unblockSelector)) {\n setTimeout(() => {\n const recordArgs = [...args];\n if (prop === 'drawImage') {\n if (recordArgs[0] &&\n recordArgs[0] instanceof HTMLCanvasElement) {\n const canvas = recordArgs[0];\n const ctx = canvas.getContext('2d');\n let imgd = ctx === null || ctx === void 0 ? void 0 : ctx.getImageData(0, 0, canvas.width, canvas.height);\n let pix = imgd === null || imgd === void 0 ? void 0 : imgd.data;\n recordArgs[0] = JSON.stringify(pix);\n }\n }\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: recordArgs,\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_a) {\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set(v) {\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector) {\n const handlers = [];\n try {\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\n return function (contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, unblockSelector)) {\n if (!('__context' in this))\n this.__context = contextType;\n }\n return original.apply(this, [contextType, ...args]);\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_a) {\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n\n/*\n * base64-arraybuffer 1.0.2 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\n\nconst webGLVarMap = new Map();\nfunction variableListFor(ctx, ctor) {\n let contextMap = webGLVarMap.get(ctx);\n if (!contextMap) {\n contextMap = new Map();\n webGLVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value ||\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\n return;\n const name = value.constructor.name;\n const list = variableListFor(ctx, name);\n let index = list.indexOf(value);\n if (index === -1) {\n index = list.length;\n list.push(value);\n }\n return index;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n }\n else if (value === null) {\n return value;\n }\n else if (value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Uint8Array ||\n value instanceof Uint16Array ||\n value instanceof Int16Array ||\n value instanceof Int8Array ||\n value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)],\n };\n }\n else if (value instanceof ArrayBuffer) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64,\n };\n }\n else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength,\n ],\n };\n }\n else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src,\n };\n }\n else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\n };\n }\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n const name = value.constructor.name;\n const index = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index,\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return [...args].map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n 'WebGLActiveInfo',\n 'WebGLBuffer',\n 'WebGLFramebuffer',\n 'WebGLProgram',\n 'WebGLRenderbuffer',\n 'WebGLShader',\n 'WebGLShaderPrecisionFormat',\n 'WebGLTexture',\n 'WebGLUniformLocation',\n 'WebGLVertexArrayObject',\n 'WebGLVertexArrayObjectOES',\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\n};\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, unblockSelector, blockSelector, mirror, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n try {\n if (typeof prototype[prop] !== 'function') {\n continue;\n }\n const restoreHandler = patch(prototype, prop, function (original) {\n return function (...args) {\n const result = original.apply(this, args);\n saveWebGLVar(result, win, prototype);\n if (!isBlocked(this.canvas, blockClass, blockSelector, unblockSelector)) {\n const id = mirror.getId(this.canvas);\n const recordArgs = serializeArgs([...args], win, prototype);\n const mutation = {\n type,\n property: prop,\n args: recordArgs,\n };\n cb(this.canvas, mutation);\n }\n return result;\n };\n });\n handlers.push(restoreHandler);\n }\n catch (_a) {\n const hookHandler = hookSetter(prototype, prop, {\n set(v) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, unblockSelector, mirror) {\n const handlers = [];\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, unblockSelector, mirror, win));\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, unblockSelector, mirror, win));\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n\nclass CanvasManager {\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n constructor(options) {\n this.pendingCanvasMutations = new Map();\n this.rafStamps = { latestId: 0, invokeId: null };\n this.frozen = false;\n this.locked = false;\n this.processMutation = function (target, mutation) {\n const newFrame = this.rafStamps.invokeId &&\n this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n };\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (options.recordCanvas === true)\n this.initCanvasMutationObserver(options.win, options.blockClass, options.blockSelector, options.unblockSelector);\n }\n initCanvasMutationObserver(win, blockClass, unblockSelector, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector);\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector, this.mirror);\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector, this.mirror);\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach((values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n });\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1)\n return;\n const values = valuesWithType.map((value) => {\n const rest = __rest(value, [\"type\"]);\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\n\nfunction wrapEvent(e) {\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\n}\nlet wrappedEmit;\nlet takeFullSnapshot;\nconst mirror = createMirror();\nfunction record(options = {}) {\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, unblockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, maskInputSelector = null, unmaskTextSelector = null, unmaskInputSelector = null, inlineStylesheet = true, maskAllText = false, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, mousemoveWait, recordCanvas = false, userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, onMutation, } = options;\n if (!emit) {\n throw new Error('emit function is required');\n }\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n sampling.mousemove = mousemoveWait;\n }\n const maskInputOptions = maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n radio: true,\n checkbox: true,\n }\n : _maskInputOptions !== undefined\n ? _maskInputOptions\n : {};\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\n ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n headMetaAuthorship: _slimDOMOptions === 'all',\n headMetaDescKeywords: _slimDOMOptions === 'all',\n }\n : _slimDOMOptions\n ? _slimDOMOptions\n : {};\n polyfill();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e) => {\n for (const plugin of plugins || []) {\n if (plugin.eventProcessor) {\n e = plugin.eventProcessor(e);\n }\n }\n if (packFn) {\n e = packFn(e);\n }\n return e;\n };\n wrappedEmit = (e, isCheckout) => {\n var _a;\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\n e.type !== EventType.FullSnapshot &&\n !(e.type === EventType.IncrementalSnapshot &&\n e.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n emit(eventProcessor(e), isCheckout);\n if (e.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e;\n incrementalSnapshotCount = 0;\n }\n else if (e.type === EventType.IncrementalSnapshot) {\n if (e.data.source === IncrementalSource.Mutation &&\n e.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms &&\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\n }));\n };\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\n }));\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\n }));\n const iframeManager = new IframeManager({\n mutationCb: wrappedMutationEmit,\n });\n const canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n unblockSelector,\n mirror,\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n onMutation,\n blockClass,\n blockSelector,\n unblockSelector,\n maskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n maskInputSelector,\n unmaskInputSelector,\n inlineStylesheet,\n maskAllText,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n canvasManager,\n },\n mirror,\n });\n takeFullSnapshot = (isCheckout = false) => {\n var _a, _b, _c, _d;\n wrappedEmit(wrapEvent({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight(),\n },\n }), isCheckout);\n mutationBuffers.forEach((buf) => buf.lock());\n const [node, idNodeMap] = snapshot(document, {\n blockClass,\n blockSelector,\n unblockSelector,\n maskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n maskInputSelector,\n unmaskInputSelector,\n inlineStylesheet,\n maskAllText,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n slimDOM: slimDOMOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n) => {\n if (isIframeINode(n)) {\n iframeManager.addIframe(n);\n }\n if (hasShadowRoot(n)) {\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n keepIframeSrcFn,\n });\n if (!node) {\n return console.warn('Failed to snapshot the document');\n }\n mirror.map = idNodeMap;\n wrappedEmit(wrapEvent({\n type: EventType.FullSnapshot,\n data: {\n node,\n initialOffset: {\n left: window.pageXOffset !== undefined\n ? window.pageXOffset\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\n (document === null || document === void 0 ? void 0 : document.body.scrollLeft) ||\n 0,\n top: window.pageYOffset !== undefined\n ? window.pageYOffset\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\n ((_d = (_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.parentElement) === null || _d === void 0 ? void 0 : _d.scrollTop) ||\n (document === null || document === void 0 ? void 0 : document.body.scrollTop) ||\n 0,\n },\n },\n }));\n mutationBuffers.forEach((buf) => buf.unlock());\n };\n try {\n const handlers = [];\n handlers.push(on('DOMContentLoaded', () => {\n wrappedEmit(wrapEvent({\n type: EventType.DomContentLoaded,\n data: {},\n }));\n }));\n const observe = (doc) => {\n var _a;\n return callbackWrapper(initObservers)({\n onMutation,\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions,\n },\n })),\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\n })),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\n })),\n inputCb: (v) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: Object.assign({ source: IncrementalSource.Input }, v),\n })),\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\n })),\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\n })),\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\n })),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: Object.assign({ source: IncrementalSource.Font }, p),\n })),\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n maskInputSelector,\n unmaskInputSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskAllText,\n maskInputFn,\n maskTextFn,\n blockSelector,\n unblockSelector,\n slimDOMOptions,\n mirror,\n iframeManager,\n shadowDomManager,\n canvasManager,\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit(wrapEvent({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload,\n },\n })),\n }))) || [],\n }, hooks);\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n }\n catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot();\n handlers.push(observe(document));\n };\n if (document.readyState === 'interactive' ||\n document.readyState === 'complete') {\n init();\n }\n else {\n handlers.push(on('load', () => {\n wrappedEmit(wrapEvent({\n type: EventType.Load,\n data: {},\n }));\n init();\n }, window));\n }\n return () => {\n handlers.forEach((h) => h());\n };\n }\n catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!wrappedEmit) {\n throw new Error('please add custom event after start recording');\n }\n wrappedEmit(wrapEvent({\n type: EventType.Custom,\n data: {\n tag,\n payload,\n },\n }));\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!takeFullSnapshot) {\n throw new Error('please take full snapshot after start recording');\n }\n takeFullSnapshot(isCheckout);\n};\nrecord.mirror = mirror;\n\n/**\n * Converts a timestamp to ms, if it was in s, or keeps it as ms.\n */\nfunction timestampToMs(timestamp) {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp : timestamp * 1000;\n}\n\n/**\n * Converts a timestamp to s, if it was in ms, or keeps it as s.\n */\nfunction timestampToS(timestamp) {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Add a breadcrumb event to replay.\n */\nfunction addBreadcrumbEvent(replay, breadcrumb) {\n if (breadcrumb.category === 'sentry.transaction') {\n return;\n }\n\n if (['ui.click', 'ui.input'].includes(breadcrumb.category )) {\n replay.triggerUserActivity();\n } else {\n replay.checkAndHandleExpiredSession();\n }\n\n replay.addUpdate(() => {\n void replay.throttledAddEvent({\n type: EventType.Custom,\n // TODO: We were converting from ms to seconds for breadcrumbs, spans,\n // but maybe we should just keep them as milliseconds\n timestamp: (breadcrumb.timestamp || 0) * 1000,\n data: {\n tag: 'breadcrumb',\n // normalize to max. 10 depth and 1_000 properties per object\n payload: normalize(breadcrumb, 10, 1000),\n },\n });\n\n // Do not flush after console log messages\n return breadcrumb.category === 'console';\n });\n}\n\nconst INTERACTIVE_SELECTOR = 'button,a';\n\n/**\n * For clicks, we check if the target is inside of a button or link\n * If so, we use this as the target instead\n * This is useful because if you click on the image in ,\n * The target will be the image, not the button, which we don't want here\n */\nfunction getClickTargetNode(event) {\n const target = getTargetNode(event);\n\n if (!target || !(target instanceof Element)) {\n return target;\n }\n\n const closestInteractive = target.closest(INTERACTIVE_SELECTOR);\n return closestInteractive || target;\n}\n\n/** Get the event target node. */\nfunction getTargetNode(event) {\n if (isEventWithTarget(event)) {\n return event.target ;\n }\n\n return event;\n}\n\nfunction isEventWithTarget(event) {\n return typeof event === 'object' && !!event && 'target' in event;\n}\n\nlet handlers;\n\n/**\n * Register a handler to be called when `window.open()` is called.\n * Returns a cleanup function.\n */\nfunction onWindowOpen(cb) {\n // Ensure to only register this once\n if (!handlers) {\n handlers = [];\n monkeyPatchWindowOpen();\n }\n\n handlers.push(cb);\n\n return () => {\n const pos = handlers ? handlers.indexOf(cb) : -1;\n if (pos > -1) {\n (handlers ).splice(pos, 1);\n }\n };\n}\n\nfunction monkeyPatchWindowOpen() {\n fill(WINDOW, 'open', function (originalWindowOpen) {\n return function (...args) {\n if (handlers) {\n try {\n handlers.forEach(handler => handler());\n } catch (e) {\n // ignore errors in here\n }\n }\n\n return originalWindowOpen.apply(WINDOW, args);\n };\n });\n}\n\n/** Handle a click. */\nfunction handleClick(clickDetector, clickBreadcrumb, node) {\n clickDetector.handleClick(clickBreadcrumb, node);\n}\n\n/** A click detector class that can be used to detect slow or rage clicks on elements. */\nclass ClickDetector {\n // protected for testing\n __init() {this._lastMutation = 0;}\n __init2() {this._lastScroll = 0;}\n\n __init3() {this._clicks = [];}\n\n constructor(\n replay,\n slowClickConfig,\n // Just for easier testing\n _addBreadcrumbEvent = addBreadcrumbEvent,\n ) {ClickDetector.prototype.__init.call(this);ClickDetector.prototype.__init2.call(this);ClickDetector.prototype.__init3.call(this);\n // We want everything in s, but options are in ms\n this._timeout = slowClickConfig.timeout / 1000;\n this._threshold = slowClickConfig.threshold / 1000;\n this._scollTimeout = slowClickConfig.scrollTimeout / 1000;\n this._replay = replay;\n this._ignoreSelector = slowClickConfig.ignoreSelector;\n this._addBreadcrumbEvent = _addBreadcrumbEvent;\n }\n\n /** Register click detection handlers on mutation or scroll. */\n addListeners() {\n const mutationHandler = () => {\n this._lastMutation = nowInSeconds();\n };\n\n const scrollHandler = () => {\n this._lastScroll = nowInSeconds();\n };\n\n const cleanupWindowOpen = onWindowOpen(() => {\n // Treat window.open as mutation\n this._lastMutation = nowInSeconds();\n });\n\n const clickHandler = (event) => {\n if (!event.target) {\n return;\n }\n\n const node = getClickTargetNode(event);\n if (node) {\n this._handleMultiClick(node );\n }\n };\n\n const obs = new MutationObserver(mutationHandler);\n\n obs.observe(WINDOW.document.documentElement, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n\n WINDOW.addEventListener('scroll', scrollHandler, { passive: true });\n WINDOW.addEventListener('click', clickHandler, { passive: true });\n\n this._teardown = () => {\n WINDOW.removeEventListener('scroll', scrollHandler);\n WINDOW.removeEventListener('click', clickHandler);\n cleanupWindowOpen();\n\n obs.disconnect();\n this._clicks = [];\n this._lastMutation = 0;\n this._lastScroll = 0;\n };\n }\n\n /** Clean up listeners. */\n removeListeners() {\n if (this._teardown) {\n this._teardown();\n }\n\n if (this._checkClickTimeout) {\n clearTimeout(this._checkClickTimeout);\n }\n }\n\n /** Handle a click */\n handleClick(breadcrumb, node) {\n if (ignoreElement(node, this._ignoreSelector) || !isClickBreadcrumb(breadcrumb)) {\n return;\n }\n\n const newClick = {\n timestamp: timestampToS(breadcrumb.timestamp),\n clickBreadcrumb: breadcrumb,\n // Set this to 0 so we know it originates from the click breadcrumb\n clickCount: 0,\n node,\n };\n this._clicks.push(newClick);\n\n // If this is the first new click, set a timeout to check for multi clicks\n if (this._clicks.length === 1) {\n this._scheduleCheckClicks();\n }\n }\n\n /** Count multiple clicks on elements. */\n _handleMultiClick(node) {\n this._getClicks(node).forEach(click => {\n click.clickCount++;\n });\n }\n\n /** Get all pending clicks for a given node. */\n _getClicks(node) {\n return this._clicks.filter(click => click.node === node);\n }\n\n /** Check the clicks that happened. */\n _checkClicks() {\n const timedOutClicks = [];\n\n const now = nowInSeconds();\n\n this._clicks.forEach(click => {\n if (!click.mutationAfter && this._lastMutation) {\n click.mutationAfter = click.timestamp <= this._lastMutation ? this._lastMutation - click.timestamp : undefined;\n }\n if (!click.scrollAfter && this._lastScroll) {\n click.scrollAfter = click.timestamp <= this._lastScroll ? this._lastScroll - click.timestamp : undefined;\n }\n\n // All of these are in seconds!\n if (click.timestamp + this._timeout <= now) {\n timedOutClicks.push(click);\n }\n });\n\n // Remove \"old\" clicks\n for (const click of timedOutClicks) {\n const pos = this._clicks.indexOf(click);\n\n if (pos > -1) {\n this._generateBreadcrumbs(click);\n this._clicks.splice(pos, 1);\n }\n }\n\n // Trigger new check, unless no clicks left\n if (this._clicks.length) {\n this._scheduleCheckClicks();\n }\n }\n\n /** Generate matching breadcrumb(s) for the click. */\n _generateBreadcrumbs(click) {\n const replay = this._replay;\n const hadScroll = click.scrollAfter && click.scrollAfter <= this._scollTimeout;\n const hadMutation = click.mutationAfter && click.mutationAfter <= this._threshold;\n\n const isSlowClick = !hadScroll && !hadMutation;\n const { clickCount, clickBreadcrumb } = click;\n\n // Slow click\n if (isSlowClick) {\n // If `mutationAfter` is set, it means a mutation happened after the threshold, but before the timeout\n // If not, it means we just timed out without scroll & mutation\n const timeAfterClickMs = Math.min(click.mutationAfter || this._timeout, this._timeout) * 1000;\n const endReason = timeAfterClickMs < this._timeout * 1000 ? 'mutation' : 'timeout';\n\n const breadcrumb = {\n type: 'default',\n message: clickBreadcrumb.message,\n timestamp: clickBreadcrumb.timestamp,\n category: 'ui.slowClickDetected',\n data: {\n ...clickBreadcrumb.data,\n url: WINDOW.location.href,\n route: replay.getCurrentRoute(),\n timeAfterClickMs,\n endReason,\n // If clickCount === 0, it means multiClick was not correctly captured here\n // - we still want to send 1 in this case\n clickCount: clickCount || 1,\n },\n };\n\n this._addBreadcrumbEvent(replay, breadcrumb);\n return;\n }\n\n // Multi click\n if (clickCount > 1) {\n const breadcrumb = {\n type: 'default',\n message: clickBreadcrumb.message,\n timestamp: clickBreadcrumb.timestamp,\n category: 'ui.multiClick',\n data: {\n ...clickBreadcrumb.data,\n url: WINDOW.location.href,\n route: replay.getCurrentRoute(),\n clickCount,\n metric: true,\n },\n };\n\n this._addBreadcrumbEvent(replay, breadcrumb);\n }\n }\n\n /** Schedule to check current clicks. */\n _scheduleCheckClicks() {\n if (this._checkClickTimeout) {\n clearTimeout(this._checkClickTimeout);\n }\n\n this._checkClickTimeout = setTimeout(() => this._checkClicks(), 1000);\n }\n}\n\nconst SLOW_CLICK_TAGS = ['A', 'BUTTON', 'INPUT'];\n\n/** exported for tests only */\nfunction ignoreElement(node, ignoreSelector) {\n if (!SLOW_CLICK_TAGS.includes(node.tagName)) {\n return true;\n }\n\n // If tag, we only want to consider input[type='submit'] & input[type='button']\n if (node.tagName === 'INPUT' && !['submit', 'button'].includes(node.getAttribute('type') || '')) {\n return true;\n }\n\n // If tag, detect special variants that may not lead to an action\n // If target !== _self, we may open the link somewhere else, which would lead to no action\n // Also, when downloading a file, we may not leave the page, but still not trigger an action\n if (\n node.tagName === 'A' &&\n (node.hasAttribute('download') || (node.hasAttribute('target') && node.getAttribute('target') !== '_self'))\n ) {\n return true;\n }\n\n if (ignoreSelector && node.matches(ignoreSelector)) {\n return true;\n }\n\n return false;\n}\n\nfunction isClickBreadcrumb(breadcrumb) {\n return !!(breadcrumb.data && typeof breadcrumb.data.nodeId === 'number' && breadcrumb.timestamp);\n}\n\n// This is good enough for us, and is easier to test/mock than `timestampInSeconds`\nfunction nowInSeconds() {\n return Date.now() / 1000;\n}\n\n/**\n * Create a breadcrumb for a replay.\n */\nfunction createBreadcrumb(\n breadcrumb,\n) {\n return {\n timestamp: Date.now() / 1000,\n type: 'default',\n ...breadcrumb,\n };\n}\n\nvar NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\n\n// Note that these are the serialized attributes and not attributes directly on\n// the DOM Node. Attributes we are interested in:\nconst ATTRIBUTES_TO_RECORD = new Set([\n 'id',\n 'class',\n 'aria-label',\n 'role',\n 'name',\n 'alt',\n 'title',\n 'data-test-id',\n 'data-testid',\n 'disabled',\n 'aria-disabled',\n]);\n\n/**\n * Inclusion list of attributes that we want to record from the DOM element\n */\nfunction getAttributesToRecord(attributes) {\n const obj = {};\n for (const key in attributes) {\n if (ATTRIBUTES_TO_RECORD.has(key)) {\n let normalizedKey = key;\n\n if (key === 'data-testid' || key === 'data-test-id') {\n normalizedKey = 'testId';\n }\n\n obj[normalizedKey] = attributes[key];\n }\n }\n\n return obj;\n}\n\nconst handleDomListener = (\n replay,\n) => {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleDom(handlerData);\n\n if (!result) {\n return;\n }\n\n const isClick = handlerData.name === 'click';\n const event = isClick && (handlerData.event );\n // Ignore clicks if ctrl/alt/meta/shift keys are held down as they alter behavior of clicks (e.g. open in new tab)\n if (\n isClick &&\n replay.clickDetector &&\n event &&\n !event.altKey &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.shiftKey\n ) {\n handleClick(\n replay.clickDetector,\n result ,\n getClickTargetNode(handlerData.event) ,\n );\n }\n\n addBreadcrumbEvent(replay, result);\n };\n};\n\n/** Get the base DOM breadcrumb. */\nfunction getBaseDomBreadcrumb(target, message) {\n // `__sn` property is the serialized node created by rrweb\n const serializedNode = target && isRrwebNode(target) && target.__sn.type === NodeType.Element ? target.__sn : null;\n\n return {\n message,\n data: serializedNode\n ? {\n nodeId: serializedNode.id,\n node: {\n id: serializedNode.id,\n tagName: serializedNode.tagName,\n textContent: target\n ? Array.from(target.childNodes)\n .map(\n (node) => '__sn' in node && node.__sn.type === NodeType.Text && node.__sn.textContent,\n )\n .filter(Boolean) // filter out empty values\n .map(text => (text ).trim())\n .join('')\n : '',\n attributes: getAttributesToRecord(serializedNode.attributes),\n },\n }\n : {},\n };\n}\n\n/**\n * An event handler to react to DOM events.\n * Exported for tests.\n */\nfunction handleDom(handlerData) {\n const { target, message } = getDomTarget(handlerData);\n\n return createBreadcrumb({\n category: `ui.${handlerData.name}`,\n ...getBaseDomBreadcrumb(target, message),\n });\n}\n\nfunction getDomTarget(handlerData) {\n const isClick = handlerData.name === 'click';\n\n let message;\n let target = null;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = isClick ? getClickTargetNode(handlerData.event) : getTargetNode(handlerData.event);\n message = htmlTreeAsString(target, { maxStringLength: 200 }) || '';\n } catch (e) {\n message = '';\n }\n\n return { target, message };\n}\n\nfunction isRrwebNode(node) {\n return '__sn' in node;\n}\n\n/** Handle keyboard events & create breadcrumbs. */\nfunction handleKeyboardEvent(replay, event) {\n if (!replay.isEnabled()) {\n return;\n }\n\n // Update user activity, but do not restart recording as it can create\n // noisy/low-value replays (e.g. user comes back from idle, hits alt-tab, new\n // session with a single \"keydown\" breadcrumb is created)\n replay.updateUserActivity();\n\n const breadcrumb = getKeyboardBreadcrumb(event);\n\n if (!breadcrumb) {\n return;\n }\n\n addBreadcrumbEvent(replay, breadcrumb);\n}\n\n/** exported only for tests */\nfunction getKeyboardBreadcrumb(event) {\n const { metaKey, shiftKey, ctrlKey, altKey, key, target } = event;\n\n // never capture for input fields\n if (!target || isInputElement(target ) || !key) {\n return null;\n }\n\n // Note: We do not consider shift here, as that means \"uppercase\"\n const hasModifierKey = metaKey || ctrlKey || altKey;\n const isCharacterKey = key.length === 1; // other keys like Escape, Tab, etc have a longer length\n\n // Do not capture breadcrumb if only a word key is pressed\n // This could leak e.g. user input\n if (!hasModifierKey && isCharacterKey) {\n return null;\n }\n\n const message = htmlTreeAsString(target, { maxStringLength: 200 }) || '';\n const baseBreadcrumb = getBaseDomBreadcrumb(target , message);\n\n return createBreadcrumb({\n category: 'ui.keyDown',\n message,\n data: {\n ...baseBreadcrumb.data,\n metaKey,\n shiftKey,\n ctrlKey,\n altKey,\n key,\n },\n });\n}\n\nfunction isInputElement(target) {\n return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable;\n}\n\nconst NAVIGATION_ENTRY_KEYS = [\n 'name',\n 'type',\n 'startTime',\n 'transferSize',\n 'duration',\n];\n\nfunction isNavigationEntryEqual(a) {\n return function (b) {\n return NAVIGATION_ENTRY_KEYS.every(key => a[key] === b[key]);\n };\n}\n\n/**\n * There are some difficulties diagnosing why there are duplicate navigation\n * entries. We've witnessed several intermittent results:\n * - duplicate entries have duration = 0\n * - duplicate entries are the same object reference\n * - none of the above\n *\n * Compare the values of several keys to determine if the entries are duplicates or not.\n */\n// TODO (high-prio): Figure out wth is returned here\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nfunction dedupePerformanceEntries(\n currentList,\n newList,\n) {\n // Partition `currentList` into 3 different lists based on entryType\n const [existingNavigationEntries, existingLcpEntries, existingEntries] = currentList.reduce(\n (acc, entry) => {\n if (entry.entryType === 'navigation') {\n acc[0].push(entry );\n } else if (entry.entryType === 'largest-contentful-paint') {\n acc[1].push(entry );\n } else {\n acc[2].push(entry);\n }\n return acc;\n },\n [[], [], []],\n );\n\n const newEntries = [];\n const newNavigationEntries = [];\n let newLcpEntry = existingLcpEntries.length\n ? existingLcpEntries[existingLcpEntries.length - 1] // Take the last element as list is sorted\n : undefined;\n\n newList.forEach(entry => {\n if (entry.entryType === 'largest-contentful-paint') {\n // We want the latest LCP event only\n if (!newLcpEntry || newLcpEntry.startTime < entry.startTime) {\n newLcpEntry = entry;\n }\n return;\n }\n\n if (entry.entryType === 'navigation') {\n const navigationEntry = entry ;\n\n // Check if the navigation entry is contained in currentList or newList\n if (\n // Ignore any navigation entries with duration 0, as they are likely duplicates\n entry.duration > 0 &&\n // Ensure new entry does not already exist in existing entries\n !existingNavigationEntries.find(isNavigationEntryEqual(navigationEntry)) &&\n // Ensure new entry does not already exist in new list of navigation entries\n !newNavigationEntries.find(isNavigationEntryEqual(navigationEntry))\n ) {\n newNavigationEntries.push(navigationEntry);\n }\n\n // Otherwise this navigation entry is considered a duplicate and is thrown away\n return;\n }\n\n newEntries.push(entry);\n });\n\n // Re-combine and sort by startTime\n return [\n ...(newLcpEntry ? [newLcpEntry] : []),\n ...existingNavigationEntries,\n ...existingEntries,\n ...newEntries,\n ...newNavigationEntries,\n ].sort((a, b) => a.startTime - b.startTime);\n}\n\n/**\n * Sets up a PerformanceObserver to listen to all performance entry types.\n */\nfunction setupPerformanceObserver(replay) {\n const performanceObserverHandler = (list) => {\n // For whatever reason the observer was returning duplicate navigation\n // entries (the other entry types were not duplicated).\n const newPerformanceEntries = dedupePerformanceEntries(\n replay.performanceEvents,\n list.getEntries() ,\n );\n replay.performanceEvents = newPerformanceEntries;\n };\n\n const performanceObserver = new PerformanceObserver(performanceObserverHandler);\n\n [\n 'element',\n 'event',\n 'first-input',\n 'largest-contentful-paint',\n 'layout-shift',\n 'longtask',\n 'navigation',\n 'paint',\n 'resource',\n ].forEach(type => {\n try {\n performanceObserver.observe({\n type,\n buffered: true,\n });\n } catch (e) {\n // This can throw if an entry type is not supported in the browser.\n // Ignore these errors.\n }\n });\n\n return performanceObserver;\n}\n\nconst r = `/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\nfunction t(t){let e=t.length;for(;--e>=0;)t[e]=0}const e=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),a=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Array(576);t(s);const r=new Array(60);t(r);const o=new Array(512);t(o);const l=new Array(256);t(l);const h=new Array(29);t(h);const d=new Array(30);function _(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let f,c,u;function w(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}t(d);const m=t=>t<256?o[t]:o[256+(t>>>7)],b=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},g=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{g(t,a[2*e],a[2*e+1])},k=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},v=(t,e,a)=>{const i=new Array(16);let n,s,r=0;for(n=1;n<=15;n++)r=r+a[n-1]<<1,i[n]=r;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=k(i[e]++,e))}},y=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},x=t=>{t.bi_valid>8?b(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},z=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let s,r,o,_,f=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+f++],s+=(255&t.pending_buf[t.sym_buf+f++])<<8,r=t.pending_buf[t.sym_buf+f++],0===s?p(t,r,i):(o=l[r],p(t,o+256+1,i),_=e[o],0!==_&&(r-=h[o],g(t,r,_)),s--,o=m(s),p(t,o,n),_=a[o],0!==_&&(s-=d[o],g(t,s,_)))}while(f{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,s=e.stat_desc.elems;let r,o,l,h=-1;for(t.heap_len=0,t.heap_max=573,r=0;r>1;r>=1;r--)A(t,a,r);l=s;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],A(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=o,a[2*l]=a[2*r]+a[2*o],t.depth[l]=(t.depth[r]>=t.depth[o]?t.depth[r]:t.depth[o])+1,a[2*r+1]=a[2*o+1]=l,t.heap[1]=l++,A(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length;let h,d,_,f,c,u,w=0;for(f=0;f<=15;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],f=a[2*a[2*d+1]+1]+1,f>l&&(f=l,w++),a[2*d+1]=f,d>i||(t.bl_count[f]++,c=0,d>=o&&(c=r[d-o]),u=a[2*d],t.opt_len+=u*(f+c),s&&(t.static_len+=u*(n[2*d+1]+c)));if(0!==w){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,w-=2}while(w>0);for(f=l;0!==f;f--)for(d=t.bl_count[f];0!==d;)_=t.heap[--h],_>i||(a[2*_+1]!==f&&(t.opt_len+=(f-a[2*_+1])*a[2*_],a[2*_+1]=f),d--)}})(t,e),v(a,h,t.bl_count)},Z=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o{g(t,0+(i?1:0),3),x(t),b(t,a),b(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var T=(t,e,a,i)=>{let o,l,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),R(t,t.l_desc),R(t,t.d_desc),h=(t=>{let e;for(Z(t,t.dyn_ltree,t.l_desc.max_code),Z(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*n[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),o=t.opt_len+3+7>>>3,l=t.static_len+3+7>>>3,l<=o&&(o=l)):o=l=a+5,a+4<=o&&-1!==e?D(t,e,a,i):4===t.strategy||l===o?(g(t,2+(i?1:0),3),E(t,s,r)):(g(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(g(t,e-257,5),g(t,a-1,5),g(t,i-4,4),s=0;s{S||((()=>{let t,n,w,m,b;const g=new Array(16);for(w=0,m=0;m<28;m++)for(h[m]=w,t=0;t<1<>=7;m<30;m++)for(d[m]=b<<7,t=0;t<1<(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(l[a]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{g(t,2,3),p(t,256,s),(t=>{16===t.bi_valid?(b(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var F=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const L=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var N=(t,e,a,i)=>{const n=L,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},I={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"},B={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:C,_tr_stored_block:H,_tr_flush_block:M,_tr_tally:j,_tr_align:K}=O,{Z_NO_FLUSH:P,Z_PARTIAL_FLUSH:Y,Z_FULL_FLUSH:G,Z_FINISH:X,Z_BLOCK:W,Z_OK:q,Z_STREAM_END:J,Z_STREAM_ERROR:Q,Z_DATA_ERROR:V,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:tt,Z_FILTERED:et,Z_HUFFMAN_ONLY:at,Z_RLE:it,Z_FIXED:nt,Z_DEFAULT_STRATEGY:st,Z_UNKNOWN:rt,Z_DEFLATED:ot}=B,lt=(t,e)=>(t.msg=I[e],e),ht=t=>2*t-(t>4?9:0),dt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},_t=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let ft=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},ut=(t,e)=>{M(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ct(t.strm)},wt=(t,e)=>{t.pending_buf[t.pending++]=e},mt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},bt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=F(t.adler,e,n,a):2===t.state.wrap&&(t.adler=N(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},gt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+258;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},pt=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),_t(t),i+=e),0===t.strm.avail_in)break;if(a=bt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=ft(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=ft(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},kt=(t,e)=>{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,ct(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(bt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(bt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===X)&&e!==P&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===X&&0===t.strm.avail_in&&a===i?1:0,H(t,t.block_start,a,r),t.block_start+=a,ct(t.strm)),r?3:1)},vt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a)),t.match_length>=3)if(i=j(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=ft(t,t.ins_h,t.window[t.strstart+1]);else i=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2},yt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=j(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(ut(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=j(t,0,t.window[t.strstart-1]),i&&ut(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=j(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2};function xt(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const zt=[new xt(0,0,0,0,kt),new xt(4,4,8,4,vt),new xt(4,5,16,8,vt),new xt(4,6,32,32,vt),new xt(4,4,16,16,yt),new xt(8,16,32,32,yt),new xt(8,16,128,128,yt),new xt(8,32,128,256,yt),new xt(32,128,258,1024,yt),new xt(32,258,258,4096,yt)];function At(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),dt(this.dyn_ltree),dt(this.dyn_dtree),dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Et=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||42!==e.status&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&113!==e.status&&666!==e.status?1:0},Rt=t=>{if(Et(t))return lt(t,Q);t.total_in=t.total_out=0,t.data_type=rt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=-2,C(e),q},Zt=t=>{const e=Rt(t);var a;return e===q&&((a=t.state).window_size=2*a.w_size,dt(a.head),a.max_lazy_match=zt[a.level].max_lazy,a.good_match=zt[a.level].good_length,a.nice_match=zt[a.level].nice_length,a.max_chain_length=zt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ut=(t,e,a,i,n,s)=>{if(!t)return Q;let r=1;if(e===tt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ot||i<8||i>15||e<0||e>9||s<0||s>nt||8===i&&1!==r)return lt(t,Q);8===i&&(i=9);const o=new At;return t.state=o,o.strm=t,o.status=42,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<Ut(t,e,ot,15,8,st),deflateInit2:Ut,deflateReset:Zt,deflateResetKeep:Rt,deflateSetHeader:(t,e)=>Et(t)||2!==t.state.wrap?Q:(t.state.gzhead=e,q),deflate:(t,e)=>{if(Et(t)||e>W||e<0)return t?lt(t,Q):Q;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||666===a.status&&e!==X)return lt(t,0===t.avail_out?$:Q);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(ct(t),0===t.avail_out)return a.last_flush=-1,q}else if(0===t.avail_in&&ht(e)<=ht(i)&&e!==X)return lt(t,$);if(666===a.status&&0!==t.avail_in)return lt(t,$);if(42===a.status&&0===a.wrap&&(a.status=113),42===a.status){let e=ot+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=at||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,mt(a,e),0!==a.strstart&&(mt(a,t.adler>>>16),mt(a,65535&t.adler)),t.adler=1,a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,q}if(57===a.status)if(t.adler=0,wt(a,31),wt(a,139),wt(a,8),a.gzhead)wt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),wt(a,255&a.gzhead.time),wt(a,a.gzhead.time>>8&255),wt(a,a.gzhead.time>>16&255),wt(a,a.gzhead.time>>24&255),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(wt(a,255&a.gzhead.extra.length),wt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=N(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,3),a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,q;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=N(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,ct(t),0!==a.pending)return a.last_flush=-1,q;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=N(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,q;i=0}e=a.gzindexi&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,q;i=0}e=a.gzindexi&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(ct(t),0!==a.pending))return a.last_flush=-1,q;wt(a,255&t.adler),wt(a,t.adler>>8&255),t.adler=0}if(a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,q}if(0!==t.avail_in||0!==a.lookahead||e!==P&&666!==a.status){let i=0===a.level?kt(a,e):a.strategy===at?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(pt(t),0===t.lookahead)){if(e===P)return 1;break}if(t.match_length=0,a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===it?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=258){if(pt(t),t.lookahead<=258&&e===P)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+258;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=j(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):zt[a.level].func(a,e);if(3!==i&&4!==i||(a.status=666),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),q;if(2===i&&(e===Y?K(a):e!==W&&(H(a,0,0,!1),e===G&&(dt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),ct(t),0===t.avail_out))return a.last_flush=-1,q}return e!==X?q:a.wrap<=0?J:(2===a.wrap?(wt(a,255&t.adler),wt(a,t.adler>>8&255),wt(a,t.adler>>16&255),wt(a,t.adler>>24&255),wt(a,255&t.total_in),wt(a,t.total_in>>8&255),wt(a,t.total_in>>16&255),wt(a,t.total_in>>24&255)):(mt(a,t.adler>>>16),mt(a,65535&t.adler)),ct(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?q:J)},deflateEnd:t=>{if(Et(t))return Q;const e=t.state.status;return t.state=null,113===e?lt(t,V):q},deflateSetDictionary:(t,e)=>{let a=e.length;if(Et(t))return Q;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return Q;if(1===n&&(t.adler=F(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(dt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,pt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=ft(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,pt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,q},deflateInfo:\"pako deflate (from Nodeca project)\"};const Dt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Tt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if(\"object\"!=typeof a)throw new TypeError(a+\"must be non-object\");for(const e in a)Dt(a,e)&&(t[e]=a[e])}}return t},Ot=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Lt[254]=Lt[254]=1;var Nt=t=>{if(\"function\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},It=(t,e)=>{const a=e||t.length;if(\"function\"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Ft)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a=\"\";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Lt[t[a]]>e?a:e};var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0};const Ht=Object.prototype.toString,{Z_NO_FLUSH:Mt,Z_SYNC_FLUSH:jt,Z_FULL_FLUSH:Kt,Z_FINISH:Pt,Z_OK:Yt,Z_STREAM_END:Gt,Z_DEFAULT_COMPRESSION:Xt,Z_DEFAULT_STRATEGY:Wt,Z_DEFLATED:qt}=B;function Jt(t){this.options=Tt({level:Xt,method:qt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Wt},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=St.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Yt)throw new Error(I[a]);if(e.header&&St.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t=\"string\"==typeof e.dictionary?Nt(e.dictionary):\"[object ArrayBuffer]\"===Ht.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=St.deflateSetDictionary(this.strm,t),a!==Yt)throw new Error(I[a]);this._dict_set=!0}}function Qt(t,e){const a=new Jt(e);if(a.push(t,!0),a.err)throw a.msg||I[a.err];return a.result}Jt.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Pt:Mt,\"string\"==typeof t?a.input=Nt(t):\"[object ArrayBuffer]\"===Ht.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===jt||s===Kt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=St.deflate(a,s),n===Gt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=St.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Yt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},Jt.prototype.onData=function(t){this.chunks.push(t)},Jt.prototype.onEnd=function(t){t===Yt&&(this.result=Ot(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Vt={Deflate:Jt,deflate:Qt,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Qt(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Qt(t,e)},constants:B};var $t=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<>>=p,c-=p),c<15&&(f+=z[a++]<>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<o){t.msg=\"invalid distance too far back\",E.mode=16209;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg=\"invalid distance too far back\",E.mode=16209;break t}if(y=0,x=_,0===d){if(y+=l-p,p2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=15;w++)E[w]=0;for(m=0;m=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<15;w++)R[w+1]=R[w]+E[w];for(m=0;m852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:se,Z_BLOCK:re,Z_TREES:oe,Z_OK:le,Z_STREAM_END:he,Z_NEED_DICT:de,Z_STREAM_ERROR:_e,Z_DATA_ERROR:fe,Z_MEM_ERROR:ce,Z_BUF_ERROR:ue,Z_DEFLATED:we}=B,me=16209,be=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const pe=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<16180||e.mode>16211?1:0},ke=t=>{if(pe(t))return _e;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=16180,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,le},ve=t=>{if(pe(t))return _e;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,ke(t)},ye=(t,e)=>{let a;if(pe(t))return _e;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?_e:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,ve(t))},xe=(t,e)=>{if(!t)return _e;const a=new ge;t.state=a,a.strm=t,a.window=null,a.mode=16180;const i=ye(t,e);return i!==le&&(t.state=null),i};let ze,Ae,Ee=!0;const Re=t=>{if(Ee){ze=new Int32Array(512),Ae=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ne(1,t.lens,0,288,ze,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ne(2,t.lens,0,32,Ae,0,t.work,{bits:5}),Ee=!1}t.lencode=ze,t.lenbits=9,t.distcode=Ae,t.distbits=5},Ze=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whavexe(t,15),inflateInit2:xe,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(pe(t)||!t.output||!t.input&&0!==t.avail_in)return _e;a=t.state,16191===a.mode&&(a.mode=16192),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=le;t:for(;;)switch(a.mode){case 16180:if(0===a.wrap){a.mode=16192;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=N(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg=\"incorrect header check\",a.mode=me;break}if((15&h)!==we){t.msg=\"unknown compression method\",a.mode=me;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg=\"invalid window size\",a.mode=me;break}a.dmax=1<>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=N(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=N(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=N(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=N(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=N(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=16191;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=16206;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Re(a),a.mode=16199,e===oe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg=\"invalid block type\",a.mode=me}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<>>16^65535)){t.msg=\"invalid stored block lengths\",a.mode=me;break}if(a.length=65535&h,h=0,d=0,a.mode=16194,e===oe)break t;case 16194:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=16191;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg=\"too many length or distance symbols\",a.mode=me;break}a.have=0,a.mode=16197;case 16197:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=ne(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg=\"invalid code lengths set\",a.mode=me;break}a.have=0,a.mode=16198;case 16198:for(;a.have>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d>>=m,d-=m,0===a.have){t.msg=\"invalid bit length repeat\",a.mode=me;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg=\"invalid bit length repeat\",a.mode=me;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===me)break;if(0===a.lens[256]){t.msg=\"invalid code -- missing end-of-block\",a.mode=me;break}if(a.lenbits=9,E={bits:a.lenbits},x=ne(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg=\"invalid literal/lengths set\",a.mode=me;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=ne(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg=\"invalid distances set\",a.mode=me;break}if(a.mode=16199,e===oe)break t;case 16199:a.mode=16200;case 16200:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,$t(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,16191===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=16191;break}if(64&b){t.msg=\"invalid literal/length code\",a.mode=me;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg=\"invalid distance code\",a.mode=me;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg=\"invalid distance too far back\",a.mode=me;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg=\"invalid distance too far back\",a.mode=me;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=16200);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=16200;break;case 16206:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<{if(pe(t))return _e;let e=t.state;return e.window&&(e.window=null),t.state=null,le},inflateGetHeader:(t,e)=>{if(pe(t))return _e;const a=t.state;return 0==(2&a.wrap)?_e:(a.head=e,e.done=!1,le)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return pe(t)?_e:(i=t.state,0!==i.wrap&&16190!==i.mode?_e:16190===i.mode&&(n=1,n=F(n,e,a,0),n!==i.check)?fe:(s=Ze(t,e,a,a),s?(i.mode=16210,ce):(i.havedict=1,le)))},inflateInfo:\"pako inflate (from Nodeca project)\"};var Se=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1};const De=Object.prototype.toString,{Z_NO_FLUSH:Te,Z_FINISH:Oe,Z_OK:Fe,Z_STREAM_END:Le,Z_NEED_DICT:Ne,Z_STREAM_ERROR:Ie,Z_DATA_ERROR:Be,Z_MEM_ERROR:Ce}=B;function He(t){this.options=Tt({chunkSize:65536,windowBits:15,to:\"\"},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Ue.inflateInit2(this.strm,e.windowBits);if(a!==Fe)throw new Error(I[a]);if(this.header=new Se,Ue.inflateGetHeader(this.strm,this.header),e.dictionary&&(\"string\"==typeof e.dictionary?e.dictionary=Nt(e.dictionary):\"[object ArrayBuffer]\"===De.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Ue.inflateSetDictionary(this.strm,e.dictionary),a!==Fe)))throw new Error(I[a])}He.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Oe:Te,\"[object ArrayBuffer]\"===De.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Ue.inflate(a,r),s===Ne&&n&&(s=Ue.inflateSetDictionary(a,n),s===Fe?s=Ue.inflate(a,r):s===Be&&(s=Ne));a.avail_in>0&&s===Le&&a.state.wrap>0&&0!==t[a.next_in];)Ue.inflateReset(a),s=Ue.inflate(a,r);switch(s){case Ie:case Be:case Ne:case Ce:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===Le))if(\"string\"===this.options.to){let t=Bt(a.output,a.next_out),e=a.next_out-t,n=It(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==Fe||0!==o){if(s===Le)return s=Ue.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},He.prototype.onData=function(t){this.chunks.push(t)},He.prototype.onEnd=function(t){t===Fe&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=Ot(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Me,deflate:je,deflateRaw:Ke,gzip:Pe}=Vt;var Ye=Me,Ge=je,Xe=B;const We=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error(\"Adding invalid event\");const e=this._hasEvents?\",\":\"\";this.deflate.push(e+t,Xe.Z_SYNC_FLUSH),this._hasEvents=!0}finish(){if(this.deflate.push(\"]\",Xe.Z_FINISH),this.deflate.err)throw this.deflate.err;const t=this.deflate.result;return this._init(),t}_init(){this._hasEvents=!1,this.deflate=new Ye,this.deflate.push(\"[\",Xe.Z_NO_FLUSH)}},qe={clear:()=>{We.clear()},addEvent:t=>We.addEvent(t),finish:()=>We.finish(),compress:t=>function(t){return Ge(t)}(t)};addEventListener(\"message\",(function(t){const e=t.data.method,a=t.data.id,i=t.data.arg;if(e in qe&&\"function\"==typeof qe[e])try{const t=qe[e](i);postMessage({id:a,method:e,success:!0,response:t})}catch(t){postMessage({id:a,method:e,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:\"init\",success:!0,response:void 0});`;\n\nfunction e(){const e=new Blob([r]);return URL.createObjectURL(e)}\n\n/** This error indicates that the event buffer size exceeded the limit.. */\nclass EventBufferSizeExceededError extends Error {\n constructor() {\n super(`Event buffer exceeded maximum size of ${REPLAY_MAX_EVENT_BUFFER_SIZE}.`);\n }\n}\n\n/**\n * A basic event buffer that does not do any compression.\n * Used as fallback if the compression worker cannot be loaded or is disabled.\n */\nclass EventBufferArray {\n /** All the events that are buffered to be sent. */\n\n __init() {this._totalSize = 0;}\n\n constructor() {EventBufferArray.prototype.__init.call(this);\n this.events = [];\n }\n\n /** @inheritdoc */\n get hasEvents() {\n return this.events.length > 0;\n }\n\n /** @inheritdoc */\n get type() {\n return 'sync';\n }\n\n /** @inheritdoc */\n destroy() {\n this.events = [];\n }\n\n /** @inheritdoc */\n async addEvent(event) {\n const eventSize = JSON.stringify(event).length;\n this._totalSize += eventSize;\n if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n throw new EventBufferSizeExceededError();\n }\n\n this.events.push(event);\n }\n\n /** @inheritdoc */\n finish() {\n return new Promise(resolve => {\n // Make a copy of the events array reference and immediately clear the\n // events member so that we do not lose new events while uploading\n // attachment.\n const eventsRet = this.events;\n this.clear();\n resolve(JSON.stringify(eventsRet));\n });\n }\n\n /** @inheritdoc */\n clear() {\n this.events = [];\n this._totalSize = 0;\n }\n\n /** @inheritdoc */\n getEarliestTimestamp() {\n const timestamp = this.events.map(event => event.timestamp).sort()[0];\n\n if (!timestamp) {\n return null;\n }\n\n return timestampToMs(timestamp);\n }\n}\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nclass WorkerHandler {\n\n constructor(worker) {\n this._worker = worker;\n this._id = 0;\n }\n\n /**\n * Ensure the worker is ready (or not).\n * This will either resolve when the worker is ready, or reject if an error occured.\n */\n ensureReady() {\n // Ensure we only check once\n if (this._ensureReadyPromise) {\n return this._ensureReadyPromise;\n }\n\n this._ensureReadyPromise = new Promise((resolve, reject) => {\n this._worker.addEventListener(\n 'message',\n ({ data }) => {\n if ((data ).success) {\n resolve();\n } else {\n reject();\n }\n },\n { once: true },\n );\n\n this._worker.addEventListener(\n 'error',\n error => {\n reject(error);\n },\n { once: true },\n );\n });\n\n return this._ensureReadyPromise;\n }\n\n /**\n * Destroy the worker.\n */\n destroy() {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Destroying compression worker');\n this._worker.terminate();\n }\n\n /**\n * Post message to worker and wait for response before resolving promise.\n */\n postMessage(method, arg) {\n const id = this._getAndIncrementId();\n\n return new Promise((resolve, reject) => {\n const listener = ({ data }) => {\n const response = data ;\n if (response.method !== method) {\n return;\n }\n\n // There can be multiple listeners for a single method, the id ensures\n // that the response matches the caller.\n if (response.id !== id) {\n return;\n }\n\n // At this point, we'll always want to remove listener regardless of result status\n this._worker.removeEventListener('message', listener);\n\n if (!response.success) {\n // TODO: Do some error handling, not sure what\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay]', response.response);\n\n reject(new Error('Error in compression worker'));\n return;\n }\n\n resolve(response.response );\n };\n\n // Note: we can't use `once` option because it's possible it needs to\n // listen to multiple messages\n this._worker.addEventListener('message', listener);\n this._worker.postMessage({ id, method, arg });\n });\n }\n\n /** Get the current ID and increment it for the next call. */\n _getAndIncrementId() {\n return this._id++;\n }\n}\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nclass EventBufferCompressionWorker {\n\n __init() {this._totalSize = 0;}\n\n constructor(worker) {EventBufferCompressionWorker.prototype.__init.call(this);\n this._worker = new WorkerHandler(worker);\n this._earliestTimestamp = null;\n }\n\n /** @inheritdoc */\n get hasEvents() {\n return !!this._earliestTimestamp;\n }\n\n /** @inheritdoc */\n get type() {\n return 'worker';\n }\n\n /**\n * Ensure the worker is ready (or not).\n * This will either resolve when the worker is ready, or reject if an error occured.\n */\n ensureReady() {\n return this._worker.ensureReady();\n }\n\n /**\n * Destroy the event buffer.\n */\n destroy() {\n this._worker.destroy();\n }\n\n /**\n * Add an event to the event buffer.\n *\n * Returns true if event was successfuly received and processed by worker.\n */\n addEvent(event) {\n const timestamp = timestampToMs(event.timestamp);\n if (!this._earliestTimestamp || timestamp < this._earliestTimestamp) {\n this._earliestTimestamp = timestamp;\n }\n\n const data = JSON.stringify(event);\n this._totalSize += data.length;\n\n if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n return Promise.reject(new EventBufferSizeExceededError());\n }\n\n return this._sendEventToWorker(data);\n }\n\n /**\n * Finish the event buffer and return the compressed data.\n */\n finish() {\n return this._finishRequest();\n }\n\n /** @inheritdoc */\n clear() {\n this._earliestTimestamp = null;\n this._totalSize = 0;\n // We do not wait on this, as we assume the order of messages is consistent for the worker\n void this._worker.postMessage('clear');\n }\n\n /** @inheritdoc */\n getEarliestTimestamp() {\n return this._earliestTimestamp;\n }\n\n /**\n * Send the event to the worker.\n */\n _sendEventToWorker(data) {\n return this._worker.postMessage('addEvent', data);\n }\n\n /**\n * Finish the request and return the compressed data from the worker.\n */\n async _finishRequest() {\n const response = await this._worker.postMessage('finish');\n\n this._earliestTimestamp = null;\n this._totalSize = 0;\n\n return response;\n }\n}\n\n/**\n * This proxy will try to use the compression worker, and fall back to use the simple buffer if an error occurs there.\n * This can happen e.g. if the worker cannot be loaded.\n * Exported only for testing.\n */\nclass EventBufferProxy {\n\n constructor(worker) {\n this._fallback = new EventBufferArray();\n this._compression = new EventBufferCompressionWorker(worker);\n this._used = this._fallback;\n\n this._ensureWorkerIsLoadedPromise = this._ensureWorkerIsLoaded();\n }\n\n /** @inheritdoc */\n get type() {\n return this._used.type;\n }\n\n /** @inheritDoc */\n get hasEvents() {\n return this._used.hasEvents;\n }\n\n /** @inheritDoc */\n destroy() {\n this._fallback.destroy();\n this._compression.destroy();\n }\n\n /** @inheritdoc */\n clear() {\n return this._used.clear();\n }\n\n /** @inheritdoc */\n getEarliestTimestamp() {\n return this._used.getEarliestTimestamp();\n }\n\n /**\n * Add an event to the event buffer.\n *\n * Returns true if event was successfully added.\n */\n addEvent(event) {\n return this._used.addEvent(event);\n }\n\n /** @inheritDoc */\n async finish() {\n // Ensure the worker is loaded, so the sent event is compressed\n await this.ensureWorkerIsLoaded();\n\n return this._used.finish();\n }\n\n /** Ensure the worker has loaded. */\n ensureWorkerIsLoaded() {\n return this._ensureWorkerIsLoadedPromise;\n }\n\n /** Actually check if the worker has been loaded. */\n async _ensureWorkerIsLoaded() {\n try {\n await this._compression.ensureReady();\n } catch (error) {\n // If the worker fails to load, we fall back to the simple buffer.\n // Nothing more to do from our side here\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Failed to load the compression worker, falling back to simple buffer');\n return;\n }\n\n // Now we need to switch over the array buffer to the compression worker\n await this._switchToCompressionWorker();\n }\n\n /** Switch the used buffer to the compression worker. */\n async _switchToCompressionWorker() {\n const { events } = this._fallback;\n\n const addEventPromises = [];\n for (const event of events) {\n addEventPromises.push(this._compression.addEvent(event));\n }\n\n // We switch over to the new buffer immediately - any further events will be added\n // after the previously buffered ones\n this._used = this._compression;\n\n // Wait for original events to be re-added before resolving\n try {\n await Promise.all(addEventPromises);\n } catch (error) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Replay] Failed to add events when switching buffers.', error);\n }\n }\n}\n\n/**\n * Create an event buffer for replays.\n */\nfunction createEventBuffer({ useCompression }) {\n // eslint-disable-next-line no-restricted-globals\n if (useCompression && window.Worker) {\n try {\n const workerUrl = e();\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Using compression worker');\n const worker = new Worker(workerUrl);\n return new EventBufferProxy(worker);\n } catch (error) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Failed to create compression worker');\n // Fall back to use simple event buffer array\n }\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Using simple buffer');\n return new EventBufferArray();\n}\n\n/** If sessionStorage is available. */\nfunction hasSessionStorage() {\n try {\n // This can throw, e.g. when being accessed in a sandboxed iframe\n return 'sessionStorage' in WINDOW && !!WINDOW.sessionStorage;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Removes the session from Session Storage and unsets session in replay instance\n */\nfunction clearSession(replay) {\n deleteSession();\n replay.session = undefined;\n}\n\n/**\n * Deletes a session from storage\n */\nfunction deleteSession() {\n if (!hasSessionStorage()) {\n return;\n }\n\n try {\n WINDOW.sessionStorage.removeItem(REPLAY_SESSION_KEY);\n } catch (e) {\n // Ignore potential SecurityError exceptions\n }\n}\n\n/**\n * Given an initial timestamp and an expiry duration, checks to see if current\n * time should be considered as expired.\n */\nfunction isExpired(\n initialTime,\n expiry,\n targetTime = +new Date(),\n) {\n // Always expired if < 0\n if (initialTime === null || expiry === undefined || expiry < 0) {\n return true;\n }\n\n // Never expires if == 0\n if (expiry === 0) {\n return false;\n }\n\n return initialTime + expiry <= targetTime;\n}\n\n/**\n * Checks to see if session is expired\n */\nfunction isSessionExpired(session, timeouts, targetTime = +new Date()) {\n return (\n // First, check that maximum session length has not been exceeded\n isExpired(session.started, timeouts.maxSessionLife, targetTime) ||\n // check that the idle timeout has not been exceeded (i.e. user has\n // performed an action within the last `sessionIdleExpire` ms)\n isExpired(session.lastActivity, timeouts.sessionIdleExpire, targetTime)\n );\n}\n\n/**\n * Given a sample rate, returns true if replay should be sampled.\n *\n * 1.0 = 100% sampling\n * 0.0 = 0% sampling\n */\nfunction isSampled(sampleRate) {\n if (sampleRate === undefined) {\n return false;\n }\n\n // Math.random() returns a number in range of 0 to 1 (inclusive of 0, but not 1)\n return Math.random() < sampleRate;\n}\n\n/**\n * Save a session to session storage.\n */\nfunction saveSession(session) {\n if (!hasSessionStorage()) {\n return;\n }\n\n try {\n WINDOW.sessionStorage.setItem(REPLAY_SESSION_KEY, JSON.stringify(session));\n } catch (e) {\n // Ignore potential SecurityError exceptions\n }\n}\n\n/**\n * Get a session with defaults & applied sampling.\n */\nfunction makeSession(session) {\n const now = Date.now();\n const id = session.id || uuid4();\n // Note that this means we cannot set a started/lastActivity of `0`, but this should not be relevant outside of tests.\n const started = session.started || now;\n const lastActivity = session.lastActivity || now;\n const segmentId = session.segmentId || 0;\n const sampled = session.sampled;\n\n return {\n id,\n started,\n lastActivity,\n segmentId,\n sampled,\n shouldRefresh: true,\n };\n}\n\n/**\n * Get the sampled status for a session based on sample rates & current sampled status.\n */\nfunction getSessionSampleType(sessionSampleRate, allowBuffering) {\n return isSampled(sessionSampleRate) ? 'session' : allowBuffering ? 'buffer' : false;\n}\n\n/**\n * Create a new session, which in its current implementation is a Sentry event\n * that all replays will be saved to as attachments. Currently, we only expect\n * one of these Sentry events per \"replay session\".\n */\nfunction createSession({ sessionSampleRate, allowBuffering, stickySession = false }) {\n const sampled = getSessionSampleType(sessionSampleRate, allowBuffering);\n const session = makeSession({\n sampled,\n });\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Replay] Creating new session: ${session.id}`);\n\n if (stickySession) {\n saveSession(session);\n }\n\n return session;\n}\n\n/**\n * Fetches a session from storage\n */\nfunction fetchSession() {\n if (!hasSessionStorage()) {\n return null;\n }\n\n try {\n // This can throw if cookies are disabled\n const sessionStringFromStorage = WINDOW.sessionStorage.getItem(REPLAY_SESSION_KEY);\n\n if (!sessionStringFromStorage) {\n return null;\n }\n\n const sessionObj = JSON.parse(sessionStringFromStorage) ;\n\n return makeSession(sessionObj);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Get or create a session\n */\nfunction getSession({\n timeouts,\n currentSession,\n stickySession,\n sessionSampleRate,\n allowBuffering,\n}) {\n // If session exists and is passed, use it instead of always hitting session storage\n const session = currentSession || (stickySession && fetchSession());\n\n if (session) {\n // If there is a session, check if it is valid (e.g. \"last activity\" time\n // should be within the \"session idle time\", and \"session started\" time is\n // within \"max session time\").\n const isExpired = isSessionExpired(session, timeouts);\n\n if (!isExpired || (allowBuffering && session.shouldRefresh)) {\n return { type: 'saved', session };\n } else if (!session.shouldRefresh) {\n // This is the case if we have an error session that is completed\n // (=triggered an error). Session will continue as session-based replay,\n // and when this session is expired, it will not be renewed until user\n // reloads.\n const discardedSession = makeSession({ sampled: false });\n return { type: 'new', session: discardedSession };\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Session has expired');\n }\n // Otherwise continue to create a new session\n }\n\n const newSession = createSession({\n stickySession,\n sessionSampleRate,\n allowBuffering,\n });\n\n return { type: 'new', session: newSession };\n}\n\nfunction isCustomEvent(event) {\n return event.type === EventType.Custom;\n}\n\n/**\n * Add an event to the event buffer.\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nasync function addEvent(\n replay,\n event,\n isCheckout,\n) {\n if (!replay.eventBuffer) {\n // This implies that `_isEnabled` is false\n return null;\n }\n\n if (replay.isPaused()) {\n // Do not add to event buffer when recording is paused\n return null;\n }\n\n const timestampInMs = timestampToMs(event.timestamp);\n\n // Throw out events that happen more than 5 minutes ago. This can happen if\n // page has been left open and idle for a long period of time and user\n // comes back to trigger a new session. The performance entries rely on\n // `performance.timeOrigin`, which is when the page first opened.\n if (timestampInMs + replay.timeouts.sessionIdlePause < Date.now()) {\n return null;\n }\n\n try {\n if (isCheckout) {\n replay.eventBuffer.clear();\n }\n\n const replayOptions = replay.getOptions();\n\n const eventAfterPossibleCallback = maybeApplyCallback(event, replayOptions.beforeAddRecordingEvent);\n\n if (!eventAfterPossibleCallback) {\n return;\n }\n\n return await replay.eventBuffer.addEvent(eventAfterPossibleCallback);\n } catch (error) {\n const reason = error && error instanceof EventBufferSizeExceededError ? 'addEventSizeExceeded' : 'addEvent';\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(error);\n await replay.stop(reason);\n\n const client = getCurrentHub().getClient();\n\n if (client) {\n client.recordDroppedEvent('internal_sdk_error', 'replay');\n }\n }\n}\n\nfunction maybeApplyCallback(\n event,\n callback,\n) {\n try {\n if (typeof callback === 'function' && isCustomEvent(event)) {\n return callback(event);\n }\n } catch (error) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error('[Replay] An error occured in the `beforeAddRecordingEvent` callback, skipping the event...', error);\n return null;\n }\n\n return event;\n}\n\n/** If the event is an error event */\nfunction isErrorEvent(event) {\n return !event.type;\n}\n\n/** If the event is a transaction event */\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\n/** If the event is an replay event */\nfunction isReplayEvent(event) {\n return event.type === 'replay_event';\n}\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nfunction handleAfterSendEvent(replay) {\n // Custom transports may still be returning `Promise`, which means we cannot expect the status code to be available there\n // TODO (v8): remove this check as it will no longer be necessary\n const enforceStatusCode = isBaseTransportSend();\n\n return (event, sendResponse) => {\n if (!isErrorEvent(event) && !isTransactionEvent(event)) {\n return;\n }\n\n const statusCode = sendResponse && sendResponse.statusCode;\n\n // We only want to do stuff on successful error sending, otherwise you get error replays without errors attached\n // If not using the base transport, we allow `undefined` response (as a custom transport may not implement this correctly yet)\n // If we do use the base transport, we skip if we encountered an non-OK status code\n if (enforceStatusCode && (!statusCode || statusCode < 200 || statusCode >= 300)) {\n return;\n }\n\n // Collect traceIds in _context regardless of `recordingMode`\n // In error mode, _context gets cleared on every checkout\n if (isTransactionEvent(event) && event.contexts && event.contexts.trace && event.contexts.trace.trace_id) {\n replay.getContext().traceIds.add(event.contexts.trace.trace_id );\n return;\n }\n\n // Everything below is just for error events\n if (!isErrorEvent(event)) {\n return;\n }\n\n // Add error to list of errorIds of replay. This is ok to do even if not\n // sampled because context will get reset at next checkout.\n // XXX: There is also a race condition where it's possible to capture an\n // error to Sentry before Replay SDK has loaded, but response returns after\n // it was loaded, and this gets called.\n if (event.event_id) {\n replay.getContext().errorIds.add(event.event_id);\n }\n\n // If error event is tagged with replay id it means it was sampled (when in buffer mode)\n // Need to be very careful that this does not cause an infinite loop\n if (replay.recordingMode === 'buffer' && event.tags && event.tags.replayId) {\n setTimeout(() => {\n // Capture current event buffer as new replay\n void replay.sendBufferedReplayOrFlush();\n });\n }\n };\n}\n\nfunction isBaseTransportSend() {\n const client = getCurrentHub().getClient();\n if (!client) {\n return false;\n }\n\n const transport = client.getTransport();\n if (!transport) {\n return false;\n }\n\n return (\n (transport.send ).__sentry__baseTransport__ || false\n );\n}\n\n/**\n * Returns true if we think the given event is an error originating inside of rrweb.\n */\nfunction isRrwebError(event, hint) {\n if (event.type || !event.exception || !event.exception.values || !event.exception.values.length) {\n return false;\n }\n\n // @ts-ignore this may be set by rrweb when it finds errors\n if (hint.originalException && hint.originalException.__rrweb__) {\n return true;\n }\n\n // Check if any exception originates from rrweb\n return event.exception.values.some(exception => {\n if (!exception.stacktrace || !exception.stacktrace.frames || !exception.stacktrace.frames.length) {\n return false;\n }\n\n return exception.stacktrace.frames.some(frame => frame.filename && frame.filename.includes('/rrweb/src/'));\n });\n}\n\n/**\n * Determine if event should be sampled (only applies in buffer mode).\n * When an event is captured by `hanldleGlobalEvent`, when in buffer mode\n * we determine if we want to sample the error or not.\n */\nfunction shouldSampleForBufferEvent(replay, event) {\n if (replay.recordingMode !== 'buffer') {\n return false;\n }\n\n // ignore this error because otherwise we could loop indefinitely with\n // trying to capture replay and failing\n if (event.message === UNABLE_TO_SEND_REPLAY) {\n return false;\n }\n\n // Require the event to be an error event & to have an exception\n if (!event.exception || event.type) {\n return false;\n }\n\n return isSampled(replay.getOptions().errorSampleRate);\n}\n\n/**\n * Returns a listener to be added to `addGlobalEventProcessor(listener)`.\n */\nfunction handleGlobalEventListener(\n replay,\n includeAfterSendEventHandling = false,\n) {\n const afterSendHandler = includeAfterSendEventHandling ? handleAfterSendEvent(replay) : undefined;\n\n return (event, hint) => {\n if (isReplayEvent(event)) {\n // Replays have separate set of breadcrumbs, do not include breadcrumbs\n // from core SDK\n delete event.breadcrumbs;\n return event;\n }\n\n // We only want to handle errors & transactions, nothing else\n if (!isErrorEvent(event) && !isTransactionEvent(event)) {\n return event;\n }\n\n // Unless `captureExceptions` is enabled, we want to ignore errors coming from rrweb\n // As there can be a bunch of stuff going wrong in internals there, that we don't want to bubble up to users\n if (isRrwebError(event, hint) && !replay.getOptions()._experiments.captureExceptions) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Ignoring error from rrweb internals', event);\n return null;\n }\n\n // When in buffer mode, we decide to sample here.\n // Later, in `handleAfterSendEvent`, if the replayId is set, we know that we sampled\n // And convert the buffer session to a full session\n const isErrorEventSampled = shouldSampleForBufferEvent(replay, event);\n\n // Tag errors if it has been sampled in buffer mode, or if it is session mode\n // Only tag transactions if in session mode\n const shouldTagReplayId = isErrorEventSampled || replay.recordingMode === 'session';\n\n if (shouldTagReplayId) {\n event.tags = { ...event.tags, replayId: replay.getSessionId() };\n }\n\n // In cases where a custom client is used that does not support the new hooks (yet),\n // we manually call this hook method here\n if (afterSendHandler) {\n // Pretend the error had a 200 response so we always capture it\n afterSendHandler(event, { statusCode: 200 });\n }\n\n return event;\n };\n}\n\n/**\n * Create a \"span\" for each performance entry.\n */\nfunction createPerformanceSpans(\n replay,\n entries,\n) {\n return entries.map(({ type, start, end, name, data }) => {\n const response = replay.throttledAddEvent({\n type: EventType.Custom,\n timestamp: start,\n data: {\n tag: 'performanceSpan',\n payload: {\n op: type,\n description: name,\n startTimestamp: start,\n endTimestamp: end,\n data,\n },\n },\n });\n\n // If response is a string, it means its either THROTTLED or SKIPPED\n return typeof response === 'string' ? Promise.resolve(null) : response;\n });\n}\n\nfunction handleHistory(handlerData) {\n const { from, to } = handlerData;\n\n const now = Date.now() / 1000;\n\n return {\n type: 'navigation.push',\n start: now,\n end: now,\n name: to,\n data: {\n previous: from,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addInstrumentationHandler('history', listener)`.\n */\nfunction handleHistorySpanListener(replay) {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleHistory(handlerData);\n\n if (result === null) {\n return;\n }\n\n // Need to collect visited URLs\n replay.getContext().urls.push(result.name);\n replay.triggerUserActivity();\n\n replay.addUpdate(() => {\n createPerformanceSpans(replay, [result]);\n // Returning false to flush\n return false;\n });\n };\n}\n\n/**\n * Check whether a given request URL should be filtered out. This is so we\n * don't log Sentry ingest requests.\n */\nfunction shouldFilterRequest(replay, url) {\n // If we enabled the `traceInternals` experiment, we want to trace everything\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && replay.getOptions()._experiments.traceInternals) {\n return false;\n }\n\n return _isSentryRequest(url);\n}\n\n/**\n * Checks wether a given URL belongs to the configured Sentry DSN.\n */\nfunction _isSentryRequest(url) {\n const client = getCurrentHub().getClient();\n const dsn = client && client.getDsn();\n return dsn ? url.includes(dsn.host) : false;\n}\n\n/** Add a performance entry breadcrumb */\nfunction addNetworkBreadcrumb(\n replay,\n result,\n) {\n if (!replay.isEnabled()) {\n return;\n }\n\n if (result === null) {\n return;\n }\n\n if (shouldFilterRequest(replay, result.name)) {\n return;\n }\n\n replay.addUpdate(() => {\n createPerformanceSpans(replay, [result]);\n // Returning true will cause `addUpdate` to not flush\n // We do not want network requests to cause a flush. This will prevent\n // recurring/polling requests from keeping the replay session alive.\n return true;\n });\n}\n\n/** only exported for tests */\nfunction handleFetch(handlerData) {\n const { startTimestamp, endTimestamp, fetchData, response } = handlerData;\n\n if (!endTimestamp) {\n return null;\n }\n\n // This is only used as a fallback, so we know the body sizes are never set here\n const { method, url } = fetchData;\n\n return {\n type: 'resource.fetch',\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n name: url,\n data: {\n method,\n statusCode: response ? (response ).status : undefined,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addInstrumentationHandler('fetch', listener)`.\n */\nfunction handleFetchSpanListener(replay) {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleFetch(handlerData);\n\n addNetworkBreadcrumb(replay, result);\n };\n}\n\n/** only exported for tests */\nfunction handleXhr(handlerData) {\n const { startTimestamp, endTimestamp, xhr } = handlerData;\n\n const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return null;\n }\n\n // This is only used as a fallback, so we know the body sizes are never set here\n const { method, url, status_code: statusCode } = sentryXhrData;\n\n if (url === undefined) {\n return null;\n }\n\n return {\n type: 'resource.xhr',\n name: url,\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n data: {\n method,\n statusCode,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addInstrumentationHandler('xhr', listener)`.\n */\nfunction handleXhrSpanListener(replay) {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleXhr(handlerData);\n\n addNetworkBreadcrumb(replay, result);\n };\n}\n\nconst OBJ = 10;\nconst OBJ_KEY = 11;\nconst OBJ_KEY_STR = 12;\nconst OBJ_VAL = 13;\nconst OBJ_VAL_STR = 14;\nconst OBJ_VAL_COMPLETED = 15;\n\nconst ARR = 20;\nconst ARR_VAL = 21;\nconst ARR_VAL_STR = 22;\nconst ARR_VAL_COMPLETED = 23;\n\nconst ALLOWED_PRIMITIVES = ['true', 'false', 'null'];\n\n/**\n * Complete an incomplete JSON string.\n * This will ensure that the last element always has a `\"~~\"` to indicate it was truncated.\n * For example, `[1,2,` will be completed to `[1,2,\"~~\"]`\n * and `{\"aa\":\"b` will be completed to `{\"aa\":\"b~~\"}`\n */\nfunction completeJson(incompleteJson, stack) {\n if (!stack.length) {\n return incompleteJson;\n }\n\n let json = incompleteJson;\n\n // Most checks are only needed for the last step in the stack\n const lastPos = stack.length - 1;\n const lastStep = stack[lastPos];\n\n json = _fixLastStep(json, lastStep);\n\n // Complete remaining steps - just add closing brackets\n for (let i = lastPos; i >= 0; i--) {\n const step = stack[i];\n\n switch (step) {\n case OBJ:\n json = `${json}}`;\n break;\n case ARR:\n json = `${json}]`;\n break;\n }\n }\n\n return json;\n}\n\nfunction _fixLastStep(json, lastStep) {\n switch (lastStep) {\n // Object cases\n case OBJ:\n return `${json}\"~~\":\"~~\"`;\n case OBJ_KEY:\n return `${json}:\"~~\"`;\n case OBJ_KEY_STR:\n return `${json}~~\":\"~~\"`;\n case OBJ_VAL:\n return _maybeFixIncompleteObjValue(json);\n case OBJ_VAL_STR:\n return `${json}~~\"`;\n case OBJ_VAL_COMPLETED:\n return `${json},\"~~\":\"~~\"`;\n\n // Array cases\n case ARR:\n return `${json}\"~~\"`;\n case ARR_VAL:\n return _maybeFixIncompleteArrValue(json);\n case ARR_VAL_STR:\n return `${json}~~\"`;\n case ARR_VAL_COMPLETED:\n return `${json},\"~~\"`;\n }\n\n return json;\n}\n\nfunction _maybeFixIncompleteArrValue(json) {\n const pos = _findLastArrayDelimiter(json);\n\n if (pos > -1) {\n const part = json.slice(pos + 1);\n\n if (ALLOWED_PRIMITIVES.includes(part.trim())) {\n return `${json},\"~~\"`;\n }\n\n // Everything else is replaced with `\"~~\"`\n return `${json.slice(0, pos + 1)}\"~~\"`;\n }\n\n // fallback, this shouldn't happen, to be save\n return json;\n}\n\nfunction _findLastArrayDelimiter(json) {\n for (let i = json.length - 1; i >= 0; i--) {\n const char = json[i];\n\n if (char === ',' || char === '[') {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction _maybeFixIncompleteObjValue(json) {\n const startPos = json.lastIndexOf(':');\n\n const part = json.slice(startPos + 1);\n\n if (ALLOWED_PRIMITIVES.includes(part.trim())) {\n return `${json},\"~~\":\"~~\"`;\n }\n\n // Everything else is replaced with `\"~~\"`\n // This also means we do not have incomplete numbers, e.g `[1` is replaced with `[\"~~\"]`\n return `${json.slice(0, startPos + 1)}\"~~\"`;\n}\n\n/**\n * Evaluate an (incomplete) JSON string.\n */\nfunction evaluateJson(json) {\n const stack = [];\n\n for (let pos = 0; pos < json.length; pos++) {\n _evaluateJsonPos(stack, json, pos);\n }\n\n return stack;\n}\n\nfunction _evaluateJsonPos(stack, json, pos) {\n const curStep = stack[stack.length - 1];\n\n const char = json[pos];\n\n const whitespaceRegex = /\\s/;\n\n if (whitespaceRegex.test(char)) {\n return;\n }\n\n if (char === '\"' && !_isEscaped(json, pos)) {\n _handleQuote(stack, curStep);\n return;\n }\n\n switch (char) {\n case '{':\n _handleObj(stack, curStep);\n break;\n case '[':\n _handleArr(stack, curStep);\n break;\n case ':':\n _handleColon(stack, curStep);\n break;\n case ',':\n _handleComma(stack, curStep);\n break;\n case '}':\n _handleObjClose(stack, curStep);\n break;\n case ']':\n _handleArrClose(stack, curStep);\n break;\n }\n}\n\nfunction _handleQuote(stack, curStep) {\n // End of obj value\n if (curStep === OBJ_VAL_STR) {\n stack.pop();\n stack.push(OBJ_VAL_COMPLETED);\n return;\n }\n\n // End of arr value\n if (curStep === ARR_VAL_STR) {\n stack.pop();\n stack.push(ARR_VAL_COMPLETED);\n return;\n }\n\n // Start of obj value\n if (curStep === OBJ_VAL) {\n stack.push(OBJ_VAL_STR);\n return;\n }\n\n // Start of arr value\n if (curStep === ARR_VAL) {\n stack.push(ARR_VAL_STR);\n return;\n }\n\n // Start of obj key\n if (curStep === OBJ) {\n stack.push(OBJ_KEY_STR);\n return;\n }\n\n // End of obj key\n if (curStep === OBJ_KEY_STR) {\n stack.pop();\n stack.push(OBJ_KEY);\n return;\n }\n}\n\nfunction _handleObj(stack, curStep) {\n // Initial object\n if (!curStep) {\n stack.push(OBJ);\n return;\n }\n\n // New object as obj value\n if (curStep === OBJ_VAL) {\n stack.push(OBJ);\n return;\n }\n\n // New object as array element\n if (curStep === ARR_VAL) {\n stack.push(OBJ);\n }\n\n // New object as first array element\n if (curStep === ARR) {\n stack.push(OBJ);\n return;\n }\n}\n\nfunction _handleArr(stack, curStep) {\n // Initial array\n if (!curStep) {\n stack.push(ARR);\n stack.push(ARR_VAL);\n return;\n }\n\n // New array as obj value\n if (curStep === OBJ_VAL) {\n stack.push(ARR);\n stack.push(ARR_VAL);\n return;\n }\n\n // New array as array element\n if (curStep === ARR_VAL) {\n stack.push(ARR);\n stack.push(ARR_VAL);\n }\n\n // New array as first array element\n if (curStep === ARR) {\n stack.push(ARR);\n stack.push(ARR_VAL);\n return;\n }\n}\n\nfunction _handleColon(stack, curStep) {\n if (curStep === OBJ_KEY) {\n stack.pop();\n stack.push(OBJ_VAL);\n }\n}\n\nfunction _handleComma(stack, curStep) {\n // Comma after obj value\n if (curStep === OBJ_VAL) {\n stack.pop();\n return;\n }\n if (curStep === OBJ_VAL_COMPLETED) {\n // Pop OBJ_VAL_COMPLETED & OBJ_VAL\n stack.pop();\n stack.pop();\n return;\n }\n\n // Comma after arr value\n if (curStep === ARR_VAL) {\n // do nothing - basically we'd pop ARR_VAL but add it right back\n return;\n }\n\n if (curStep === ARR_VAL_COMPLETED) {\n // Pop ARR_VAL_COMPLETED\n stack.pop();\n\n // basically we'd pop ARR_VAL but add it right back\n return;\n }\n}\n\nfunction _handleObjClose(stack, curStep) {\n // Empty object {}\n if (curStep === OBJ) {\n stack.pop();\n }\n\n // Object with element\n if (curStep === OBJ_VAL) {\n // Pop OBJ_VAL, OBJ\n stack.pop();\n stack.pop();\n }\n\n // Obj with element\n if (curStep === OBJ_VAL_COMPLETED) {\n // Pop OBJ_VAL_COMPLETED, OBJ_VAL, OBJ\n stack.pop();\n stack.pop();\n stack.pop();\n }\n\n // if was obj value, complete it\n if (stack[stack.length - 1] === OBJ_VAL) {\n stack.push(OBJ_VAL_COMPLETED);\n }\n\n // if was arr value, complete it\n if (stack[stack.length - 1] === ARR_VAL) {\n stack.push(ARR_VAL_COMPLETED);\n }\n}\n\nfunction _handleArrClose(stack, curStep) {\n // Empty array []\n if (curStep === ARR) {\n stack.pop();\n }\n\n // Array with element\n if (curStep === ARR_VAL) {\n // Pop ARR_VAL, ARR\n stack.pop();\n stack.pop();\n }\n\n // Array with element\n if (curStep === ARR_VAL_COMPLETED) {\n // Pop ARR_VAL_COMPLETED, ARR_VAL, ARR\n stack.pop();\n stack.pop();\n stack.pop();\n }\n\n // if was obj value, complete it\n if (stack[stack.length - 1] === OBJ_VAL) {\n stack.push(OBJ_VAL_COMPLETED);\n }\n\n // if was arr value, complete it\n if (stack[stack.length - 1] === ARR_VAL) {\n stack.push(ARR_VAL_COMPLETED);\n }\n}\n\nfunction _isEscaped(str, pos) {\n const previousChar = str[pos - 1];\n\n return previousChar === '\\\\' && !_isEscaped(str, pos - 1);\n}\n\n/* eslint-disable max-lines */\n\n/**\n * Takes an incomplete JSON string, and returns a hopefully valid JSON string.\n * Note that this _can_ fail, so you should check the return value is valid JSON.\n */\nfunction fixJson(incompleteJson) {\n const stack = evaluateJson(incompleteJson);\n\n return completeJson(incompleteJson, stack);\n}\n\n/** Get the size of a body. */\nfunction getBodySize(\n body,\n textEncoder,\n) {\n if (!body) {\n return undefined;\n }\n\n try {\n if (typeof body === 'string') {\n return textEncoder.encode(body).length;\n }\n\n if (body instanceof URLSearchParams) {\n return textEncoder.encode(body.toString()).length;\n }\n\n if (body instanceof FormData) {\n const formDataStr = _serializeFormData(body);\n return textEncoder.encode(formDataStr).length;\n }\n\n if (body instanceof Blob) {\n return body.size;\n }\n\n if (body instanceof ArrayBuffer) {\n return body.byteLength;\n }\n\n // Currently unhandled types: ArrayBufferView, ReadableStream\n } catch (e) {\n // just return undefined\n }\n\n return undefined;\n}\n\n/** Convert a Content-Length header to number/undefined. */\nfunction parseContentLengthHeader(header) {\n if (!header) {\n return undefined;\n }\n\n const size = parseInt(header, 10);\n return isNaN(size) ? undefined : size;\n}\n\n/** Get the string representation of a body. */\nfunction getBodyString(body) {\n if (typeof body === 'string') {\n return body;\n }\n\n if (body instanceof URLSearchParams) {\n return body.toString();\n }\n\n if (body instanceof FormData) {\n return _serializeFormData(body);\n }\n\n return undefined;\n}\n\n/** Convert ReplayNetworkRequestData to a PerformanceEntry. */\nfunction makeNetworkReplayBreadcrumb(\n type,\n data,\n) {\n if (!data) {\n return null;\n }\n\n const { startTimestamp, endTimestamp, url, method, statusCode, request, response } = data;\n\n const result = {\n type,\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n name: url,\n data: dropUndefinedKeys({\n method,\n statusCode,\n request,\n response,\n }),\n };\n\n return result;\n}\n\n/** Build the request or response part of a replay network breadcrumb that was skipped. */\nfunction buildSkippedNetworkRequestOrResponse(bodySize) {\n return {\n headers: {},\n size: bodySize,\n _meta: {\n warnings: ['URL_SKIPPED'],\n },\n };\n}\n\n/** Build the request or response part of a replay network breadcrumb. */\nfunction buildNetworkRequestOrResponse(\n headers,\n bodySize,\n body,\n) {\n if (!bodySize && Object.keys(headers).length === 0) {\n return undefined;\n }\n\n if (!bodySize) {\n return {\n headers,\n };\n }\n\n if (!body) {\n return {\n headers,\n size: bodySize,\n };\n }\n\n const info = {\n headers,\n size: bodySize,\n };\n\n const { body: normalizedBody, warnings } = normalizeNetworkBody(body);\n info.body = normalizedBody;\n if (warnings.length > 0) {\n info._meta = {\n warnings,\n };\n }\n\n return info;\n}\n\n/** Filter a set of headers */\nfunction getAllowedHeaders(headers, allowedHeaders) {\n return Object.keys(headers).reduce((filteredHeaders, key) => {\n const normalizedKey = key.toLowerCase();\n // Avoid putting empty strings into the headers\n if (allowedHeaders.includes(normalizedKey) && headers[key]) {\n filteredHeaders[normalizedKey] = headers[key];\n }\n return filteredHeaders;\n }, {});\n}\n\nfunction _serializeFormData(formData) {\n // This is a bit simplified, but gives us a decent estimate\n // This converts e.g. { name: 'Anne Smith', age: 13 } to 'name=Anne+Smith&age=13'\n // @ts-ignore passing FormData to URLSearchParams actually works\n return new URLSearchParams(formData).toString();\n}\n\nfunction normalizeNetworkBody(body)\n\n {\n if (!body || typeof body !== 'string') {\n return {\n body,\n warnings: [],\n };\n }\n\n const exceedsSizeLimit = body.length > NETWORK_BODY_MAX_SIZE;\n\n if (_strIsProbablyJson(body)) {\n try {\n const json = exceedsSizeLimit ? fixJson(body.slice(0, NETWORK_BODY_MAX_SIZE)) : body;\n const normalizedBody = JSON.parse(json);\n return {\n body: normalizedBody,\n warnings: exceedsSizeLimit ? ['JSON_TRUNCATED'] : [],\n };\n } catch (e3) {\n return {\n body: exceedsSizeLimit ? `${body.slice(0, NETWORK_BODY_MAX_SIZE)}…` : body,\n warnings: exceedsSizeLimit ? ['INVALID_JSON', 'TEXT_TRUNCATED'] : ['INVALID_JSON'],\n };\n }\n }\n\n return {\n body: exceedsSizeLimit ? `${body.slice(0, NETWORK_BODY_MAX_SIZE)}…` : body,\n warnings: exceedsSizeLimit ? ['TEXT_TRUNCATED'] : [],\n };\n}\n\nfunction _strIsProbablyJson(str) {\n const first = str[0];\n const last = str[str.length - 1];\n\n // Simple check: If this does not start & end with {} or [], it's not JSON\n return (first === '[' && last === ']') || (first === '{' && last === '}');\n}\n\n/** Match an URL against a list of strings/Regex. */\nfunction urlMatches(url, urls) {\n const fullUrl = getFullUrl(url);\n\n return stringMatchesSomePattern(fullUrl, urls);\n}\n\n/** exported for tests */\nfunction getFullUrl(url, baseURI = WINDOW.document.baseURI) {\n // Short circuit for common cases:\n if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith(WINDOW.location.origin)) {\n return url;\n }\n const fixedUrl = new URL(url, baseURI);\n\n // If these do not match, we are not dealing with a relative URL, so just return it\n if (fixedUrl.origin !== new URL(baseURI).origin) {\n return url;\n }\n\n const fullUrl = fixedUrl.href;\n\n // Remove trailing slashes, if they don't match the original URL\n if (!url.endsWith('/') && fullUrl.endsWith('/')) {\n return fullUrl.slice(0, -1);\n }\n\n return fullUrl;\n}\n\n/**\n * Capture a fetch breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nasync function captureFetchBreadcrumbToReplay(\n breadcrumb,\n hint,\n options\n\n,\n) {\n try {\n const data = await _prepareFetchData(breadcrumb, hint, options);\n\n // Create a replay performance entry from this breadcrumb\n const result = makeNetworkReplayBreadcrumb('resource.fetch', data);\n addNetworkBreadcrumb(options.replay, result);\n } catch (error) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Failed to capture fetch breadcrumb', error);\n }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nfunction enrichFetchBreadcrumb(\n breadcrumb,\n hint,\n options,\n) {\n const { input, response } = hint;\n\n const body = _getFetchRequestArgBody(input);\n const reqSize = getBodySize(body, options.textEncoder);\n\n const resSize = response ? parseContentLengthHeader(response.headers.get('content-length')) : undefined;\n\n if (reqSize !== undefined) {\n breadcrumb.data.request_body_size = reqSize;\n }\n if (resSize !== undefined) {\n breadcrumb.data.response_body_size = resSize;\n }\n}\n\nasync function _prepareFetchData(\n breadcrumb,\n hint,\n options\n\n,\n) {\n const { startTimestamp, endTimestamp } = hint;\n\n const {\n url,\n method,\n status_code: statusCode = 0,\n request_body_size: requestBodySize,\n response_body_size: responseBodySize,\n } = breadcrumb.data;\n\n const captureDetails =\n urlMatches(url, options.networkDetailAllowUrls) && !urlMatches(url, options.networkDetailDenyUrls);\n\n const request = captureDetails\n ? _getRequestInfo(options, hint.input, requestBodySize)\n : buildSkippedNetworkRequestOrResponse(requestBodySize);\n const response = await _getResponseInfo(captureDetails, options, hint.response, responseBodySize);\n\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n}\n\nfunction _getRequestInfo(\n { networkCaptureBodies, networkRequestHeaders },\n input,\n requestBodySize,\n) {\n const headers = getRequestHeaders(input, networkRequestHeaders);\n\n if (!networkCaptureBodies) {\n return buildNetworkRequestOrResponse(headers, requestBodySize, undefined);\n }\n\n // We only want to transmit string or string-like bodies\n const requestBody = _getFetchRequestArgBody(input);\n const bodyStr = getBodyString(requestBody);\n return buildNetworkRequestOrResponse(headers, requestBodySize, bodyStr);\n}\n\nasync function _getResponseInfo(\n captureDetails,\n {\n networkCaptureBodies,\n textEncoder,\n networkResponseHeaders,\n }\n\n,\n response,\n responseBodySize,\n) {\n if (!captureDetails && responseBodySize !== undefined) {\n return buildSkippedNetworkRequestOrResponse(responseBodySize);\n }\n\n const headers = getAllHeaders(response.headers, networkResponseHeaders);\n\n if (!networkCaptureBodies && responseBodySize !== undefined) {\n return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n }\n\n // Only clone the response if we need to\n try {\n // We have to clone this, as the body can only be read once\n const res = response.clone();\n const bodyText = await _parseFetchBody(res);\n\n const size =\n bodyText && bodyText.length && responseBodySize === undefined\n ? getBodySize(bodyText, textEncoder)\n : responseBodySize;\n\n if (!captureDetails) {\n return buildSkippedNetworkRequestOrResponse(size);\n }\n\n if (networkCaptureBodies) {\n return buildNetworkRequestOrResponse(headers, size, bodyText);\n }\n\n return buildNetworkRequestOrResponse(headers, size, undefined);\n } catch (e) {\n // fallback\n return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n }\n}\n\nasync function _parseFetchBody(response) {\n try {\n return await response.text();\n } catch (e2) {\n return undefined;\n }\n}\n\nfunction _getFetchRequestArgBody(fetchArgs = []) {\n // We only support getting the body from the fetch options\n if (fetchArgs.length !== 2 || typeof fetchArgs[1] !== 'object') {\n return undefined;\n }\n\n return (fetchArgs[1] ).body;\n}\n\nfunction getAllHeaders(headers, allowedHeaders) {\n const allHeaders = {};\n\n allowedHeaders.forEach(header => {\n if (headers.get(header)) {\n allHeaders[header] = headers.get(header) ;\n }\n });\n\n return allHeaders;\n}\n\nfunction getRequestHeaders(fetchArgs, allowedHeaders) {\n if (fetchArgs.length === 1 && typeof fetchArgs[0] !== 'string') {\n return getHeadersFromOptions(fetchArgs[0] , allowedHeaders);\n }\n\n if (fetchArgs.length === 2) {\n return getHeadersFromOptions(fetchArgs[1] , allowedHeaders);\n }\n\n return {};\n}\n\nfunction getHeadersFromOptions(\n input,\n allowedHeaders,\n) {\n if (!input) {\n return {};\n }\n\n const headers = input.headers;\n\n if (!headers) {\n return {};\n }\n\n if (headers instanceof Headers) {\n return getAllHeaders(headers, allowedHeaders);\n }\n\n // We do not support this, as it is not really documented (anymore?)\n if (Array.isArray(headers)) {\n return {};\n }\n\n return getAllowedHeaders(headers, allowedHeaders);\n}\n\n/**\n * Capture an XHR breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nasync function captureXhrBreadcrumbToReplay(\n breadcrumb,\n hint,\n options,\n) {\n try {\n const data = _prepareXhrData(breadcrumb, hint, options);\n\n // Create a replay performance entry from this breadcrumb\n const result = makeNetworkReplayBreadcrumb('resource.xhr', data);\n addNetworkBreadcrumb(options.replay, result);\n } catch (error) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Failed to capture fetch breadcrumb', error);\n }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nfunction enrichXhrBreadcrumb(\n breadcrumb,\n hint,\n options,\n) {\n const { xhr, input } = hint;\n\n const reqSize = getBodySize(input, options.textEncoder);\n const resSize = xhr.getResponseHeader('content-length')\n ? parseContentLengthHeader(xhr.getResponseHeader('content-length'))\n : getBodySize(xhr.response, options.textEncoder);\n\n if (reqSize !== undefined) {\n breadcrumb.data.request_body_size = reqSize;\n }\n if (resSize !== undefined) {\n breadcrumb.data.response_body_size = resSize;\n }\n}\n\nfunction _prepareXhrData(\n breadcrumb,\n hint,\n options,\n) {\n const { startTimestamp, endTimestamp, input, xhr } = hint;\n\n const {\n url,\n method,\n status_code: statusCode = 0,\n request_body_size: requestBodySize,\n response_body_size: responseBodySize,\n } = breadcrumb.data;\n\n if (!url) {\n return null;\n }\n\n if (!urlMatches(url, options.networkDetailAllowUrls) || urlMatches(url, options.networkDetailDenyUrls)) {\n const request = buildSkippedNetworkRequestOrResponse(requestBodySize);\n const response = buildSkippedNetworkRequestOrResponse(responseBodySize);\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n }\n\n const xhrInfo = xhr[SENTRY_XHR_DATA_KEY];\n const networkRequestHeaders = xhrInfo\n ? getAllowedHeaders(xhrInfo.request_headers, options.networkRequestHeaders)\n : {};\n const networkResponseHeaders = getAllowedHeaders(getResponseHeaders(xhr), options.networkResponseHeaders);\n\n const request = buildNetworkRequestOrResponse(\n networkRequestHeaders,\n requestBodySize,\n options.networkCaptureBodies ? getBodyString(input) : undefined,\n );\n const response = buildNetworkRequestOrResponse(\n networkResponseHeaders,\n responseBodySize,\n options.networkCaptureBodies ? hint.xhr.responseText : undefined,\n );\n\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n}\n\nfunction getResponseHeaders(xhr) {\n const headers = xhr.getAllResponseHeaders();\n\n if (!headers) {\n return {};\n }\n\n return headers.split('\\r\\n').reduce((acc, line) => {\n const [key, value] = line.split(': ');\n acc[key.toLowerCase()] = value;\n return acc;\n }, {});\n}\n\n/**\n * This method does two things:\n * - It enriches the regular XHR/fetch breadcrumbs with request/response size data\n * - It captures the XHR/fetch breadcrumbs to the replay\n * (enriching it with further data that is _not_ added to the regular breadcrumbs)\n */\nfunction handleNetworkBreadcrumbs(replay) {\n const client = getCurrentHub().getClient();\n\n try {\n const textEncoder = new TextEncoder();\n\n const {\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n } = replay.getOptions();\n\n const options = {\n replay,\n textEncoder,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n };\n\n if (client && client.on) {\n client.on('beforeAddBreadcrumb', (breadcrumb, hint) => beforeAddNetworkBreadcrumb(options, breadcrumb, hint));\n } else {\n // Fallback behavior\n addInstrumentationHandler('fetch', handleFetchSpanListener(replay));\n addInstrumentationHandler('xhr', handleXhrSpanListener(replay));\n }\n } catch (e2) {\n // Do nothing\n }\n}\n\n/** just exported for tests */\nfunction beforeAddNetworkBreadcrumb(\n options,\n breadcrumb,\n hint,\n) {\n if (!breadcrumb.data) {\n return;\n }\n\n try {\n if (_isXhrBreadcrumb(breadcrumb) && _isXhrHint(hint)) {\n // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n // So any async mutations to it will not be reflected in the final breadcrumb\n enrichXhrBreadcrumb(breadcrumb, hint, options);\n\n void captureXhrBreadcrumbToReplay(breadcrumb, hint, options);\n }\n\n if (_isFetchBreadcrumb(breadcrumb) && _isFetchHint(hint)) {\n // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n // So any async mutations to it will not be reflected in the final breadcrumb\n enrichFetchBreadcrumb(breadcrumb, hint, options);\n\n void captureFetchBreadcrumbToReplay(breadcrumb, hint, options);\n }\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Error when enriching network breadcrumb');\n }\n}\n\nfunction _isXhrBreadcrumb(breadcrumb) {\n return breadcrumb.category === 'xhr';\n}\n\nfunction _isFetchBreadcrumb(breadcrumb) {\n return breadcrumb.category === 'fetch';\n}\n\nfunction _isXhrHint(hint) {\n return hint && hint.xhr;\n}\n\nfunction _isFetchHint(hint) {\n return hint && hint.response;\n}\n\nlet _LAST_BREADCRUMB = null;\n\nfunction isBreadcrumbWithCategory(breadcrumb) {\n return !!breadcrumb.category;\n}\n\nconst handleScopeListener =\n (replay) =>\n (scope) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleScope(scope);\n\n if (!result) {\n return;\n }\n\n addBreadcrumbEvent(replay, result);\n };\n\n/**\n * An event handler to handle scope changes.\n */\nfunction handleScope(scope) {\n // TODO (v8): Remove this guard. This was put in place because we introduced\n // Scope.getLastBreadcrumb mid-v7 which caused incompatibilities with older SDKs.\n // For now, we'll just return null if the method doesn't exist but we should eventually\n // get rid of this guard.\n const newBreadcrumb = scope.getLastBreadcrumb && scope.getLastBreadcrumb();\n\n // Listener can be called when breadcrumbs have not changed, so we store the\n // reference to the last crumb and only return a crumb if it has changed\n if (_LAST_BREADCRUMB === newBreadcrumb || !newBreadcrumb) {\n return null;\n }\n\n _LAST_BREADCRUMB = newBreadcrumb;\n\n if (\n !isBreadcrumbWithCategory(newBreadcrumb) ||\n ['fetch', 'xhr', 'sentry.event', 'sentry.transaction'].includes(newBreadcrumb.category) ||\n newBreadcrumb.category.startsWith('ui.')\n ) {\n return null;\n }\n\n if (newBreadcrumb.category === 'console') {\n return normalizeConsoleBreadcrumb(newBreadcrumb);\n }\n\n return createBreadcrumb(newBreadcrumb);\n}\n\n/** exported for tests only */\nfunction normalizeConsoleBreadcrumb(\n breadcrumb,\n) {\n const args = breadcrumb.data && breadcrumb.data.arguments;\n\n if (!Array.isArray(args) || args.length === 0) {\n return createBreadcrumb(breadcrumb);\n }\n\n let isTruncated = false;\n\n // Avoid giant args captures\n const normalizedArgs = args.map(arg => {\n if (!arg) {\n return arg;\n }\n if (typeof arg === 'string') {\n if (arg.length > CONSOLE_ARG_MAX_SIZE) {\n isTruncated = true;\n return `${arg.slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n }\n\n return arg;\n }\n if (typeof arg === 'object') {\n try {\n const normalizedArg = normalize(arg, 7);\n const stringified = JSON.stringify(normalizedArg);\n if (stringified.length > CONSOLE_ARG_MAX_SIZE) {\n const fixedJson = fixJson(stringified.slice(0, CONSOLE_ARG_MAX_SIZE));\n const json = JSON.parse(fixedJson);\n // We only set this after JSON.parse() was successfull, so we know we didn't run into `catch`\n isTruncated = true;\n return json;\n }\n return normalizedArg;\n } catch (e) {\n // fall back to default\n }\n }\n\n return arg;\n });\n\n return createBreadcrumb({\n ...breadcrumb,\n data: {\n ...breadcrumb.data,\n arguments: normalizedArgs,\n ...(isTruncated ? { _meta: { warnings: ['CONSOLE_ARG_TRUNCATED'] } } : {}),\n },\n });\n}\n\n/**\n * Add global listeners that cannot be removed.\n */\nfunction addGlobalListeners(replay) {\n // Listeners from core SDK //\n const scope = getCurrentHub().getScope();\n const client = getCurrentHub().getClient();\n\n if (scope) {\n scope.addScopeListener(handleScopeListener(replay));\n }\n addInstrumentationHandler('dom', handleDomListener(replay));\n addInstrumentationHandler('history', handleHistorySpanListener(replay));\n handleNetworkBreadcrumbs(replay);\n\n // Tag all (non replay) events that get sent to Sentry with the current\n // replay ID so that we can reference them later in the UI\n addGlobalEventProcessor(handleGlobalEventListener(replay, !hasHooks(client)));\n\n // If a custom client has no hooks yet, we continue to use the \"old\" implementation\n if (hasHooks(client)) {\n client.on('afterSendEvent', handleAfterSendEvent(replay));\n client.on('createDsc', (dsc) => {\n const replayId = replay.getSessionId();\n // We do not want to set the DSC when in buffer mode, as that means the replay has not been sent (yet)\n if (replayId && replay.isEnabled() && replay.recordingMode === 'session') {\n dsc.replay_id = replayId;\n }\n });\n\n client.on('startTransaction', transaction => {\n replay.lastTransaction = transaction;\n });\n\n // We may be missing the initial startTransaction due to timing issues,\n // so we capture it on finish again.\n client.on('finishTransaction', transaction => {\n replay.lastTransaction = transaction;\n });\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasHooks(client) {\n return !!(client && client.on);\n}\n\n/**\n * Create a \"span\" for the total amount of memory being used by JS objects\n * (including v8 internal objects).\n */\nasync function addMemoryEntry(replay) {\n // window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this\n try {\n return Promise.all(\n createPerformanceSpans(replay, [\n // @ts-ignore memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)\n createMemoryEntry(WINDOW.performance.memory),\n ]),\n );\n } catch (error) {\n // Do nothing\n return [];\n }\n}\n\nfunction createMemoryEntry(memoryEntry) {\n const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;\n // we don't want to use `getAbsoluteTime` because it adds the event time to the\n // time origin, so we get the current timestamp instead\n const time = Date.now() / 1000;\n return {\n type: 'memory',\n name: 'memory',\n start: time,\n end: time,\n data: {\n memory: {\n jsHeapSizeLimit,\n totalJSHeapSize,\n usedJSHeapSize,\n },\n },\n };\n}\n\n// Map entryType -> function to normalize data for event\n// @ts-ignore TODO: entry type does not fit the create* functions entry type\nconst ENTRY_TYPES\n\n = {\n // @ts-ignore TODO: entry type does not fit the create* functions entry type\n resource: createResourceEntry,\n paint: createPaintEntry,\n // @ts-ignore TODO: entry type does not fit the create* functions entry type\n navigation: createNavigationEntry,\n // @ts-ignore TODO: entry type does not fit the create* functions entry type\n ['largest-contentful-paint']: createLargestContentfulPaint,\n};\n\n/**\n * Create replay performance entries from the browser performance entries.\n */\nfunction createPerformanceEntries(\n entries,\n) {\n return entries.map(createPerformanceEntry).filter(Boolean) ;\n}\n\nfunction createPerformanceEntry(entry) {\n if (ENTRY_TYPES[entry.entryType] === undefined) {\n return null;\n }\n\n return ENTRY_TYPES[entry.entryType](entry);\n}\n\nfunction getAbsoluteTime(time) {\n // browserPerformanceTimeOrigin can be undefined if `performance` or\n // `performance.now` doesn't exist, but this is already checked by this integration\n return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;\n}\n\nfunction createPaintEntry(entry) {\n const { duration, entryType, name, startTime } = entry;\n\n const start = getAbsoluteTime(startTime);\n return {\n type: entryType,\n name,\n start,\n end: start + duration,\n data: undefined,\n };\n}\n\nfunction createNavigationEntry(entry) {\n const {\n entryType,\n name,\n decodedBodySize,\n duration,\n domComplete,\n encodedBodySize,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n domInteractive,\n loadEventStart,\n loadEventEnd,\n redirectCount,\n startTime,\n transferSize,\n type,\n } = entry;\n\n // Ignore entries with no duration, they do not seem to be useful and cause dupes\n if (duration === 0) {\n return null;\n }\n\n return {\n type: `${entryType}.${type}`,\n start: getAbsoluteTime(startTime),\n end: getAbsoluteTime(domComplete),\n name,\n data: {\n size: transferSize,\n decodedBodySize,\n encodedBodySize,\n duration,\n domInteractive,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n loadEventStart,\n loadEventEnd,\n domComplete,\n redirectCount,\n },\n };\n}\n\nfunction createResourceEntry(\n entry,\n) {\n const {\n entryType,\n initiatorType,\n name,\n responseEnd,\n startTime,\n decodedBodySize,\n encodedBodySize,\n responseStatus,\n transferSize,\n } = entry;\n\n // Core SDK handles these\n if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {\n return null;\n }\n\n return {\n type: `${entryType}.${initiatorType}`,\n start: getAbsoluteTime(startTime),\n end: getAbsoluteTime(responseEnd),\n name,\n data: {\n size: transferSize,\n statusCode: responseStatus,\n decodedBodySize,\n encodedBodySize,\n },\n };\n}\n\nfunction createLargestContentfulPaint(\n entry,\n) {\n const { entryType, startTime, size } = entry;\n\n let startTimeOrNavigationActivation = 0;\n\n if (WINDOW.performance) {\n const navEntry = WINDOW.performance.getEntriesByType('navigation')[0]\n\n;\n\n // See https://github.com/GoogleChrome/web-vitals/blob/9f11c4c6578fb4c5ee6fa4e32b9d1d756475f135/src/lib/getActivationStart.ts#L21\n startTimeOrNavigationActivation = (navEntry && navEntry.activationStart) || 0;\n }\n\n // value is in ms\n const value = Math.max(startTime - startTimeOrNavigationActivation, 0);\n // LCP doesn't have a \"duration\", it just happens at a single point in time.\n // But the UI expects both, so use end (in seconds) for both timestamps.\n const end = getAbsoluteTime(startTimeOrNavigationActivation) + value / 1000;\n\n return {\n type: entryType,\n name: entryType,\n start: end,\n end,\n data: {\n value, // LCP \"duration\" in ms\n size,\n // Not sure why this errors, Node should be correct (Argument of type 'Node' is not assignable to parameter of type 'INode')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodeId: record.mirror.getId(entry.element ),\n },\n };\n}\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n * was already invoked in the meantime, return @param func's return value.\n * The debounced function has two additional properties:\n * - `flush`: Invokes the debounced function immediately and returns its return value\n * - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nfunction debounce(func, wait, options) {\n let callbackReturnValue;\n\n let timerId;\n let maxTimerId;\n\n const maxWait = options && options.maxWait ? Math.max(options.maxWait, wait) : 0;\n\n function invokeFunc() {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers() {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush() {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced() {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeout(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeout(invokeFunc, maxWait);\n }\n\n return callbackReturnValue;\n }\n\n debounced.cancel = cancelTimers;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Handler for recording events.\n *\n * Adds to event buffer, and has varying flushing behaviors if the event was a checkout.\n */\nfunction getHandleRecordingEmit(replay) {\n let hadFirstEvent = false;\n\n return (event, _isCheckout) => {\n // If this is false, it means session is expired, create and a new session and wait for checkout\n if (!replay.checkAndHandleExpiredSession()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Replay] Received replay event after session expired.');\n\n return;\n }\n\n // `_isCheckout` is only set when the checkout is due to `checkoutEveryNms`\n // We also want to treat the first event as a checkout, so we handle this specifically here\n const isCheckout = _isCheckout || !hadFirstEvent;\n hadFirstEvent = true;\n\n // The handler returns `true` if we do not want to trigger debounced flush, `false` if we want to debounce flush.\n replay.addUpdate(() => {\n // The session is always started immediately on pageload/init, but for\n // error-only replays, it should reflect the most recent checkout\n // when an error occurs. Clear any state that happens before this current\n // checkout. This needs to happen before `addEvent()` which updates state\n // dependent on this reset.\n if (replay.recordingMode === 'buffer' && isCheckout) {\n replay.setInitialState();\n }\n\n // We need to clear existing events on a checkout, otherwise they are\n // incremental event updates and should be appended\n void addEvent(replay, event, isCheckout);\n\n // Different behavior for full snapshots (type=2), ignore other event types\n // See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16\n if (!isCheckout) {\n return false;\n }\n\n // Additionally, create a meta event that will capture certain SDK settings.\n // In order to handle buffer mode, this needs to either be done when we\n // receive checkout events or at flush time.\n //\n // `isCheckout` is always true, but want to be explicit that it should\n // only be added for checkouts\n void addSettingsEvent(replay, isCheckout);\n\n // If there is a previousSessionId after a full snapshot occurs, then\n // the replay session was started due to session expiration. The new session\n // is started before triggering a new checkout and contains the id\n // of the previous session. Do not immediately flush in this case\n // to avoid capturing only the checkout and instead the replay will\n // be captured if they perform any follow-up actions.\n if (replay.session && replay.session.previousSessionId) {\n return true;\n }\n\n // When in buffer mode, make sure we adjust the session started date to the current earliest event of the buffer\n // this should usually be the timestamp of the checkout event, but to be safe...\n if (replay.recordingMode === 'buffer' && replay.session && replay.eventBuffer) {\n const earliestEvent = replay.eventBuffer.getEarliestTimestamp();\n if (earliestEvent) {\n // eslint-disable-next-line no-console\n const log = replay.getOptions()._experiments.traceInternals ? console.info : logger.info;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n log(`[Replay] Updating session start time to earliest event in buffer at ${earliestEvent}`);\n\n replay.session.started = earliestEvent;\n\n if (replay.getOptions().stickySession) {\n saveSession(replay.session);\n }\n }\n }\n\n if (replay.recordingMode === 'session') {\n // If the full snapshot is due to an initial load, we will not have\n // a previous session ID. In this case, we want to buffer events\n // for a set amount of time before flushing. This can help avoid\n // capturing replays of users that immediately close the window.\n void replay.flush();\n }\n\n return true;\n });\n };\n}\n\n/**\n * Exported for tests\n */\nfunction createOptionsEvent(replay) {\n const options = replay.getOptions();\n return {\n type: EventType.Custom,\n timestamp: Date.now(),\n data: {\n tag: 'options',\n payload: {\n sessionSampleRate: options.sessionSampleRate,\n errorSampleRate: options.errorSampleRate,\n useCompressionOption: options.useCompression,\n blockAllMedia: options.blockAllMedia,\n maskAllText: options.maskAllText,\n maskAllInputs: options.maskAllInputs,\n useCompression: replay.eventBuffer ? replay.eventBuffer.type === 'worker' : false,\n networkDetailHasUrls: options.networkDetailAllowUrls.length > 0,\n networkCaptureBodies: options.networkCaptureBodies,\n networkRequestHasHeaders: options.networkRequestHeaders.length > 0,\n networkResponseHasHeaders: options.networkResponseHeaders.length > 0,\n },\n },\n };\n}\n\n/**\n * Add a \"meta\" event that contains a simplified view on current configuration\n * options. This should only be included on the first segment of a recording.\n */\nfunction addSettingsEvent(replay, isCheckout) {\n // Only need to add this event when sending the first segment\n if (!isCheckout || !replay.session || replay.session.segmentId !== 0) {\n return Promise.resolve(null);\n }\n\n return addEvent(replay, createOptionsEvent(replay), false);\n}\n\n/**\n * Create a replay envelope ready to be sent.\n * This includes both the replay event, as well as the recording data.\n */\nfunction createReplayEnvelope(\n replayEvent,\n recordingData,\n dsn,\n tunnel,\n) {\n return createEnvelope(\n createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),\n [\n [{ type: 'replay_event' }, replayEvent],\n [\n {\n type: 'replay_recording',\n // If string then we need to encode to UTF8, otherwise will have\n // wrong size. TextEncoder has similar browser support to\n // MutationObserver, although it does not accept IE11.\n length:\n typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,\n },\n recordingData,\n ],\n ],\n );\n}\n\n/**\n * Prepare the recording data ready to be sent.\n */\nfunction prepareRecordingData({\n recordingData,\n headers,\n}\n\n) {\n let payloadWithSequence;\n\n // XXX: newline is needed to separate sequence id from events\n const replayHeaders = `${JSON.stringify(headers)}\n`;\n\n if (typeof recordingData === 'string') {\n payloadWithSequence = `${replayHeaders}${recordingData}`;\n } else {\n const enc = new TextEncoder();\n // XXX: newline is needed to separate sequence id from events\n const sequence = enc.encode(replayHeaders);\n // Merge the two Uint8Arrays\n payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);\n payloadWithSequence.set(sequence);\n payloadWithSequence.set(recordingData, sequence.length);\n }\n\n return payloadWithSequence;\n}\n\n/**\n * Prepare a replay event & enrich it with the SDK metadata.\n */\nasync function prepareReplayEvent({\n client,\n scope,\n replayId: event_id,\n event,\n}\n\n) {\n const integrations =\n typeof client._integrations === 'object' && client._integrations !== null && !Array.isArray(client._integrations)\n ? Object.keys(client._integrations)\n : undefined;\n const preparedEvent = (await prepareEvent(\n client.getOptions(),\n event,\n { event_id, integrations },\n scope,\n )) ;\n\n // If e.g. a global event processor returned null\n if (!preparedEvent) {\n return null;\n }\n\n // This normally happens in browser client \"_prepareEvent\"\n // but since we do not use this private method from the client, but rather the plain import\n // we need to do this manually.\n preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n // extract the SDK name because `client._prepareEvent` doesn't add it to the event\n const metadata = client.getSdkMetadata && client.getSdkMetadata();\n const { name, version } = (metadata && metadata.sdk) || {};\n\n preparedEvent.sdk = {\n ...preparedEvent.sdk,\n name: name || 'sentry.javascript.unknown',\n version: version || '0.0.0',\n };\n\n return preparedEvent;\n}\n\n/**\n * Send replay attachment using `fetch()`\n */\nasync function sendReplayRequest({\n recordingData,\n replayId,\n segmentId: segment_id,\n eventContext,\n timestamp,\n session,\n}) {\n const preparedRecordingData = prepareRecordingData({\n recordingData,\n headers: {\n segment_id,\n },\n });\n\n const { urls, errorIds, traceIds, initialTimestamp } = eventContext;\n\n const hub = getCurrentHub();\n const client = hub.getClient();\n const scope = hub.getScope();\n const transport = client && client.getTransport();\n const dsn = client && client.getDsn();\n\n if (!client || !transport || !dsn || !session.sampled) {\n return;\n }\n\n const baseEvent = {\n type: REPLAY_EVENT_NAME,\n replay_start_timestamp: initialTimestamp / 1000,\n timestamp: timestamp / 1000,\n error_ids: errorIds,\n trace_ids: traceIds,\n urls,\n replay_id: replayId,\n segment_id,\n replay_type: session.sampled,\n };\n\n const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });\n\n if (!replayEvent) {\n // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n client.recordDroppedEvent('event_processor', 'replay', baseEvent);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('An event processor returned `null`, will not send event.');\n return;\n }\n\n /*\n For reference, the fully built event looks something like this:\n {\n \"type\": \"replay_event\",\n \"timestamp\": 1670837008.634,\n \"error_ids\": [\n \"errorId\"\n ],\n \"trace_ids\": [\n \"traceId\"\n ],\n \"urls\": [\n \"https://example.com\"\n ],\n \"replay_id\": \"eventId\",\n \"segment_id\": 3,\n \"replay_type\": \"error\",\n \"platform\": \"javascript\",\n \"event_id\": \"eventId\",\n \"environment\": \"production\",\n \"sdk\": {\n \"integrations\": [\n \"BrowserTracing\",\n \"Replay\"\n ],\n \"name\": \"sentry.javascript.browser\",\n \"version\": \"7.25.0\"\n },\n \"sdkProcessingMetadata\": {},\n \"contexts\": {\n },\n }\n */\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete replayEvent.sdkProcessingMetadata;\n\n const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);\n\n let response;\n\n try {\n response = await transport.send(envelope);\n } catch (err) {\n const error = new Error(UNABLE_TO_SEND_REPLAY);\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-ignore This needs lib es2022 and newer\n error.cause = err;\n } catch (e) {\n // nothing to do\n }\n throw error;\n }\n\n // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n if (!response) {\n return response;\n }\n\n // If the status code is invalid, we want to immediately stop & not retry\n if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n throw new TransportStatusCodeError(response.statusCode);\n }\n\n return response;\n}\n\n/**\n * This error indicates that the transport returned an invalid status code.\n */\nclass TransportStatusCodeError extends Error {\n constructor(statusCode) {\n super(`Transport returned status code ${statusCode}`);\n }\n}\n\n/**\n * Finalize and send the current replay event to Sentry\n */\nasync function sendReplay(\n replayData,\n retryConfig = {\n count: 0,\n interval: RETRY_BASE_INTERVAL,\n },\n) {\n const { recordingData, options } = replayData;\n\n // short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)\n if (!recordingData.length) {\n return;\n }\n\n try {\n await sendReplayRequest(replayData);\n return true;\n } catch (err) {\n if (err instanceof TransportStatusCodeError) {\n throw err;\n }\n\n // Capture error for every failed replay\n setContext('Replays', {\n _retryCount: retryConfig.count,\n });\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && options._experiments && options._experiments.captureExceptions) {\n captureException(err);\n }\n\n // If an error happened here, it's likely that uploading the attachment\n // failed, we'll can retry with the same events payload\n if (retryConfig.count >= RETRY_MAX_COUNT) {\n const error = new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-ignore This needs lib es2022 and newer\n error.cause = err;\n } catch (e) {\n // nothing to do\n }\n\n throw error;\n }\n\n // will retry in intervals of 5, 10, 30\n retryConfig.interval *= ++retryConfig.count;\n\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n await sendReplay(replayData, retryConfig);\n resolve(true);\n } catch (err) {\n reject(err);\n }\n }, retryConfig.interval);\n });\n }\n}\n\nconst THROTTLED = '__THROTTLED';\nconst SKIPPED = '__SKIPPED';\n\n/**\n * Create a throttled function off a given function.\n * When calling the throttled function, it will call the original function only\n * if it hasn't been called more than `maxCount` times in the last `durationSeconds`.\n *\n * Returns `THROTTLED` if throttled for the first time, after that `SKIPPED`,\n * or else the return value of the original function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction throttle(\n fn,\n maxCount,\n durationSeconds,\n) {\n const counter = new Map();\n\n const _cleanup = (now) => {\n const threshold = now - durationSeconds;\n counter.forEach((_value, key) => {\n if (key < threshold) {\n counter.delete(key);\n }\n });\n };\n\n const _getTotalCount = () => {\n return [...counter.values()].reduce((a, b) => a + b, 0);\n };\n\n let isThrottled = false;\n\n return (...rest) => {\n // Date in second-precision, which we use as basis for the throttling\n const now = Math.floor(Date.now() / 1000);\n\n // First, make sure to delete any old entries\n _cleanup(now);\n\n // If already over limit, do nothing\n if (_getTotalCount() >= maxCount) {\n const wasThrottled = isThrottled;\n isThrottled = true;\n return wasThrottled ? SKIPPED : THROTTLED;\n }\n\n isThrottled = false;\n const count = counter.get(now) || 0;\n counter.set(now, count + 1);\n\n return fn(...rest);\n };\n}\n\n/* eslint-disable max-lines */ // TODO: We might want to split this file up\n\n/**\n * The main replay container class, which holds all the state and methods for recording and sending replays.\n */\nclass ReplayContainer {\n __init() {this.eventBuffer = null;}\n\n /**\n * List of PerformanceEntry from PerformanceObserver\n */\n __init2() {this.performanceEvents = [];}\n\n /**\n * Recording can happen in one of three modes:\n * - session: Record the whole session, sending it continuously\n * - buffer: Always keep the last 60s of recording, requires:\n * - having replaysOnErrorSampleRate > 0 to capture replay when an error occurs\n * - or calling `flush()` to send the replay\n */\n __init3() {this.recordingMode = 'session';}\n\n /**\n * The current or last active transcation.\n * This is only available when performance is enabled.\n */\n\n /**\n * These are here so we can overwrite them in tests etc.\n * @hidden\n */\n __init4() {this.timeouts = {\n sessionIdlePause: SESSION_IDLE_PAUSE_DURATION,\n sessionIdleExpire: SESSION_IDLE_EXPIRE_DURATION,\n maxSessionLife: MAX_SESSION_LIFE,\n }; }\n\n /**\n * Options to pass to `rrweb.record()`\n */\n\n __init5() {this._performanceObserver = null;}\n\n __init6() {this._flushLock = null;}\n\n /**\n * Timestamp of the last user activity. This lives across sessions.\n */\n __init7() {this._lastActivity = Date.now();}\n\n /**\n * Is the integration currently active?\n */\n __init8() {this._isEnabled = false;}\n\n /**\n * Paused is a state where:\n * - DOM Recording is not listening at all\n * - Nothing will be added to event buffer (e.g. core SDK events)\n */\n __init9() {this._isPaused = false;}\n\n /**\n * Have we attached listeners to the core SDK?\n * Note we have to track this as there is no way to remove instrumentation handlers.\n */\n __init10() {this._hasInitializedCoreListeners = false;}\n\n /**\n * Function to stop recording\n */\n __init11() {this._stopRecording = null;}\n\n __init12() {this._context = {\n errorIds: new Set(),\n traceIds: new Set(),\n urls: [],\n initialTimestamp: Date.now(),\n initialUrl: '',\n };}\n\n constructor({\n options,\n recordingOptions,\n }\n\n) {ReplayContainer.prototype.__init.call(this);ReplayContainer.prototype.__init2.call(this);ReplayContainer.prototype.__init3.call(this);ReplayContainer.prototype.__init4.call(this);ReplayContainer.prototype.__init5.call(this);ReplayContainer.prototype.__init6.call(this);ReplayContainer.prototype.__init7.call(this);ReplayContainer.prototype.__init8.call(this);ReplayContainer.prototype.__init9.call(this);ReplayContainer.prototype.__init10.call(this);ReplayContainer.prototype.__init11.call(this);ReplayContainer.prototype.__init12.call(this);ReplayContainer.prototype.__init13.call(this);ReplayContainer.prototype.__init14.call(this);ReplayContainer.prototype.__init15.call(this);ReplayContainer.prototype.__init16.call(this);ReplayContainer.prototype.__init17.call(this);ReplayContainer.prototype.__init18.call(this);\n this._recordingOptions = recordingOptions;\n this._options = options;\n\n this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {\n maxWait: this._options.flushMaxDelay,\n });\n\n this._throttledAddEvent = throttle(\n (event, isCheckout) => addEvent(this, event, isCheckout),\n // Max 300 events...\n 300,\n // ... per 5s\n 5,\n );\n\n const { slowClickTimeout, slowClickIgnoreSelectors } = this.getOptions();\n\n const slowClickConfig = slowClickTimeout\n ? {\n threshold: Math.min(SLOW_CLICK_THRESHOLD, slowClickTimeout),\n timeout: slowClickTimeout,\n scrollTimeout: SLOW_CLICK_SCROLL_TIMEOUT,\n ignoreSelector: slowClickIgnoreSelectors ? slowClickIgnoreSelectors.join(',') : '',\n }\n : undefined;\n\n if (slowClickConfig) {\n this.clickDetector = new ClickDetector(this, slowClickConfig);\n }\n }\n\n /** Get the event context. */\n getContext() {\n return this._context;\n }\n\n /** If recording is currently enabled. */\n isEnabled() {\n return this._isEnabled;\n }\n\n /** If recording is currently paused. */\n isPaused() {\n return this._isPaused;\n }\n\n /** Get the replay integration options. */\n getOptions() {\n return this._options;\n }\n\n /**\n * Initializes the plugin based on sampling configuration. Should not be\n * called outside of constructor.\n */\n initializeSampling() {\n const { errorSampleRate, sessionSampleRate } = this._options;\n\n // If neither sample rate is > 0, then do nothing - user will need to call one of\n // `start()` or `startBuffering` themselves.\n if (errorSampleRate <= 0 && sessionSampleRate <= 0) {\n return;\n }\n\n // Otherwise if there is _any_ sample rate set, try to load an existing\n // session, or create a new one.\n const isSessionSampled = this._loadAndCheckSession();\n\n if (!isSessionSampled) {\n // This should only occur if `errorSampleRate` is 0 and was unsampled for\n // session-based replay. In this case there is nothing to do.\n return;\n }\n\n if (!this.session) {\n // This should not happen, something wrong has occurred\n this._handleException(new Error('Unable to initialize and create session'));\n return;\n }\n\n if (this.session.sampled && this.session.sampled !== 'session') {\n // If not sampled as session-based, then recording mode will be `buffer`\n // Note that we don't explicitly check if `sampled === 'buffer'` because we\n // could have sessions from Session storage that are still `error` from\n // prior SDK version.\n this.recordingMode = 'buffer';\n }\n\n this._initializeRecording();\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will throw an error if replay is already in progress.\n *\n * Creates or loads a session, attaches listeners to varying events (DOM,\n * _performanceObserver, Recording, Sentry SDK, etc)\n */\n start() {\n if (this._isEnabled && this.recordingMode === 'session') {\n throw new Error('Replay recording is already in progress');\n }\n\n if (this._isEnabled && this.recordingMode === 'buffer') {\n throw new Error('Replay buffering is in progress, call `flush()` to save the replay');\n }\n\n const previousSessionId = this.session && this.session.id;\n\n const { session } = getSession({\n timeouts: this.timeouts,\n stickySession: Boolean(this._options.stickySession),\n currentSession: this.session,\n // This is intentional: create a new session-based replay when calling `start()`\n sessionSampleRate: 1,\n allowBuffering: false,\n });\n\n session.previousSessionId = previousSessionId;\n this.session = session;\n\n this._initializeRecording();\n }\n\n /**\n * Start replay buffering. Buffers until `flush()` is called or, if\n * `replaysOnErrorSampleRate` > 0, an error occurs.\n */\n startBuffering() {\n if (this._isEnabled) {\n throw new Error('Replay recording is already in progress');\n }\n\n const previousSessionId = this.session && this.session.id;\n\n const { session } = getSession({\n timeouts: this.timeouts,\n stickySession: Boolean(this._options.stickySession),\n currentSession: this.session,\n sessionSampleRate: 0,\n allowBuffering: true,\n });\n\n session.previousSessionId = previousSessionId;\n this.session = session;\n\n this.recordingMode = 'buffer';\n this._initializeRecording();\n }\n\n /**\n * Start recording.\n *\n * Note that this will cause a new DOM checkout\n */\n startRecording() {\n try {\n this._stopRecording = record({\n ...this._recordingOptions,\n // When running in error sampling mode, we need to overwrite `checkoutEveryNms`\n // Without this, it would record forever, until an error happens, which we don't want\n // instead, we'll always keep the last 60 seconds of replay before an error happened\n ...(this.recordingMode === 'buffer' && { checkoutEveryNms: BUFFER_CHECKOUT_TIME }),\n emit: getHandleRecordingEmit(this),\n onMutation: this._onMutationHandler,\n });\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Stops the recording, if it was running.\n *\n * Returns true if it was previously stopped, or is now stopped,\n * otherwise false.\n */\n stopRecording() {\n try {\n if (this._stopRecording) {\n this._stopRecording();\n this._stopRecording = undefined;\n }\n\n return true;\n } catch (err) {\n this._handleException(err);\n return false;\n }\n }\n\n /**\n * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n * does not support a teardown\n */\n async stop(reason) {\n if (!this._isEnabled) {\n return;\n }\n\n try {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n const msg = `[Replay] Stopping Replay${reason ? ` triggered by ${reason}` : ''}`;\n\n // When `traceInternals` is enabled, we want to log this to the console\n // Else, use the regular debug output\n // eslint-disable-next-line\n const log = this.getOptions()._experiments.traceInternals ? console.warn : logger.log;\n log(msg);\n }\n\n // We can't move `_isEnabled` after awaiting a flush, otherwise we can\n // enter into an infinite loop when `stop()` is called while flushing.\n this._isEnabled = false;\n this._removeListeners();\n this.stopRecording();\n\n this._debouncedFlush.cancel();\n // See comment above re: `_isEnabled`, we \"force\" a flush, ignoring the\n // `_isEnabled` state of the plugin since it was disabled above.\n if (this.recordingMode === 'session') {\n await this._flush({ force: true });\n }\n\n // After flush, destroy event buffer\n this.eventBuffer && this.eventBuffer.destroy();\n this.eventBuffer = null;\n\n // Clear session from session storage, note this means if a new session\n // is started after, it will not have `previousSessionId`\n clearSession(this);\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Pause some replay functionality. See comments for `_isPaused`.\n * This differs from stop as this only stops DOM recording, it is\n * not as thorough of a shutdown as `stop()`.\n */\n pause() {\n this._isPaused = true;\n this.stopRecording();\n }\n\n /**\n * Resumes recording, see notes for `pause().\n *\n * Note that calling `startRecording()` here will cause a\n * new DOM checkout.`\n */\n resume() {\n if (!this._loadAndCheckSession()) {\n return;\n }\n\n this._isPaused = false;\n this.startRecording();\n }\n\n /**\n * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n * Unless `continueRecording` is false, the replay will continue to record and\n * behave as a \"session\"-based replay.\n *\n * Otherwise, queue up a flush.\n */\n async sendBufferedReplayOrFlush({ continueRecording = true } = {}) {\n if (this.recordingMode === 'session') {\n return this.flushImmediate();\n }\n\n const activityTime = Date.now();\n\n // eslint-disable-next-line no-console\n const log = this.getOptions()._experiments.traceInternals ? console.info : logger.info;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && log(`[Replay] Converting buffer to session, starting at ${activityTime}`);\n\n // Allow flush to complete before resuming as a session recording, otherwise\n // the checkout from `startRecording` may be included in the payload.\n // Prefer to keep the error replay as a separate (and smaller) segment\n // than the session replay.\n await this.flushImmediate();\n\n const hasStoppedRecording = this.stopRecording();\n\n if (!continueRecording || !hasStoppedRecording) {\n return;\n }\n\n // Re-start recording, but in \"session\" recording mode\n\n // Reset all \"capture on error\" configuration before\n // starting a new recording\n this.recordingMode = 'session';\n\n // Once this session ends, we do not want to refresh it\n if (this.session) {\n this.session.shouldRefresh = false;\n\n // It's possible that the session lifespan is > max session lifespan\n // because we have been buffering beyond max session lifespan (we ignore\n // expiration given that `shouldRefresh` is true). Since we flip\n // `shouldRefresh`, the session could be considered expired due to\n // lifespan, which is not what we want. Update session start date to be\n // the current timestamp, so that session is not considered to be\n // expired. This means that max replay duration can be MAX_SESSION_LIFE +\n // (length of buffer), which we are ok with.\n this._updateUserActivity(activityTime);\n this._updateSessionActivity(activityTime);\n this.session.started = activityTime;\n this._maybeSaveSession();\n }\n\n this.startRecording();\n }\n\n /**\n * We want to batch uploads of replay events. Save events only if\n * `` milliseconds have elapsed since the last event\n * *OR* if `` milliseconds have elapsed.\n *\n * Accepts a callback to perform side-effects and returns true to stop batch\n * processing and hand back control to caller.\n */\n addUpdate(cb) {\n // We need to always run `cb` (e.g. in the case of `this.recordingMode == 'buffer'`)\n const cbResult = cb();\n\n // If this option is turned on then we will only want to call `flush`\n // explicitly\n if (this.recordingMode === 'buffer') {\n return;\n }\n\n // If callback is true, we do not want to continue with flushing -- the\n // caller will need to handle it.\n if (cbResult === true) {\n return;\n }\n\n // addUpdate is called quite frequently - use _debouncedFlush so that it\n // respects the flush delays and does not flush immediately\n this._debouncedFlush();\n }\n\n /**\n * Updates the user activity timestamp and resumes recording. This should be\n * called in an event handler for a user action that we consider as the user\n * being \"active\" (e.g. a mouse click).\n */\n triggerUserActivity() {\n this._updateUserActivity();\n\n // This case means that recording was once stopped due to inactivity.\n // Ensure that recording is resumed.\n if (!this._stopRecording) {\n // Create a new session, otherwise when the user action is flushed, it\n // will get rejected due to an expired session.\n if (!this._loadAndCheckSession()) {\n return;\n }\n\n // Note: This will cause a new DOM checkout\n this.resume();\n return;\n }\n\n // Otherwise... recording was never suspended, continue as normalish\n this.checkAndHandleExpiredSession();\n\n this._updateSessionActivity();\n }\n\n /**\n * Updates the user activity timestamp *without* resuming\n * recording. Some user events (e.g. keydown) can be create\n * low-value replays that only contain the keypress as a\n * breadcrumb. Instead this would require other events to\n * create a new replay after a session has expired.\n */\n updateUserActivity() {\n this._updateUserActivity();\n this._updateSessionActivity();\n }\n\n /**\n * Only flush if `this.recordingMode === 'session'`\n */\n conditionalFlush() {\n if (this.recordingMode === 'buffer') {\n return Promise.resolve();\n }\n\n return this.flushImmediate();\n }\n\n /**\n * Flush using debounce flush\n */\n flush() {\n return this._debouncedFlush() ;\n }\n\n /**\n * Always flush via `_debouncedFlush` so that we do not have flushes triggered\n * from calling both `flush` and `_debouncedFlush`. Otherwise, there could be\n * cases of mulitple flushes happening closely together.\n */\n flushImmediate() {\n this._debouncedFlush();\n // `.flush` is provided by the debounced function, analogously to lodash.debounce\n return this._debouncedFlush.flush() ;\n }\n\n /**\n * Cancels queued up flushes.\n */\n cancelFlush() {\n this._debouncedFlush.cancel();\n }\n\n /** Get the current sesion (=replay) ID */\n getSessionId() {\n return this.session && this.session.id;\n }\n\n /**\n * Checks if recording should be stopped due to user inactivity. Otherwise\n * check if session is expired and create a new session if so. Triggers a new\n * full snapshot on new session.\n *\n * Returns true if session is not expired, false otherwise.\n * @hidden\n */\n checkAndHandleExpiredSession() {\n const oldSessionId = this.getSessionId();\n\n // Prevent starting a new session if the last user activity is older than\n // SESSION_IDLE_PAUSE_DURATION. Otherwise non-user activity can trigger a new\n // session+recording. This creates noisy replays that do not have much\n // content in them.\n if (\n this._lastActivity &&\n isExpired(this._lastActivity, this.timeouts.sessionIdlePause) &&\n this.session &&\n this.session.sampled === 'session'\n ) {\n // Pause recording only for session-based replays. Otherwise, resuming\n // will create a new replay and will conflict with users who only choose\n // to record error-based replays only. (e.g. the resumed replay will not\n // contain a reference to an error)\n this.pause();\n return;\n }\n\n // --- There is recent user activity --- //\n // This will create a new session if expired, based on expiry length\n if (!this._loadAndCheckSession()) {\n return;\n }\n\n // Session was expired if session ids do not match\n const expired = oldSessionId !== this.getSessionId();\n\n if (!expired) {\n return true;\n }\n\n // Session is expired, trigger a full snapshot (which will create a new session)\n this._triggerFullSnapshot();\n\n return false;\n }\n\n /**\n * Capture some initial state that can change throughout the lifespan of the\n * replay. This is required because otherwise they would be captured at the\n * first flush.\n */\n setInitialState() {\n const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;\n const url = `${WINDOW.location.origin}${urlPath}`;\n\n this.performanceEvents = [];\n\n // Reset _context as well\n this._clearContext();\n\n this._context.initialUrl = url;\n this._context.initialTimestamp = Date.now();\n this._context.urls.push(url);\n }\n\n /**\n * Add a breadcrumb event, that may be throttled.\n * If it was throttled, we add a custom breadcrumb to indicate that.\n */\n throttledAddEvent(\n event,\n isCheckout,\n ) {\n const res = this._throttledAddEvent(event, isCheckout);\n\n // If this is THROTTLED, it means we have throttled the event for the first time\n // In this case, we want to add a breadcrumb indicating that something was skipped\n if (res === THROTTLED) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.throttled',\n });\n\n this.addUpdate(() => {\n void addEvent(this, {\n type: EventType.Custom,\n timestamp: breadcrumb.timestamp || 0,\n data: {\n tag: 'breadcrumb',\n payload: breadcrumb,\n metric: true,\n },\n });\n });\n }\n\n return res;\n }\n\n /**\n * This will get the parametrized route name of the current page.\n * This is only available if performance is enabled, and if an instrumented router is used.\n */\n getCurrentRoute() {\n const lastTransaction = this.lastTransaction || getCurrentHub().getScope().getTransaction();\n if (!lastTransaction || !['route', 'custom'].includes(lastTransaction.metadata.source)) {\n return undefined;\n }\n\n return lastTransaction.name;\n }\n\n /**\n * Initialize and start all listeners to varying events (DOM,\n * Performance Observer, Recording, Sentry SDK, etc)\n */\n _initializeRecording() {\n this.setInitialState();\n\n // this method is generally called on page load or manually - in both cases\n // we should treat it as an activity\n this._updateSessionActivity();\n\n this.eventBuffer = createEventBuffer({\n useCompression: this._options.useCompression,\n });\n\n this._removeListeners();\n this._addListeners();\n\n // Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout\n this._isEnabled = true;\n\n this.startRecording();\n }\n\n /** A wrapper to conditionally capture exceptions. */\n _handleException(error) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay]', error);\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._options._experiments && this._options._experiments.captureExceptions) {\n captureException(error);\n }\n }\n\n /**\n * Loads (or refreshes) the current session.\n * Returns false if session is not recorded.\n */\n _loadAndCheckSession() {\n const { type, session } = getSession({\n timeouts: this.timeouts,\n stickySession: Boolean(this._options.stickySession),\n currentSession: this.session,\n sessionSampleRate: this._options.sessionSampleRate,\n allowBuffering: this._options.errorSampleRate > 0 || this.recordingMode === 'buffer',\n });\n\n // If session was newly created (i.e. was not loaded from storage), then\n // enable flag to create the root replay\n if (type === 'new') {\n this.setInitialState();\n }\n\n const currentSessionId = this.getSessionId();\n if (session.id !== currentSessionId) {\n session.previousSessionId = currentSessionId;\n }\n\n this.session = session;\n\n if (!this.session.sampled) {\n void this.stop('session unsampled');\n return false;\n }\n\n return true;\n }\n\n /**\n * Adds listeners to record events for the replay\n */\n _addListeners() {\n try {\n WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);\n WINDOW.addEventListener('blur', this._handleWindowBlur);\n WINDOW.addEventListener('focus', this._handleWindowFocus);\n WINDOW.addEventListener('keydown', this._handleKeyboardEvent);\n\n if (this.clickDetector) {\n this.clickDetector.addListeners();\n }\n\n // There is no way to remove these listeners, so ensure they are only added once\n if (!this._hasInitializedCoreListeners) {\n addGlobalListeners(this);\n\n this._hasInitializedCoreListeners = true;\n }\n } catch (err) {\n this._handleException(err);\n }\n\n // PerformanceObserver //\n if (!('PerformanceObserver' in WINDOW)) {\n return;\n }\n\n this._performanceObserver = setupPerformanceObserver(this);\n }\n\n /**\n * Cleans up listeners that were created in `_addListeners`\n */\n _removeListeners() {\n try {\n WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);\n\n WINDOW.removeEventListener('blur', this._handleWindowBlur);\n WINDOW.removeEventListener('focus', this._handleWindowFocus);\n WINDOW.removeEventListener('keydown', this._handleKeyboardEvent);\n\n if (this.clickDetector) {\n this.clickDetector.removeListeners();\n }\n\n if (this._performanceObserver) {\n this._performanceObserver.disconnect();\n this._performanceObserver = null;\n }\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Handle when visibility of the page content changes. Opening a new tab will\n * cause the state to change to hidden because of content of current page will\n * be hidden. Likewise, moving a different window to cover the contents of the\n * page will also trigger a change to a hidden state.\n */\n __init13() {this._handleVisibilityChange = () => {\n if (WINDOW.document.visibilityState === 'visible') {\n this._doChangeToForegroundTasks();\n } else {\n this._doChangeToBackgroundTasks();\n }\n };}\n\n /**\n * Handle when page is blurred\n */\n __init14() {this._handleWindowBlur = () => {\n const breadcrumb = createBreadcrumb({\n category: 'ui.blur',\n });\n\n // Do not count blur as a user action -- it's part of the process of them\n // leaving the page\n this._doChangeToBackgroundTasks(breadcrumb);\n };}\n\n /**\n * Handle when page is focused\n */\n __init15() {this._handleWindowFocus = () => {\n const breadcrumb = createBreadcrumb({\n category: 'ui.focus',\n });\n\n // Do not count focus as a user action -- instead wait until they focus and\n // interactive with page\n this._doChangeToForegroundTasks(breadcrumb);\n };}\n\n /** Ensure page remains active when a key is pressed. */\n __init16() {this._handleKeyboardEvent = (event) => {\n handleKeyboardEvent(this, event);\n };}\n\n /**\n * Tasks to run when we consider a page to be hidden (via blurring and/or visibility)\n */\n _doChangeToBackgroundTasks(breadcrumb) {\n if (!this.session) {\n return;\n }\n\n const expired = isSessionExpired(this.session, this.timeouts);\n\n if (breadcrumb && !expired) {\n this._createCustomBreadcrumb(breadcrumb);\n }\n\n // Send replay when the page/tab becomes hidden. There is no reason to send\n // replay if it becomes visible, since no actions we care about were done\n // while it was hidden\n void this.conditionalFlush();\n }\n\n /**\n * Tasks to run when we consider a page to be visible (via focus and/or visibility)\n */\n _doChangeToForegroundTasks(breadcrumb) {\n if (!this.session) {\n return;\n }\n\n const isSessionActive = this.checkAndHandleExpiredSession();\n\n if (!isSessionActive) {\n // If the user has come back to the page within SESSION_IDLE_PAUSE_DURATION\n // ms, we will re-use the existing session, otherwise create a new\n // session\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Document has become active, but session has expired');\n return;\n }\n\n if (breadcrumb) {\n this._createCustomBreadcrumb(breadcrumb);\n }\n }\n\n /**\n * Trigger rrweb to take a full snapshot which will cause this plugin to\n * create a new Replay event.\n */\n _triggerFullSnapshot(checkout = true) {\n try {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Taking full rrweb snapshot');\n record.takeFullSnapshot(checkout);\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Update user activity (across session lifespans)\n */\n _updateUserActivity(_lastActivity = Date.now()) {\n this._lastActivity = _lastActivity;\n }\n\n /**\n * Updates the session's last activity timestamp\n */\n _updateSessionActivity(_lastActivity = Date.now()) {\n if (this.session) {\n this.session.lastActivity = _lastActivity;\n this._maybeSaveSession();\n }\n }\n\n /**\n * Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb\n */\n _createCustomBreadcrumb(breadcrumb) {\n this.addUpdate(() => {\n void this.throttledAddEvent({\n type: EventType.Custom,\n timestamp: breadcrumb.timestamp || 0,\n data: {\n tag: 'breadcrumb',\n payload: breadcrumb,\n },\n });\n });\n }\n\n /**\n * Observed performance events are added to `this.performanceEvents`. These\n * are included in the replay event before it is finished and sent to Sentry.\n */\n _addPerformanceEntries() {\n // Copy and reset entries before processing\n const entries = [...this.performanceEvents];\n this.performanceEvents = [];\n\n return Promise.all(createPerformanceSpans(this, createPerformanceEntries(entries)));\n }\n\n /**\n * Clear _context\n */\n _clearContext() {\n // XXX: `initialTimestamp` and `initialUrl` do not get cleared\n this._context.errorIds.clear();\n this._context.traceIds.clear();\n this._context.urls = [];\n }\n\n /** Update the initial timestamp based on the buffer content. */\n _updateInitialTimestampFromEventBuffer() {\n const { session, eventBuffer } = this;\n if (!session || !eventBuffer) {\n return;\n }\n\n // we only ever update this on the initial segment\n if (session.segmentId) {\n return;\n }\n\n const earliestEvent = eventBuffer.getEarliestTimestamp();\n if (earliestEvent && earliestEvent < this._context.initialTimestamp) {\n this._context.initialTimestamp = earliestEvent;\n }\n }\n\n /**\n * Return and clear _context\n */\n _popEventContext() {\n const _context = {\n initialTimestamp: this._context.initialTimestamp,\n initialUrl: this._context.initialUrl,\n errorIds: Array.from(this._context.errorIds),\n traceIds: Array.from(this._context.traceIds),\n urls: this._context.urls,\n };\n\n this._clearContext();\n\n return _context;\n }\n\n /**\n * Flushes replay event buffer to Sentry.\n *\n * Performance events are only added right before flushing - this is\n * due to the buffered performance observer events.\n *\n * Should never be called directly, only by `flush`\n */\n async _runFlush() {\n if (!this.session || !this.eventBuffer) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] No session or eventBuffer found to flush.');\n return;\n }\n\n await this._addPerformanceEntries();\n\n // Check eventBuffer again, as it could have been stopped in the meanwhile\n if (!this.eventBuffer || !this.eventBuffer.hasEvents) {\n return;\n }\n\n // Only attach memory event if eventBuffer is not empty\n await addMemoryEntry(this);\n\n // Check eventBuffer again, as it could have been stopped in the meanwhile\n if (!this.eventBuffer) {\n return;\n }\n\n try {\n // This uses the data from the eventBuffer, so we need to call this before `finish()\n this._updateInitialTimestampFromEventBuffer();\n\n // Note this empties the event buffer regardless of outcome of sending replay\n const recordingData = await this.eventBuffer.finish();\n\n // NOTE: Copy values from instance members, as it's possible they could\n // change before the flush finishes.\n const replayId = this.session.id;\n const eventContext = this._popEventContext();\n // Always increment segmentId regardless of outcome of sending replay\n const segmentId = this.session.segmentId++;\n this._maybeSaveSession();\n\n await sendReplay({\n replayId,\n recordingData,\n segmentId,\n eventContext,\n session: this.session,\n options: this.getOptions(),\n timestamp: Date.now(),\n });\n } catch (err) {\n this._handleException(err);\n\n // This means we retried 3 times and all of them failed,\n // or we ran into a problem we don't want to retry, like rate limiting.\n // In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments\n void this.stop('sendReplay');\n\n const client = getCurrentHub().getClient();\n\n if (client) {\n client.recordDroppedEvent('send_error', 'replay');\n }\n }\n }\n\n /**\n * Flush recording data to Sentry. Creates a lock so that only a single flush\n * can be active at a time. Do not call this directly.\n */\n __init17() {this._flush = async ({\n force = false,\n }\n\n = {}) => {\n if (!this._isEnabled && !force) {\n // This can happen if e.g. the replay was stopped because of exceeding the retry limit\n return;\n }\n\n if (!this.checkAndHandleExpiredSession()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Attempting to finish replay event after session expired.');\n return;\n }\n\n if (!this.session) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] No session found to flush.');\n return;\n }\n\n const start = this.session.started;\n const now = Date.now();\n const duration = now - start;\n\n // If session is too short, or too long (allow some wiggle room over maxSessionLife), do not send it\n // This _should_ not happen, but it may happen if flush is triggered due to a page activity change or similar\n if (duration < this._options.minReplayDuration || duration > this.timeouts.maxSessionLife + 5000) {\n // eslint-disable-next-line no-console\n const log = this.getOptions()._experiments.traceInternals ? console.warn : logger.warn;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n log(\n `[Replay] Session duration (${Math.floor(duration / 1000)}s) is too short or too long, not sending replay.`,\n );\n\n return;\n }\n\n // A flush is about to happen, cancel any queued flushes\n this._debouncedFlush.cancel();\n\n // this._flushLock acts as a lock so that future calls to `_flush()`\n // will be blocked until this promise resolves\n if (!this._flushLock) {\n this._flushLock = this._runFlush();\n await this._flushLock;\n this._flushLock = null;\n return;\n }\n\n // Wait for previous flush to finish, then call the debounced `_flush()`.\n // It's possible there are other flush requests queued and waiting for it\n // to resolve. We want to reduce all outstanding requests (as well as any\n // new flush requests that occur within a second of the locked flush\n // completing) into a single flush.\n\n try {\n await this._flushLock;\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(err);\n } finally {\n this._debouncedFlush();\n }\n };}\n\n /** Save the session, if it is sticky */\n _maybeSaveSession() {\n if (this.session && this._options.stickySession) {\n saveSession(this.session);\n }\n }\n\n /** Handler for rrweb.record.onMutation */\n __init18() {this._onMutationHandler = (mutations) => {\n const count = mutations.length;\n\n const mutationLimit = this._options.mutationLimit;\n const mutationBreadcrumbLimit = this._options.mutationBreadcrumbLimit;\n const overMutationLimit = mutationLimit && count > mutationLimit;\n\n // Create a breadcrumb if a lot of mutations happen at the same time\n // We can show this in the UI as an information with potential performance improvements\n if (count > mutationBreadcrumbLimit || overMutationLimit) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.mutations',\n data: {\n count,\n limit: overMutationLimit,\n },\n });\n this._createCustomBreadcrumb(breadcrumb);\n }\n\n // Stop replay if over the mutation limit\n if (overMutationLimit) {\n void this.stop('mutationLimit');\n return false;\n }\n\n // `true` means we use the regular mutation handling by rrweb\n return true;\n };}\n}\n\nfunction getOption(\n selectors,\n defaultSelectors,\n deprecatedClassOption,\n deprecatedSelectorOption,\n) {\n const deprecatedSelectors = typeof deprecatedSelectorOption === 'string' ? deprecatedSelectorOption.split(',') : [];\n\n const allSelectors = [\n ...selectors,\n // @deprecated\n ...deprecatedSelectors,\n\n // sentry defaults\n ...defaultSelectors,\n ];\n\n // @deprecated\n if (typeof deprecatedClassOption !== 'undefined') {\n // NOTE: No support for RegExp\n if (typeof deprecatedClassOption === 'string') {\n allSelectors.push(`.${deprecatedClassOption}`);\n }\n\n // eslint-disable-next-line no-console\n console.warn(\n '[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.',\n );\n }\n\n return allSelectors.join(',');\n}\n\n/**\n * Returns privacy related configuration for use in rrweb\n */\nfunction getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n\n // eslint-disable-next-line deprecation/deprecation\n blockClass,\n // eslint-disable-next-line deprecation/deprecation\n blockSelector,\n // eslint-disable-next-line deprecation/deprecation\n maskTextClass,\n // eslint-disable-next-line deprecation/deprecation\n maskTextSelector,\n // eslint-disable-next-line deprecation/deprecation\n ignoreClass,\n}) {\n const defaultBlockedElements = ['base[href=\"/\"]'];\n\n const maskSelector = getOption(mask, ['.sentry-mask', '[data-sentry-mask]'], maskTextClass, maskTextSelector);\n const unmaskSelector = getOption(unmask, ['.sentry-unmask', '[data-sentry-unmask]']);\n\n const options = {\n // We are making the decision to make text and input selectors the same\n maskTextSelector: maskSelector,\n unmaskTextSelector: unmaskSelector,\n maskInputSelector: maskSelector,\n unmaskInputSelector: unmaskSelector,\n\n blockSelector: getOption(\n block,\n ['.sentry-block', '[data-sentry-block]', ...defaultBlockedElements],\n blockClass,\n blockSelector,\n ),\n unblockSelector: getOption(unblock, ['.sentry-unblock', '[data-sentry-unblock]']),\n ignoreSelector: getOption(ignore, ['.sentry-ignore', '[data-sentry-ignore]', 'input[type=\"file\"]'], ignoreClass),\n };\n\n if (blockClass instanceof RegExp) {\n options.blockClass = blockClass;\n }\n\n if (maskTextClass instanceof RegExp) {\n options.maskTextClass = maskTextClass;\n }\n\n return options;\n}\n\n/**\n * Returns true if we are in the browser.\n */\nfunction isBrowser() {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer() {\n return typeof process !== 'undefined' && (process ).type === 'renderer';\n}\n\nconst MEDIA_SELECTORS =\n 'img,image,svg,video,object,picture,embed,map,audio,link[rel=\"icon\"],link[rel=\"apple-touch-icon\"]';\n\nconst DEFAULT_NETWORK_HEADERS = ['content-length', 'content-type', 'accept'];\n\nlet _initialized = false;\n\n/**\n * The main replay integration class, to be passed to `init({ integrations: [] })`.\n */\nclass Replay {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Replay';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Replay.id;}\n\n /**\n * Options to pass to `rrweb.record()`\n */\n\n /**\n * Initial options passed to the replay integration, merged with default values.\n * Note: `sessionSampleRate` and `errorSampleRate` are not required here, as they\n * can only be finally set when setupOnce() is called.\n *\n * @private\n */\n\n constructor({\n flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,\n flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,\n minReplayDuration = MIN_REPLAY_DURATION,\n stickySession = true,\n useCompression = true,\n _experiments = {},\n sessionSampleRate,\n errorSampleRate,\n maskAllText = true,\n maskAllInputs = true,\n blockAllMedia = true,\n\n mutationBreadcrumbLimit = 750,\n mutationLimit = 10000,\n\n slowClickTimeout = 7000,\n slowClickIgnoreSelectors = [],\n\n networkDetailAllowUrls = [],\n networkDetailDenyUrls = [],\n networkCaptureBodies = true,\n networkRequestHeaders = [],\n networkResponseHeaders = [],\n\n mask = [],\n unmask = [],\n block = [],\n unblock = [],\n ignore = [],\n maskFn,\n\n beforeAddRecordingEvent,\n\n // eslint-disable-next-line deprecation/deprecation\n blockClass,\n // eslint-disable-next-line deprecation/deprecation\n blockSelector,\n // eslint-disable-next-line deprecation/deprecation\n maskInputOptions,\n // eslint-disable-next-line deprecation/deprecation\n maskTextClass,\n // eslint-disable-next-line deprecation/deprecation\n maskTextSelector,\n // eslint-disable-next-line deprecation/deprecation\n ignoreClass,\n } = {}) {Replay.prototype.__init.call(this);\n this._recordingOptions = {\n maskAllInputs,\n maskAllText,\n maskInputOptions: { ...(maskInputOptions || {}), password: true },\n maskTextFn: maskFn,\n maskInputFn: maskFn,\n\n ...getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n ignoreClass,\n }),\n\n // Our defaults\n slimDOMOptions: 'all',\n inlineStylesheet: true,\n // Disable inline images as it will increase segment/replay size\n inlineImages: false,\n // collect fonts, but be aware that `sentry.io` needs to be an allowed\n // origin for playback\n collectFonts: true,\n };\n\n this._initialOptions = {\n flushMinDelay,\n flushMaxDelay,\n minReplayDuration: Math.min(minReplayDuration, MIN_REPLAY_DURATION_LIMIT),\n stickySession,\n sessionSampleRate,\n errorSampleRate,\n useCompression,\n blockAllMedia,\n maskAllInputs,\n maskAllText,\n mutationBreadcrumbLimit,\n mutationLimit,\n slowClickTimeout,\n slowClickIgnoreSelectors,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders: _getMergedNetworkHeaders(networkRequestHeaders),\n networkResponseHeaders: _getMergedNetworkHeaders(networkResponseHeaders),\n beforeAddRecordingEvent,\n\n _experiments,\n };\n\n if (typeof sessionSampleRate === 'number') {\n // eslint-disable-next-line\n console.warn(\n `[Replay] You are passing \\`sessionSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysSessionSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,\n );\n\n this._initialOptions.sessionSampleRate = sessionSampleRate;\n }\n\n if (typeof errorSampleRate === 'number') {\n // eslint-disable-next-line\n console.warn(\n `[Replay] You are passing \\`errorSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysOnErrorSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,\n );\n\n this._initialOptions.errorSampleRate = errorSampleRate;\n }\n\n if (this._initialOptions.blockAllMedia) {\n // `blockAllMedia` is a more user friendly option to configure blocking\n // embedded media elements\n this._recordingOptions.blockSelector = !this._recordingOptions.blockSelector\n ? MEDIA_SELECTORS\n : `${this._recordingOptions.blockSelector},${MEDIA_SELECTORS}`;\n }\n\n if (this._isInitialized && isBrowser()) {\n throw new Error('Multiple Sentry Session Replay instances are not supported');\n }\n\n this._isInitialized = true;\n }\n\n /** If replay has already been initialized */\n get _isInitialized() {\n return _initialized;\n }\n\n /** Update _isInitialized */\n set _isInitialized(value) {\n _initialized = value;\n }\n\n /**\n * Setup and initialize replay container\n */\n setupOnce() {\n if (!isBrowser()) {\n return;\n }\n\n this._setup();\n\n // Once upon a time, we tried to create a transaction in `setupOnce` and it would\n // potentially create a transaction before some native SDK integrations have run\n // and applied their own global event processor. An example is:\n // https://github.com/getsentry/sentry-javascript/blob/b47ceafbdac7f8b99093ce6023726ad4687edc48/packages/browser/src/integrations/useragent.ts\n //\n // So we call `this._initialize()` in next event loop as a workaround to wait for other\n // global event processors to finish. This is no longer needed, but keeping it\n // here to avoid any future issues.\n setTimeout(() => this._initialize());\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will throw an error if replay is already in progress.\n *\n * Creates or loads a session, attaches listeners to varying events (DOM,\n * PerformanceObserver, Recording, Sentry SDK, etc)\n */\n start() {\n if (!this._replay) {\n return;\n }\n\n this._replay.start();\n }\n\n /**\n * Start replay buffering. Buffers until `flush()` is called or, if\n * `replaysOnErrorSampleRate` > 0, until an error occurs.\n */\n startBuffering() {\n if (!this._replay) {\n return;\n }\n\n this._replay.startBuffering();\n }\n\n /**\n * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n * does not support a teardown\n */\n stop() {\n if (!this._replay) {\n return Promise.resolve();\n }\n\n return this._replay.stop();\n }\n\n /**\n * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n * Unless `continueRecording` is false, the replay will continue to record and\n * behave as a \"session\"-based replay.\n *\n * Otherwise, queue up a flush.\n */\n flush(options) {\n if (!this._replay || !this._replay.isEnabled()) {\n return Promise.resolve();\n }\n\n return this._replay.sendBufferedReplayOrFlush(options);\n }\n\n /**\n * Get the current session ID.\n */\n getReplayId() {\n if (!this._replay || !this._replay.isEnabled()) {\n return;\n }\n\n return this._replay.getSessionId();\n }\n /**\n * Initializes replay.\n */\n _initialize() {\n if (!this._replay) {\n return;\n }\n\n this._replay.initializeSampling();\n }\n\n /** Setup the integration. */\n _setup() {\n // Client is not available in constructor, so we need to wait until setupOnce\n const finalOptions = loadReplayOptionsFromClient(this._initialOptions);\n\n this._replay = new ReplayContainer({\n options: finalOptions,\n recordingOptions: this._recordingOptions,\n });\n }\n} Replay.__initStatic();\n\n/** Parse Replay-related options from SDK options */\nfunction loadReplayOptionsFromClient(initialOptions) {\n const client = getCurrentHub().getClient();\n const opt = client && (client.getOptions() );\n\n const finalOptions = { sessionSampleRate: 0, errorSampleRate: 0, ...dropUndefinedKeys(initialOptions) };\n\n if (!opt) {\n // eslint-disable-next-line no-console\n console.warn('SDK client is not available.');\n return finalOptions;\n }\n\n if (\n initialOptions.sessionSampleRate == null && // TODO remove once deprecated rates are removed\n initialOptions.errorSampleRate == null && // TODO remove once deprecated rates are removed\n opt.replaysSessionSampleRate == null &&\n opt.replaysOnErrorSampleRate == null\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.',\n );\n }\n\n if (typeof opt.replaysSessionSampleRate === 'number') {\n finalOptions.sessionSampleRate = opt.replaysSessionSampleRate;\n }\n\n if (typeof opt.replaysOnErrorSampleRate === 'number') {\n finalOptions.errorSampleRate = opt.replaysOnErrorSampleRate;\n }\n\n return finalOptions;\n}\n\nfunction _getMergedNetworkHeaders(headers) {\n return [...DEFAULT_NETWORK_HEADERS, ...headers.map(header => header.toLowerCase())];\n}\n\nexport { Replay };\n//# sourceMappingURL=index.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nexport { WINDOW };\n//# sourceMappingURL=types.js.map\n","const bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n let delta;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getNavigationEntryFromPerformanceTiming = () => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n // eslint-disable-next-line deprecation/deprecation\n navigationEntry[key] = Math.max((timing[key ] ) - timing.navigationStart, 0);\n }\n }\n return navigationEntry ;\n};\n\nconst getNavigationEntry = () => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n\nexport { getNavigationEntry };\n//# sourceMappingURL=getNavigationEntry.js.map\n","import { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getActivationStart = () => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n\nexport { getActivationStart };\n//# sourceMappingURL=getActivationStart.js.map\n","import { WINDOW } from '../../types.js';\nimport { generateUniqueID } from './generateUniqueID.js';\nimport { getActivationStart } from './getActivationStart.js';\nimport { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst initMetric = (name, value) => {\n const navEntry = getNavigationEntry();\n let navigationType = 'navigate';\n\n if (navEntry) {\n if (WINDOW.document.prerendering || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') ;\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n\nexport { initMetric };\n//# sourceMappingURL=initMetric.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nconst generateUniqueID = () => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nconst observe = (\n type,\n callback,\n opts,\n) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() );\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) ,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst onHidden = (cb, once) => {\n const onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","import { WINDOW } from '../../types.js';\nimport { onHidden } from './onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = () => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n return WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n};\n\nconst trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nconst getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst reportedMetricIDs = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nconst onLCP = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report;\n\n const handleEntries = (entries) => {\n const lastEntry = entries[entries.length - 1] ;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onLCP };\n//# sourceMappingURL=getLCP.js.map\n","/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\nexport { _startChild, isMeasurementValue };\n//# sourceMappingURL=utils.js.map\n","import { getActiveTransaction } from '@sentry/core';\nimport { browserPerformanceTimeOrigin, logger, htmlTreeAsString } from '@sentry/utils';\nimport { WINDOW } from '../types.js';\nimport { onCLS } from '../web-vitals/getCLS.js';\nimport { onFID } from '../web-vitals/getFID.js';\nimport { onLCP } from '../web-vitals/getLCP.js';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher.js';\nimport { observe } from '../web-vitals/lib/observe.js';\nimport { _startChild, isMeasurementValue } from './utils.js';\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n return time / 1000;\n}\n\nfunction getBrowserPerformanceAPI() {\n // @ts-ignore we want to make sure all of these are available, even if TS is sure they are\n return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n *\n * @returns A function that forces web vitals collection\n */\nfunction startTrackingWebVitals() {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n // @ts-ignore we want to make sure all of these are available, even if TS is sure they are\n if (performance.mark) {\n WINDOW.performance.mark('sentry-tracing-init');\n }\n _trackFID();\n const clsCallback = _trackCLS();\n const lcpCallback = _trackLCP();\n\n return () => {\n if (clsCallback) {\n clsCallback();\n }\n if (lcpCallback) {\n lcpCallback();\n }\n };\n }\n\n return () => undefined;\n}\n\n/**\n * Start tracking long tasks.\n */\nfunction startTrackingLongTasks() {\n const entryHandler = (entries) => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n };\n\n observe('longtask', entryHandler);\n}\n\n/**\n * Start tracking interaction events.\n */\nfunction startTrackingInteractions() {\n const entryHandler = (entries) => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n\n if (entry.name === 'click') {\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: htmlTreeAsString(entry.target),\n op: `ui.interaction.${entry.name}`,\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n }\n };\n\n observe('event', entryHandler, { durationThreshold: 0 });\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n return onCLS(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry ;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP() {\n return onLCP(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry ;\n });\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n onFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin );\n const startTime = msToSec(entry.startTime);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n let responseStartTimestamp;\n let requestStartTimestamp;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n const resourceName = (entry.name ).replace(WINDOW.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n const delta = normalizedValue - oldValue;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n const fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'ui.action',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n startTime,\n duration,\n timeOrigin,\n) {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name ,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType ,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n event,\n timeOrigin,\n description,\n eventEnd,\n) {\n const end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n const start = entry[`${event}Start`] ;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: description || event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n transaction,\n entry,\n resourceName,\n startTime,\n duration,\n timeOrigin,\n) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = {};\n if ('transferSize' in entry) {\n data['http.response_transfer_size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['http.response_content_length'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['http.decoded_response_content_length'] = entry.decodedBodySize;\n }\n if ('renderBlockingStatus' in entry) {\n data['resource.render_blocking_status'] = entry.renderBlockingStatus;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n const navigator = WINDOW.navigator ;\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n if (_lcpEntry) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n\nexport { _addMeasureSpans, _addResourceSpans, addPerformanceEntries, startTrackingInteractions, startTrackingLongTasks, startTrackingWebVitals };\n//# sourceMappingURL=index.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nconst onFID = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntry = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries) => {\n (entries ).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() );\n po.disconnect();\n }, true);\n }\n};\n\nexport { onFID };\n//# sourceMappingURL=getFID.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onCLS = (onReport) => {\n const metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n handleEntries(po.takeRecords() );\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { hasTracingEnabled, getCurrentHub, getDynamicSamplingContextFromClient } from '@sentry/core';\nimport { addInstrumentationHandler, browserPerformanceTimeOrigin, generateSentryTraceHeader, dynamicSamplingContextToSentryBaggageHeader, isInstanceOf, BAGGAGE_HEADER_NAME, SENTRY_XHR_DATA_KEY, stringMatchesSomePattern } from '@sentry/utils';\n\n/* eslint-disable max-lines */\n\nconst DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\/(?!\\/)/];\n\n/** Options for Request Instrumentation */\n\nconst defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n enableHTTPTimings: true,\n // TODO (v8): Remove this property\n tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,\n tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(_options) {\n const {\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n // eslint-disable-next-line deprecation/deprecation\n tracingOrigins,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n } = {\n traceFetch: defaultRequestInstrumentationOptions.traceFetch,\n traceXHR: defaultRequestInstrumentationOptions.traceXHR,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_) => true;\n\n // TODO(v8) Remove tracingOrigins here\n // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported\n // and we don't want to break the API. We can remove it in v8.\n const shouldAttachHeadersWithTargets = (url) =>\n shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);\n\n const spans = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData) => {\n const createdSpan = fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData) => {\n const createdSpan = xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n}\n\n/**\n * Creates a temporary observer to listen to the next fetch/xhr resourcing timings,\n * so that when timings hit their per-browser limit they don't need to be removed.\n *\n * @param span A span that has yet to be finished, must contain `url` on data.\n */\nfunction addHTTPTimings(span) {\n const url = span.data.url;\n const observer = new PerformanceObserver(list => {\n const entries = list.getEntries() ;\n entries.forEach(entry => {\n if ((entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest') && entry.name.endsWith(url)) {\n const spanData = resourceTimingEntryToSpanData(entry);\n spanData.forEach(data => span.setData(...data));\n observer.disconnect();\n }\n });\n });\n observer.observe({\n entryTypes: ['resource'],\n });\n}\n\n/**\n * Converts ALPN protocol ids to name and version.\n *\n * (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids)\n * @param nextHopProtocol PerformanceResourceTiming.nextHopProtocol\n */\nfunction extractNetworkProtocol(nextHopProtocol) {\n let name = 'unknown';\n let version = 'unknown';\n let _name = '';\n for (const char of nextHopProtocol) {\n // http/1.1 etc.\n if (char === '/') {\n [name, version] = nextHopProtocol.split('/');\n break;\n }\n // h2, h3 etc.\n if (!isNaN(Number(char))) {\n name = _name === 'h' ? 'http' : _name;\n version = nextHopProtocol.split(_name)[1];\n break;\n }\n _name += char;\n }\n if (_name === nextHopProtocol) {\n // webrtc, ftp, etc.\n name = _name;\n }\n return { name, version };\n}\n\nfunction getAbsoluteTime(time) {\n return ((browserPerformanceTimeOrigin || performance.timeOrigin) + time) / 1000;\n}\n\nfunction resourceTimingEntryToSpanData(resourceTiming) {\n const { name, version } = extractNetworkProtocol(resourceTiming.nextHopProtocol);\n\n const timingSpanData = [];\n\n timingSpanData.push(['network.protocol.version', version], ['network.protocol.name', name]);\n\n if (!browserPerformanceTimeOrigin) {\n return timingSpanData;\n }\n return [\n ...timingSpanData,\n ['http.request.redirect_start', getAbsoluteTime(resourceTiming.redirectStart)],\n ['http.request.fetch_start', getAbsoluteTime(resourceTiming.fetchStart)],\n ['http.request.domain_lookup_start', getAbsoluteTime(resourceTiming.domainLookupStart)],\n ['http.request.domain_lookup_end', getAbsoluteTime(resourceTiming.domainLookupEnd)],\n ['http.request.connect_start', getAbsoluteTime(resourceTiming.connectStart)],\n ['http.request.secure_connection_start', getAbsoluteTime(resourceTiming.secureConnectionStart)],\n ['http.request.connection_end', getAbsoluteTime(resourceTiming.connectEnd)],\n ['http.request.request_start', getAbsoluteTime(resourceTiming.requestStart)],\n ['http.request.response_start', getAbsoluteTime(resourceTiming.responseStart)],\n ['http.request.response_end', getAbsoluteTime(resourceTiming.responseEnd)],\n ];\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.\n * We only export this fuction for testing purposes.\n */\nfunction shouldAttachHeaders(url, tracePropagationTargets) {\n return stringMatchesSomePattern(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);\n}\n\n/**\n * Create and track fetch request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\nfunction fetchCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n if (!hasTracingEnabled() || !handlerData.fetchData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(handlerData.fetchData.url);\n\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n\n const contentLength =\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length');\n\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setData('http.response_content_length', contentLengthNum);\n }\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const client = hub.getClient();\n const parentSpan = scope.getSpan();\n\n const { method, url } = handlerData.fetchData;\n\n const span =\n shouldCreateSpanResult && parentSpan\n ? parentSpan.startChild({\n data: {\n url,\n type: 'fetch',\n 'http.method': method,\n },\n description: `${method} ${url}`,\n op: 'http.client',\n })\n : undefined;\n\n if (span) {\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n }\n\n if (shouldAttachHeaders(handlerData.fetchData.url) && client) {\n const request = handlerData.args[0];\n\n // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n handlerData.args[1] = handlerData.args[1] || {};\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options = handlerData.args[1];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n options.headers = addTracingHeadersToFetchRequest(request, client, scope, options);\n }\n\n return span;\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers\n */\nfunction addTracingHeadersToFetchRequest(\n request, // unknown is actually type Request but we can't export DOM types from this package,\n client,\n scope,\n options\n\n,\n) {\n const span = scope.getSpan();\n\n const transaction = span && span.transaction;\n\n const { traceId, sampled, dsc } = scope.getPropagationContext();\n\n const sentryTraceHeader = span ? span.toTraceparent() : generateSentryTraceHeader(traceId, undefined, sampled);\n const dynamicSamplingContext = transaction\n ? transaction.getDynamicSamplingContext()\n : dsc\n ? dsc\n : getDynamicSamplingContextFromClient(traceId, client, scope);\n\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n\n const headers =\n typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request ).headers : options.headers;\n\n if (!headers) {\n return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n const newHeaders = new Headers(headers );\n\n newHeaders.append('sentry-trace', sentryTraceHeader);\n\n if (sentryBaggageHeader) {\n // If the same header is appended multiple times the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n return newHeaders ;\n } else if (Array.isArray(headers)) {\n const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n if (sentryBaggageHeader) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n }\n\n return newHeaders ;\n } else {\n const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n const newBaggageHeaders = [];\n\n if (Array.isArray(existingBaggageHeader)) {\n newBaggageHeaders.push(...existingBaggageHeader);\n } else if (existingBaggageHeader) {\n newBaggageHeaders.push(existingBaggageHeader);\n }\n\n if (sentryBaggageHeader) {\n newBaggageHeaders.push(sentryBaggageHeader);\n }\n\n return {\n ...(headers ),\n 'sentry-trace': sentryTraceHeader,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n }\n}\n\n/**\n * Create and track xhr request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\n// eslint-disable-next-line complexity\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n const xhr = handlerData.xhr;\n const sentryXhrData = xhr && xhr[SENTRY_XHR_DATA_KEY];\n\n if (!hasTracingEnabled() || (xhr && xhr.__sentry_own_request__) || !xhr || !sentryXhrData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(sentryXhrData.url);\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(sentryXhrData.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const parentSpan = scope.getSpan();\n\n const span =\n shouldCreateSpanResult && parentSpan\n ? parentSpan.startChild({\n data: {\n ...sentryXhrData.data,\n type: 'xhr',\n 'http.method': sentryXhrData.method,\n url: sentryXhrData.url,\n },\n description: `${sentryXhrData.method} ${sentryXhrData.url}`,\n op: 'http.client',\n })\n : undefined;\n\n if (span) {\n xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[xhr.__sentry_xhr_span_id__] = span;\n }\n\n if (xhr.setRequestHeader && shouldAttachHeaders(sentryXhrData.url)) {\n if (span) {\n const transaction = span && span.transaction;\n const dynamicSamplingContext = transaction && transaction.getDynamicSamplingContext();\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n setHeaderOnXhr(xhr, span.toTraceparent(), sentryBaggageHeader);\n } else {\n const client = hub.getClient();\n const { traceId, sampled, dsc } = scope.getPropagationContext();\n const sentryTraceHeader = generateSentryTraceHeader(traceId, undefined, sampled);\n const dynamicSamplingContext =\n dsc || (client ? getDynamicSamplingContextFromClient(traceId, client, scope) : undefined);\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n setHeaderOnXhr(xhr, sentryTraceHeader, sentryBaggageHeader);\n }\n }\n\n return span;\n}\n\nfunction setHeaderOnXhr(\n xhr,\n sentryTraceHeader,\n sentryBaggageHeader,\n) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader('sentry-trace', sentryTraceHeader);\n if (sentryBaggageHeader) {\n // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n // We can therefore simply set a baggage header without checking what was there before\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n}\n\nexport { DEFAULT_TRACE_PROPAGATION_TARGETS, addTracingHeadersToFetchRequest, defaultRequestInstrumentationOptions, extractNetworkProtocol, fetchCallback, instrumentOutgoingRequests, shouldAttachHeaders, xhrCallback };\n//# sourceMappingURL=request.js.map\n","import { TRACING_DEFAULTS, addTracingExtensions, startIdleTransaction, getActiveTransaction } from '@sentry/core';\nimport { logger, tracingContextFromHeaders, getDomElement } from '@sentry/utils';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { startTrackingWebVitals, startTrackingLongTasks, startTrackingInteractions, addPerformanceEntries } from './metrics/index.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { instrumentRoutingWithDefaults } from './router.js';\nimport { WINDOW } from './types.js';\n\nconst BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n ...TRACING_DEFAULTS,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n enableLongTask: true,\n _experiments: {},\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n\n /**\n * @inheritDoc\n */\n __init() {this.name = BROWSER_TRACING_INTEGRATION_ID;}\n\n __init2() {this._hasSetTracePropagationTargets = false;}\n\n constructor(_options) {BrowserTracing.prototype.__init.call(this);BrowserTracing.prototype.__init2.call(this);\n addTracingExtensions();\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n this._hasSetTracePropagationTargets = !!(\n _options &&\n // eslint-disable-next-line deprecation/deprecation\n (_options.tracePropagationTargets || _options.tracingOrigins)\n );\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n };\n\n // Special case: enableLongTask can be set in _experiments\n // TODO (v8): Remove this in v8\n if (this.options._experiments.enableLongTask !== undefined) {\n this.options.enableLongTask = this.options._experiments.enableLongTask;\n }\n\n // TODO (v8): remove this block after tracingOrigins is removed\n // Set tracePropagationTargets to tracingOrigins if specified by the user\n // In case both are specified, tracePropagationTargets takes precedence\n // eslint-disable-next-line deprecation/deprecation\n if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {\n // eslint-disable-next-line deprecation/deprecation\n this.options.tracePropagationTargets = _options.tracingOrigins;\n }\n\n this._collectWebVitals = startTrackingWebVitals();\n if (this.options.enableLongTask) {\n startTrackingLongTasks();\n }\n if (this.options._experiments.enableInteractions) {\n startTrackingInteractions();\n }\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n const hub = getCurrentHub();\n const client = hub.getClient();\n const clientOptions = client && client.getOptions();\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n _experiments,\n } = this.options;\n\n const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets;\n // There are three ways to configure tracePropagationTargets:\n // 1. via top level client option `tracePropagationTargets`\n // 2. via BrowserTracing option `tracePropagationTargets`\n // 3. via BrowserTracing option `tracingOrigins` (deprecated)\n //\n // To avoid confusion, favour top level client option `tracePropagationTargets`, and fallback to\n // BrowserTracing option `tracePropagationTargets` and then `tracingOrigins` (deprecated).\n // This is done as it minimizes bundle size (we don't have to have undefined checks).\n //\n // If both 1 and either one of 2 or 3 are set (from above), we log out a warning.\n const tracePropagationTargets = clientOptionsTracePropagationTargets || this.options.tracePropagationTargets;\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) {\n logger.warn(\n '[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.',\n );\n }\n\n instrumentRouting(\n (context) => {\n const transaction = this._createRouteTransaction(context);\n\n this.options._experiments.onStartRouteTransaction &&\n this.options._experiments.onStartRouteTransaction(transaction, context, getCurrentHub);\n\n return transaction;\n },\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n if (_experiments.enableInteractions) {\n this._registerInteractionListener();\n }\n\n instrumentOutgoingRequests({\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n });\n }\n\n /** Create routing idle transaction. */\n _createRouteTransaction(context) {\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n\n const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n const isPageloadTransaction = context.op === 'pageload';\n\n const sentryTrace = isPageloadTransaction ? getMetaContent('sentry-trace') : '';\n const baggage = isPageloadTransaction ? getMetaContent('baggage') : '';\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n const expandedContext = {\n ...context,\n ...traceparentData,\n metadata: {\n ...context.metadata,\n dynamicSamplingContext: traceparentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,\n },\n trimEnd: true,\n };\n\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n this._latestRouteName = finalContext.name;\n this._latestRouteSource = finalContext.metadata && finalContext.metadata.source;\n\n if (finalContext.sampled === false) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const { location } = WINDOW;\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n\n const scope = hub.getScope();\n\n // If it's a pageload and there is a meta tag set\n // use the traceparentData as the propagation context\n if (isPageloadTransaction && traceparentData) {\n scope.setPropagationContext(propagationContext);\n } else {\n // Navigation transactions should set a new propagation context based on the\n // created idle transaction.\n scope.setPropagationContext({\n traceId: idleTransaction.traceId,\n spanId: idleTransaction.spanId,\n parentSpanId: idleTransaction.parentSpanId,\n sampled: !!idleTransaction.sampled,\n });\n }\n\n idleTransaction.registerBeforeFinishCallback(transaction => {\n this._collectWebVitals();\n addPerformanceEntries(transaction);\n });\n\n return idleTransaction ;\n }\n\n /** Start listener for interaction transactions */\n _registerInteractionListener() {\n let inflightInteractionTransaction;\n const registerInteractionTransaction = () => {\n const { idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n const op = 'ui.action.click';\n\n const currentTransaction = getActiveTransaction();\n if (currentTransaction && currentTransaction.op && ['navigation', 'pageload'].includes(currentTransaction.op)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`,\n );\n return undefined;\n }\n\n if (inflightInteractionTransaction) {\n inflightInteractionTransaction.setFinishReason('interactionInterrupted');\n inflightInteractionTransaction.finish();\n inflightInteractionTransaction = undefined;\n }\n\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n if (!this._latestRouteName) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n const { location } = WINDOW;\n\n const context = {\n name: this._latestRouteName,\n op,\n trimEnd: true,\n metadata: {\n source: this._latestRouteSource || 'url',\n },\n };\n\n inflightInteractionTransaction = startIdleTransaction(\n hub,\n context,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n };\n\n ['click'].forEach(type => {\n addEventListener(type, registerInteractionTransaction, { once: false, capture: true });\n });\n }\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n const metaTag = getDomElement(`meta[name=${metaName}]`);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return metaTag ? metaTag.getAttribute('content') : undefined;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, getMetaContent };\n//# sourceMappingURL=browsertracing.js.map\n","import { logger, browserPerformanceTimeOrigin, addInstrumentationHandler } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n if (!WINDOW || !WINDOW.location) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl = WINDOW.location.href;\n\n let activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n // pageload should always start at timeOrigin (and needs to be in s, not ms)\n startTimestamp: browserPerformanceTimeOrigin ? browserPerformanceTimeOrigin / 1000 : undefined,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n\nexport { instrumentRoutingWithDefaults };\n//# sourceMappingURL=router.js.map\n","import { getActiveTransaction } from '@sentry/core';\nimport { logger } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n if (WINDOW && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() ;\n if (WINDOW.document.hidden && activeTransaction) {\n const statusType = 'cancelled';\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","import { parseRetryAfterHeader, logger, envelopeContainsItemType } from '@sentry/utils';\n\nconst MIN_DELAY = 100; // 100 ms\nconst START_DELAY = 5000; // 5 seconds\nconst MAX_DELAY = 3.6e6; // 1 hour\n\nfunction log(msg, error) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.info(`[Offline]: ${msg}`, error);\n}\n\n/**\n * Wraps a transport and stores and retries events when they fail to send.\n *\n * @param createTransport The transport to wrap.\n */\nfunction makeOfflineTransport(\n createTransport,\n) {\n return options => {\n const transport = createTransport(options);\n const store = options.createStore ? options.createStore(options) : undefined;\n\n let retryDelay = START_DELAY;\n let flushTimer;\n\n function shouldQueue(env, error, retryDelay) {\n // We don't queue Session Replay envelopes because they are:\n // - Ordered and Replay relies on the response status to know when they're successfully sent.\n // - Likely to fill the queue quickly and block other events from being sent.\n // We also want to drop client reports because they can be generated when we retry sending events while offline.\n if (envelopeContainsItemType(env, ['replay_event', 'replay_recording', 'client_report'])) {\n return false;\n }\n\n if (options.shouldStore) {\n return options.shouldStore(env, error, retryDelay);\n }\n\n return true;\n }\n\n function flushIn(delay) {\n if (!store) {\n return;\n }\n\n if (flushTimer) {\n clearTimeout(flushTimer );\n }\n\n flushTimer = setTimeout(async () => {\n flushTimer = undefined;\n\n const found = await store.pop();\n if (found) {\n log('Attempting to send previously queued event');\n void send(found).catch(e => {\n log('Failed to retry sending', e);\n });\n }\n }, delay) ;\n\n // We need to unref the timer in node.js, otherwise the node process never exit.\n if (typeof flushTimer !== 'number' && flushTimer.unref) {\n flushTimer.unref();\n }\n }\n\n function flushWithBackOff() {\n if (flushTimer) {\n return;\n }\n\n flushIn(retryDelay);\n\n retryDelay = Math.min(retryDelay * 2, MAX_DELAY);\n }\n\n async function send(envelope) {\n try {\n const result = await transport.send(envelope);\n\n let delay = MIN_DELAY;\n\n if (result) {\n // If there's a retry-after header, use that as the next delay.\n if (result.headers && result.headers['retry-after']) {\n delay = parseRetryAfterHeader(result.headers['retry-after']);\n } // If we have a server error, return now so we don't flush the queue.\n else if ((result.statusCode || 0) >= 400) {\n return result;\n }\n }\n\n flushIn(delay);\n retryDelay = START_DELAY;\n return result;\n } catch (e) {\n if (store && (await shouldQueue(envelope, e , retryDelay))) {\n await store.insert(envelope);\n flushWithBackOff();\n log('Error sending. Event queued', e );\n return {};\n } else {\n throw e;\n }\n }\n }\n\n if (options.flushAtStartup) {\n flushWithBackOff();\n }\n\n return {\n send,\n flush: t => transport.flush(t),\n };\n };\n}\n\nexport { MIN_DELAY, START_DELAY, makeOfflineTransport };\n//# sourceMappingURL=offline.js.map\n","import { makeOfflineTransport } from '@sentry/core';\nimport { serializeEnvelope, parseEnvelope } from '@sentry/utils';\n\n// 'Store', 'promisifyRequest' and 'createStore' were originally copied from the 'idb-keyval' package before being\n// modified and simplified: https://github.com/jakearchibald/idb-keyval\n//\n// At commit: 0420a704fd6cbb4225429c536b1f61112d012fca\n// Original licence:\n\n// Copyright 2016, Jake Archibald\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nfunction promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\n\n/** Create or open an IndexedDb store */\nfunction createStore(dbName, storeName) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = promisifyRequest(request);\n\n return callback => dbp.then(db => callback(db.transaction(storeName, 'readwrite').objectStore(storeName)));\n}\n\nfunction keys(store) {\n return promisifyRequest(store.getAllKeys() );\n}\n\n/** Insert into the store */\nfunction insert(store, value, maxQueueSize) {\n return store(store => {\n return keys(store).then(keys => {\n if (keys.length >= maxQueueSize) {\n return;\n }\n\n // We insert with an incremented key so that the entries are popped in order\n store.put(value, Math.max(...keys, 0) + 1);\n return promisifyRequest(store.transaction);\n });\n });\n}\n\n/** Pop the oldest value from the store */\nfunction pop(store) {\n return store(store => {\n return keys(store).then(keys => {\n if (keys.length === 0) {\n return undefined;\n }\n\n return promisifyRequest(store.get(keys[0])).then(value => {\n store.delete(keys[0]);\n return promisifyRequest(store.transaction).then(() => value);\n });\n });\n });\n}\n\nfunction createIndexedDbStore(options) {\n let store;\n\n // Lazily create the store only when it's needed\n function getStore() {\n if (store == undefined) {\n store = createStore(options.dbName || 'sentry-offline', options.storeName || 'queue');\n }\n\n return store;\n }\n\n return {\n insert: async (env) => {\n try {\n const serialized = await serializeEnvelope(env, options.textEncoder);\n await insert(getStore(), serialized, options.maxQueueSize || 30);\n } catch (_) {\n //\n }\n },\n pop: async () => {\n try {\n const deserialized = await pop(getStore());\n if (deserialized) {\n return parseEnvelope(\n deserialized,\n options.textEncoder || new TextEncoder(),\n options.textDecoder || new TextDecoder(),\n );\n }\n } catch (_) {\n //\n }\n\n return undefined;\n },\n };\n}\n\nfunction makeIndexedDbOfflineTransport(\n createTransport,\n) {\n return options => createTransport({ ...options, createStore: createIndexedDbStore });\n}\n\n/**\n * Creates a transport that uses IndexedDb to store events when offline.\n */\nfunction makeBrowserOfflineTransport(\n createTransport,\n) {\n return makeIndexedDbOfflineTransport(makeOfflineTransport(createTransport));\n}\n\nexport { createStore, insert, makeBrowserOfflineTransport, pop };\n//# sourceMappingURL=offline.js.map\n","import { DEFAULT_ENVIRONMENT, getCurrentHub } from '@sentry/core';\nimport { forEachEnvelopeItem, logger, uuid4, GLOBAL_OBJ, browserPerformanceTimeOrigin } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\n/* eslint-disable max-lines */\n\nconst MS_TO_NS = 1e6;\n// Use 0 as main thread id which is identical to threadId in node:worker_threads\n// where main logs 0 and workers seem to log in increments of 1\nconst THREAD_ID_STRING = String(0);\nconst THREAD_NAME = 'main';\n\n// Machine properties (eval only once)\nlet OS_PLATFORM = '';\nlet OS_PLATFORM_VERSION = '';\nlet OS_ARCH = '';\nlet OS_BROWSER = (WINDOW.navigator && WINDOW.navigator.userAgent) || '';\nlet OS_MODEL = '';\nconst OS_LOCALE =\n (WINDOW.navigator && WINDOW.navigator.language) ||\n (WINDOW.navigator && WINDOW.navigator.languages && WINDOW.navigator.languages[0]) ||\n '';\n\nfunction isUserAgentData(data) {\n return typeof data === 'object' && data !== null && 'getHighEntropyValues' in data;\n}\n\n// @ts-ignore userAgentData is not part of the navigator interface yet\nconst userAgentData = WINDOW.navigator && WINDOW.navigator.userAgentData;\n\nif (isUserAgentData(userAgentData)) {\n userAgentData\n .getHighEntropyValues(['architecture', 'model', 'platform', 'platformVersion', 'fullVersionList'])\n .then((ua) => {\n OS_PLATFORM = ua.platform || '';\n OS_ARCH = ua.architecture || '';\n OS_MODEL = ua.model || '';\n OS_PLATFORM_VERSION = ua.platformVersion || '';\n\n if (ua.fullVersionList && ua.fullVersionList.length > 0) {\n const firstUa = ua.fullVersionList[ua.fullVersionList.length - 1];\n OS_BROWSER = `${firstUa.brand} ${firstUa.version}`;\n }\n })\n .catch(e => void e);\n}\n\nfunction isProcessedJSSelfProfile(profile) {\n return !('thread_metadata' in profile);\n}\n\n// Enriches the profile with threadId of the current thread.\n// This is done in node as we seem to not be able to get the info from C native code.\n/**\n *\n */\nfunction enrichWithThreadInformation(profile) {\n if (!isProcessedJSSelfProfile(profile)) {\n return profile;\n }\n\n return convertJSSelfProfileToSampledFormat(profile);\n}\n\n// Profile is marked as optional because it is deleted from the metadata\n// by the integration before the event is processed by other integrations.\n\nfunction getTraceId(event) {\n const traceId = event && event.contexts && event.contexts['trace'] && event.contexts['trace']['trace_id'];\n // Log a warning if the profile has an invalid traceId (should be uuidv4).\n // All profiles and transactions are rejected if this is the case and we want to\n // warn users that this is happening if they enable debug flag\n if (typeof traceId === 'string' && traceId.length !== 32) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log(`[Profiling] Invalid traceId: ${traceId} on profiled event`);\n }\n }\n if (typeof traceId !== 'string') {\n return '';\n }\n\n return traceId;\n}\n/**\n * Creates a profiling event envelope from a Sentry event. If profile does not pass\n * validation, returns null.\n * @param event\n * @param dsn\n * @param metadata\n * @param tunnel\n * @returns {EventEnvelope | null}\n */\n\n/**\n * Creates a profiling event envelope from a Sentry event.\n */\nfunction createProfilePayload(\n event,\n processedProfile,\n profile_id,\n) {\n if (event.type !== 'transaction') {\n // createProfilingEventEnvelope should only be called for transactions,\n // we type guard this behavior with isProfiledTransactionEvent.\n throw new TypeError('Profiling events may only be attached to transactions, this should never occur.');\n }\n\n if (processedProfile === undefined || processedProfile === null) {\n throw new TypeError(\n `Cannot construct profiling event envelope without a valid profile. Got ${processedProfile} instead.`,\n );\n }\n\n const traceId = getTraceId(event);\n const enrichedThreadProfile = enrichWithThreadInformation(processedProfile);\n const transactionStartMs = typeof event.start_timestamp === 'number' ? event.start_timestamp * 1000 : Date.now();\n const transactionEndMs = typeof event.timestamp === 'number' ? event.timestamp * 1000 : Date.now();\n\n const profile = {\n event_id: profile_id,\n timestamp: new Date(transactionStartMs).toISOString(),\n platform: 'javascript',\n version: '1',\n release: event.release || '',\n environment: event.environment || DEFAULT_ENVIRONMENT,\n runtime: {\n name: 'javascript',\n version: WINDOW.navigator.userAgent,\n },\n os: {\n name: OS_PLATFORM,\n version: OS_PLATFORM_VERSION,\n build_number: OS_BROWSER,\n },\n device: {\n locale: OS_LOCALE,\n model: OS_MODEL,\n manufacturer: OS_BROWSER,\n architecture: OS_ARCH,\n is_emulator: false,\n },\n debug_meta: {\n images: applyDebugMetadata(processedProfile.resources),\n },\n profile: enrichedThreadProfile,\n transactions: [\n {\n name: event.transaction || '',\n id: event.event_id || uuid4(),\n trace_id: traceId,\n active_thread_id: THREAD_ID_STRING,\n relative_start_ns: '0',\n relative_end_ns: ((transactionEndMs - transactionStartMs) * 1e6).toFixed(0),\n },\n ],\n };\n\n return profile;\n}\n\n/**\n * Converts a JSSelfProfile to a our sampled format.\n * Does not currently perform stack indexing.\n */\nfunction convertJSSelfProfileToSampledFormat(input) {\n let EMPTY_STACK_ID = undefined;\n let STACK_ID = 0;\n\n // Initialize the profile that we will fill with data\n const profile = {\n samples: [],\n stacks: [],\n frames: [],\n thread_metadata: {\n [THREAD_ID_STRING]: { name: THREAD_NAME },\n },\n };\n\n if (!input.samples.length) {\n return profile;\n }\n\n // We assert samples.length > 0 above and timestamp should always be present\n const start = input.samples[0].timestamp;\n // The JS SDK might change it's time origin based on some heuristic (see See packages/utils/src/time.ts)\n // when that happens, we need to ensure we are correcting the profile timings so the two timelines stay in sync.\n // Since JS self profiling time origin is always initialized to performance.timeOrigin, we need to adjust for\n // the drift between the SDK selected value and our profile time origin.\n const origin =\n typeof performance.timeOrigin === 'number' ? performance.timeOrigin : browserPerformanceTimeOrigin || 0;\n const adjustForOriginChange = origin - (browserPerformanceTimeOrigin || origin);\n\n for (let i = 0; i < input.samples.length; i++) {\n const jsSample = input.samples[i];\n\n // If sample has no stack, add an empty sample\n if (jsSample.stackId === undefined) {\n if (EMPTY_STACK_ID === undefined) {\n EMPTY_STACK_ID = STACK_ID;\n profile.stacks[EMPTY_STACK_ID] = [];\n STACK_ID++;\n }\n\n profile['samples'][i] = {\n // convert ms timestamp to ns\n elapsed_since_start_ns: ((jsSample.timestamp + adjustForOriginChange - start) * MS_TO_NS).toFixed(0),\n stack_id: EMPTY_STACK_ID,\n thread_id: THREAD_ID_STRING,\n };\n continue;\n }\n\n let stackTop = input.stacks[jsSample.stackId];\n\n // Functions in top->down order (root is last)\n // We follow the stackTop.parentId trail and collect each visited frameId\n const stack = [];\n\n while (stackTop) {\n stack.push(stackTop.frameId);\n\n const frame = input.frames[stackTop.frameId];\n\n // If our frame has not been indexed yet, index it\n if (profile.frames[stackTop.frameId] === undefined) {\n profile.frames[stackTop.frameId] = {\n function: frame.name,\n abs_path: typeof frame.resourceId === 'number' ? input.resources[frame.resourceId] : undefined,\n lineno: frame.line,\n colno: frame.column,\n };\n }\n\n stackTop = stackTop.parentId === undefined ? undefined : input.stacks[stackTop.parentId];\n }\n\n const sample = {\n // convert ms timestamp to ns\n elapsed_since_start_ns: ((jsSample.timestamp + adjustForOriginChange - start) * MS_TO_NS).toFixed(0),\n stack_id: STACK_ID,\n thread_id: THREAD_ID_STRING,\n };\n\n profile['stacks'][STACK_ID] = stack;\n profile['samples'][i] = sample;\n STACK_ID++;\n }\n\n return profile;\n}\n\n/**\n * Adds items to envelope if they are not already present - mutates the envelope.\n * @param envelope\n */\nfunction addProfilesToEnvelope(envelope, profiles) {\n if (!profiles.length) {\n return envelope;\n }\n\n for (const profile of profiles) {\n // @ts-ignore untyped envelope\n envelope[1].push([{ type: 'profile' }, profile]);\n }\n return envelope;\n}\n\n/**\n * Finds transactions with profile_id context in the envelope\n * @param envelope\n * @returns\n */\nfunction findProfiledTransactionsFromEnvelope(envelope) {\n const events = [];\n\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type !== 'transaction') {\n return;\n }\n\n for (let j = 1; j < item.length; j++) {\n const event = item[j] ;\n\n if (event && event.contexts && event.contexts['profile'] && event.contexts['profile']['profile_id']) {\n events.push(item[j] );\n }\n }\n });\n\n return events;\n}\n\nconst debugIdStackParserCache = new WeakMap();\n/**\n * Applies debug meta data to an event from a list of paths to resources (sourcemaps)\n */\nfunction applyDebugMetadata(resource_paths) {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n if (!debugIdMap) {\n return [];\n }\n\n const hub = getCurrentHub();\n if (!hub) {\n return [];\n }\n const client = hub.getClient();\n if (!client) {\n return [];\n }\n const options = client.getOptions();\n if (!options) {\n return [];\n }\n const stackParser = options.stackParser;\n if (!stackParser) {\n return [];\n }\n\n let debugIdStackFramesCache;\n const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n if (cachedDebugIdStackFrameCache) {\n debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n } else {\n debugIdStackFramesCache = new Map();\n debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n }\n\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = Object.keys(debugIdMap).reduce((acc, debugIdStackTrace) => {\n let parsedStack;\n\n const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n if (cachedParsedStack) {\n parsedStack = cachedParsedStack;\n } else {\n parsedStack = stackParser(debugIdStackTrace);\n debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n }\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n const file = stackFrame && stackFrame.filename;\n\n if (stackFrame && file) {\n acc[file] = debugIdMap[debugIdStackTrace] ;\n break;\n }\n }\n return acc;\n }, {});\n\n const images = [];\n for (const path of resource_paths) {\n if (path && filenameDebugIdMap[path]) {\n images.push({\n type: 'sourcemap',\n code_file: path,\n debug_id: filenameDebugIdMap[path] ,\n });\n }\n }\n\n return images;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n if ((typeof rate !== 'number' && typeof rate !== 'boolean') || (typeof rate === 'number' && isNaN(rate))) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Profiling] Invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // Boolean sample rates are always valid\n if (rate === true || rate === false) {\n return true;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Profiling] Invalid sample rate. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\nfunction isValidProfile(profile) {\n if (profile.samples.length < 2) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n // Log a warning if the profile has less than 2 samples so users can know why\n // they are not seeing any profiling data and we cant avoid the back and forth\n // of asking them to provide us with a dump of the profile data.\n logger.log('[Profiling] Discarding profile because it contains less than 2 samples');\n }\n return false;\n }\n\n if (!profile.frames.length) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log('[Profiling] Discarding profile because it contains no frames');\n }\n return false;\n }\n\n return true;\n}\n\n/**\n * Creates a profiling envelope item, if the profile does not pass validation, returns null.\n * @param event\n * @returns {Profile | null}\n */\nfunction createProfilingEvent(profile_id, profile, event) {\n if (!isValidProfile(profile)) {\n return null;\n }\n\n return createProfilePayload(event, profile, profile_id);\n}\n\nconst PROFILE_MAP = new Map();\n/**\n *\n */\nfunction addProfileToMap(profile_id, profile) {\n PROFILE_MAP.set(profile_id, profile);\n\n if (PROFILE_MAP.size > 30) {\n const last = PROFILE_MAP.keys().next().value;\n PROFILE_MAP.delete(last);\n }\n}\n\nexport { PROFILE_MAP, addProfileToMap, addProfilesToEnvelope, applyDebugMetadata, convertJSSelfProfileToSampledFormat, createProfilePayload, createProfilingEvent, enrichWithThreadInformation, findProfiledTransactionsFromEnvelope, isValidSampleRate };\n//# sourceMappingURL=utils.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { logger, uuid4 } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\nimport { isValidSampleRate, addProfileToMap } from './utils.js';\n\n/* eslint-disable complexity */\n\nconst MAX_PROFILE_DURATION_MS = 30000;\n// Keep a flag value to avoid re-initializing the profiler constructor. If it fails\n// once, it will always fail and this allows us to early return.\nlet PROFILING_CONSTRUCTOR_FAILED = false;\n\n/**\n * Check if profiler constructor is available.\n * @param maybeProfiler\n */\nfunction isJSProfilerSupported(maybeProfiler) {\n return typeof maybeProfiler === 'function';\n}\n\n/**\n * Safety wrapper for startTransaction for the unlikely case that transaction starts before tracing is imported -\n * if that happens we want to avoid throwing an error from profiling code.\n * see https://github.com/getsentry/sentry-javascript/issues/4731.\n *\n * @experimental\n */\nfunction onProfilingStartRouteTransaction(transaction) {\n if (!transaction) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log('[Profiling] Transaction is undefined, skipping profiling');\n }\n return transaction;\n }\n\n return wrapTransactionWithProfiling(transaction);\n}\n\n/**\n * Wraps startTransaction and stopTransaction with profiling related logic.\n * startProfiling is called after the call to startTransaction in order to avoid our own code from\n * being profiled. Because of that same reason, stopProfiling is called before the call to stopTransaction.\n */\nfunction wrapTransactionWithProfiling(transaction) {\n // Feature support check first\n const JSProfilerConstructor = WINDOW.Profiler;\n\n if (!isJSProfilerSupported(JSProfilerConstructor)) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log(\n '[Profiling] Profiling is not supported by this browser, Profiler interface missing on window object.',\n );\n }\n return transaction;\n }\n\n // If constructor failed once, it will always fail, so we can early return.\n if (PROFILING_CONSTRUCTOR_FAILED) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log('[Profiling] Profiling has been disabled for the duration of the current user session.');\n }\n return transaction;\n }\n\n const client = getCurrentHub().getClient();\n const options = client && client.getOptions();\n if (!options) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Profiling] Profiling disabled, no options found.');\n return transaction;\n }\n\n // @ts-ignore profilesSampleRate is not part of the browser options yet\n const profilesSampleRate = options.profilesSampleRate;\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(profilesSampleRate)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Profiling] Discarding profile because of invalid sample rate.');\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `profileSampleRate` is 0, it's a sign the profile should be dropped\n if (!profilesSampleRate) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Profiling] Discarding profile because a negative sampling decision was inherited or profileSampleRate is set to 0',\n );\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n const sampled = profilesSampleRate === true ? true : Math.random() < profilesSampleRate;\n // Check if we should sample this profile\n if (!sampled) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Profiling] Discarding profile because it's not included in the random sample (sampling rate = ${Number(\n profilesSampleRate,\n )})`,\n );\n return transaction;\n }\n\n // From initial testing, it seems that the minimum value for sampleInterval is 10ms.\n const samplingIntervalMS = 10;\n // Start the profiler\n const maxSamples = Math.floor(MAX_PROFILE_DURATION_MS / samplingIntervalMS);\n let profiler;\n\n // Attempt to initialize the profiler constructor, if it fails, we disable profiling for the current user session.\n // This is likely due to a missing 'Document-Policy': 'js-profiling' header. We do not want to throw an error if this happens\n // as we risk breaking the user's application, so just disable profiling and log an error.\n try {\n profiler = new JSProfilerConstructor({ sampleInterval: samplingIntervalMS, maxBufferSize: maxSamples });\n } catch (e) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log(\n \"[Profiling] Failed to initialize the Profiling constructor, this is likely due to a missing 'Document-Policy': 'js-profiling' header.\",\n );\n logger.log('[Profiling] Disabling profiling for current user session.');\n }\n PROFILING_CONSTRUCTOR_FAILED = true;\n }\n\n // We failed to construct the profiler, fallback to original transaction - there is no need to log\n // anything as we already did that in the try/catch block.\n if (!profiler) {\n return transaction;\n }\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log(`[Profiling] started profiling transaction: ${transaction.name || transaction.description}`);\n }\n\n // We create \"unique\" transaction names to avoid concurrent transactions with same names\n // from being ignored by the profiler. From here on, only this transaction name should be used when\n // calling the profiler methods. Note: we log the original name to the user to avoid confusion.\n const profileId = uuid4();\n\n /**\n * Idempotent handler for profile stop\n */\n async function onProfileHandler() {\n // Check if the profile exists and return it the behavior has to be idempotent as users may call transaction.finish multiple times.\n if (!transaction) {\n return null;\n }\n // Satisfy the type checker, but profiler will always be defined here.\n if (!profiler) {\n return null;\n }\n\n // This is temporary - we will use the collected span data to evaluate\n // if deferring txn.finish until profiler resolves is a viable approach.\n const stopProfilerSpan = transaction.startChild({ description: 'profiler.stop', op: 'profiler' });\n\n return profiler\n .stop()\n .then((p) => {\n stopProfilerSpan.finish();\n\n if (maxDurationTimeoutID) {\n WINDOW.clearTimeout(maxDurationTimeoutID);\n maxDurationTimeoutID = undefined;\n }\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log(`[Profiling] stopped profiling of transaction: ${transaction.name || transaction.description}`);\n }\n\n // In case of an overlapping transaction, stopProfiling may return null and silently ignore the overlapping profile.\n if (!p) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log(\n `[Profiling] profiler returned null profile for: ${transaction.name || transaction.description}`,\n 'this may indicate an overlapping transaction or a call to stopProfiling with a profile title that was never started',\n );\n }\n return null;\n }\n\n addProfileToMap(profileId, p);\n return null;\n })\n .catch(error => {\n stopProfilerSpan.finish();\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log('[Profiling] error while stopping profiler:', error);\n }\n return null;\n });\n }\n\n // Enqueue a timeout to prevent profiles from running over max duration.\n let maxDurationTimeoutID = WINDOW.setTimeout(() => {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.log(\n '[Profiling] max profile duration elapsed, stopping profiling for:',\n transaction.name || transaction.description,\n );\n }\n // If the timeout exceeds, we want to stop profiling, but not finish the transaction\n void onProfileHandler();\n }, MAX_PROFILE_DURATION_MS);\n\n // We need to reference the original finish call to avoid creating an infinite loop\n const originalFinish = transaction.finish.bind(transaction);\n\n /**\n * Wraps startTransaction and stopTransaction with profiling related logic.\n * startProfiling is called after the call to startTransaction in order to avoid our own code from\n * being profiled. Because of that same reason, stopProfiling is called before the call to stopTransaction.\n */\n function profilingWrappedTransactionFinish() {\n if (!transaction) {\n return originalFinish();\n }\n // onProfileHandler should always return the same profile even if this is called multiple times.\n // Always call onProfileHandler to ensure stopProfiling is called and the timeout is cleared.\n void onProfileHandler().then(\n () => {\n transaction.setContext('profile', { profile_id: profileId });\n originalFinish();\n },\n () => {\n // If onProfileHandler fails, we still want to call the original finish method.\n originalFinish();\n },\n );\n\n return transaction;\n }\n\n transaction.finish = profilingWrappedTransactionFinish;\n return transaction;\n}\n\nexport { MAX_PROFILE_DURATION_MS, onProfilingStartRouteTransaction, wrapTransactionWithProfiling };\n//# sourceMappingURL=hubextensions.js.map\n","import { logger } from '@sentry/utils';\nimport { wrapTransactionWithProfiling } from './hubextensions.js';\nimport { PROFILE_MAP, findProfiledTransactionsFromEnvelope, createProfilingEvent, addProfilesToEnvelope } from './utils.js';\n\n/**\n * Browser profiling integration. Stores any event that has contexts[\"profile\"][\"profile_id\"]\n * This exists because we do not want to await async profiler.stop calls as transaction.finish is called\n * in a synchronous context. Instead, we handle sending the profile async from the promise callback and\n * rely on being able to pull the event from the cache when we need to construct the envelope. This makes the\n * integration less reliable as we might be dropping profiles when the cache is full.\n *\n * @experimental\n */\nclass BrowserProfilingIntegration {constructor() { BrowserProfilingIntegration.prototype.__init.call(this);BrowserProfilingIntegration.prototype.__init2.call(this); }\n __init() {this.name = 'BrowserProfilingIntegration';}\n __init2() {this.getCurrentHub = undefined;}\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n this.getCurrentHub = getCurrentHub;\n const client = this.getCurrentHub().getClient() ;\n\n if (client && typeof client.on === 'function') {\n client.on('startTransaction', (transaction) => {\n wrapTransactionWithProfiling(transaction);\n });\n\n client.on('beforeEnvelope', (envelope) => {\n // if not profiles are in queue, there is nothing to add to the envelope.\n if (!PROFILE_MAP['size']) {\n return;\n }\n\n const profiledTransactionEvents = findProfiledTransactionsFromEnvelope(envelope);\n if (!profiledTransactionEvents.length) {\n return;\n }\n\n const profilesToAddToEnvelope = [];\n\n for (const profiledTransaction of profiledTransactionEvents) {\n const context = profiledTransaction && profiledTransaction.contexts;\n const profile_id = context && context['profile'] && (context['profile']['profile_id'] );\n\n if (!profile_id) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Profiling] cannot find profile for a transaction without a profile context');\n continue;\n }\n\n // Remove the profile from the transaction context before sending, relay will take care of the rest.\n if (context && context['profile']) {\n delete context.profile;\n }\n\n const profile = PROFILE_MAP.get(profile_id);\n if (!profile) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Profiling] Could not retrieve profile for transaction: ${profile_id}`);\n continue;\n }\n\n PROFILE_MAP.delete(profile_id);\n const profileEvent = createProfilingEvent(profile_id, profile, profiledTransaction );\n\n if (profileEvent) {\n profilesToAddToEnvelope.push(profileEvent);\n }\n }\n\n addProfilesToEnvelope(envelope, profilesToAddToEnvelope);\n });\n } else {\n logger.warn('[Profiling] Client does not support hooks, profiling will be disabled');\n }\n }\n}\n\nexport { BrowserProfilingIntegration };\n//# sourceMappingURL=integration.js.map\n","import { Integrations } from '@sentry/core';\nexport { FunctionToString, Hub, InboundFilters, ModuleMetadata, SDK_VERSION, Scope, addBreadcrumb, addGlobalEventProcessor, addTracingExtensions, captureEvent, captureException, captureMessage, configureScope, createTransport, extractTraceparentData, getActiveTransaction, getCurrentHub, getHubFromCarrier, makeMain, makeMultiplexedTransport, setContext, setExtra, setExtras, setTag, setTags, setUser, spanStatusfromHttpCode, startTransaction, trace, withScope } from '@sentry/core';\nimport { WINDOW } from './helpers.js';\nexport { WINDOW } from './helpers.js';\nexport { BrowserClient } from './client.js';\nexport { makeFetchTransport } from './transports/fetch.js';\nexport { makeXHRTransport } from './transports/xhr.js';\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser } from './stack-parsers.js';\nexport { eventFromException, eventFromMessage } from './eventbuilder.js';\nexport { createUserFeedbackEnvelope } from './userfeedback.js';\nexport { captureUserFeedback, close, defaultIntegrations, flush, forceLoad, init, lastEventId, onLoad, showReportDialog, wrap } from './sdk.js';\nimport * as index from './integrations/index.js';\nexport { Replay } from '@sentry/replay';\nexport { BrowserTracing, defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from '@sentry-internal/tracing';\nexport { makeBrowserOfflineTransport } from './transports/offline.js';\nexport { onProfilingStartRouteTransaction } from './profiling/hubextensions.js';\nexport { BrowserProfilingIntegration } from './profiling/integration.js';\nexport { GlobalHandlers } from './integrations/globalhandlers.js';\nexport { TryCatch } from './integrations/trycatch.js';\nexport { Breadcrumbs } from './integrations/breadcrumbs.js';\nexport { LinkedErrors } from './integrations/linkederrors.js';\nexport { HttpContext } from './integrations/httpcontext.js';\nexport { Dedupe } from './integrations/dedupe.js';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nif (WINDOW.Sentry && WINDOW.Sentry.Integrations) {\n windowIntegrations = WINDOW.Sentry.Integrations;\n}\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...Integrations,\n ...index,\n};\n\nexport { INTEGRATIONS as Integrations };\n//# sourceMappingURL=index.js.map\n","import { SDK_VERSION, init as init$1 } from '@sentry/browser';\n\n/**\n * Inits the React SDK\n */\nfunction init(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.react',\n packages: [\n {\n name: 'npm:@sentry/react',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n init$1(options);\n}\n\nexport { init };\n//# sourceMappingURL=sdk.js.map\n","import { logger } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\n\n/** A class object that can instantiate Client objects. */\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nfunction initAndBind(\n clientClass,\n options,\n) {\n if (options.debug === true) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n\nexport { initAndBind };\n//# sourceMappingURL=sdk.js.map\n","const REACT_RENDER_OP = 'ui.react.render';\n\nconst REACT_UPDATE_OP = 'ui.react.update';\n\nconst REACT_MOUNT_OP = 'ui.react.mount';\n\nexport { REACT_MOUNT_OP, REACT_RENDER_OP, REACT_UPDATE_OP };\n//# sourceMappingURL=constants.js.map\n","import { getCurrentHub } from '@sentry/browser';\nimport { timestampInSeconds } from '@sentry/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { REACT_MOUNT_OP, REACT_UPDATE_OP, REACT_RENDER_OP } from './constants.js';\n\nconst _jsxFileName = \"/home/runner/work/sentry-javascript/sentry-javascript/packages/react/src/profiler.tsx\";\n\nconst UNKNOWN_COMPONENT = 'unknown';\n\n/**\n * The Profiler component leverages Sentry's Tracing integration to generate\n * spans based on component lifecycles.\n */\nclass Profiler extends React.Component {\n /**\n * The span of the mount activity\n * Made protected for the React Native SDK to access\n */\n __init() {this._mountSpan = undefined;}\n /**\n * The span that represents the duration of time between shouldComponentUpdate and componentDidUpdate\n */\n __init2() {this._updateSpan = undefined;}\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n static __initStatic() {this.defaultProps = {\n disabled: false,\n includeRender: true,\n includeUpdates: true,\n };}\n\n constructor(props) {\n super(props);Profiler.prototype.__init.call(this);Profiler.prototype.__init2.call(this); const { name, disabled = false } = this.props;\n\n if (disabled) {\n return;\n }\n\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n this._mountSpan = activeTransaction.startChild({\n description: `<${name}>`,\n op: REACT_MOUNT_OP,\n });\n }\n }\n\n // If a component mounted, we can finish the mount activity.\n componentDidMount() {\n if (this._mountSpan) {\n this._mountSpan.finish();\n }\n }\n\n shouldComponentUpdate({ updateProps, includeUpdates = true }) {\n // Only generate an update span if includeUpdates is true, if there is a valid mountSpan,\n // and if the updateProps have changed. It is ok to not do a deep equality check here as it is expensive.\n // We are just trying to give baseline clues for further investigation.\n if (includeUpdates && this._mountSpan && updateProps !== this.props.updateProps) {\n // See what props haved changed between the previous props, and the current props. This is\n // set as data on the span. We just store the prop keys as the values could be potenially very large.\n const changedProps = Object.keys(updateProps).filter(k => updateProps[k] !== this.props.updateProps[k]);\n if (changedProps.length > 0) {\n const now = timestampInSeconds();\n this._updateSpan = this._mountSpan.startChild({\n data: {\n changedProps,\n },\n description: `<${this.props.name}>`,\n op: REACT_UPDATE_OP,\n startTimestamp: now,\n });\n }\n }\n\n return true;\n }\n\n componentDidUpdate() {\n if (this._updateSpan) {\n this._updateSpan.finish();\n this._updateSpan = undefined;\n }\n }\n\n // If a component is unmounted, we can say it is no longer on the screen.\n // This means we can finish the span representing the component render.\n componentWillUnmount() {\n const { name, includeRender = true } = this.props;\n\n if (this._mountSpan && includeRender) {\n // If we were able to obtain the spanId of the mount activity, we should set the\n // next activity as a child to the component mount activity.\n this._mountSpan.startChild({\n description: `<${name}>`,\n endTimestamp: timestampInSeconds(),\n op: REACT_RENDER_OP,\n startTimestamp: this._mountSpan.endTimestamp,\n });\n }\n }\n\n render() {\n return this.props.children;\n }\n} Profiler.__initStatic();\n\n/**\n * withProfiler is a higher order component that wraps a\n * component in a {@link Profiler} component. It is recommended that\n * the higher order component be used over the regular {@link Profiler} component.\n *\n * @param WrappedComponent component that is wrapped by Profiler\n * @param options the {@link ProfilerProps} you can pass into the Profiler\n */\nfunction withProfiler(\n WrappedComponent,\n // We do not want to have `updateProps` given in options, it is instead filled through the HOC.\n options,\n) {\n const componentDisplayName =\n (options && options.name) || WrappedComponent.displayName || WrappedComponent.name || UNKNOWN_COMPONENT;\n\n const Wrapped = (props) => (\n React.createElement(Profiler, { ...options, name: componentDisplayName, updateProps: props, __self: this, __source: {fileName: _jsxFileName, lineNumber: 146}}\n , React.createElement(WrappedComponent, { ...props, __self: this, __source: {fileName: _jsxFileName, lineNumber: 147}} )\n )\n );\n\n Wrapped.displayName = `profiler(${componentDisplayName})`;\n\n // Copy over static methods from Wrapped component to Profiler HOC\n // See: https://reactjs.org/docs/higher-order-components.html#static-methods-must-be-copied-over\n hoistNonReactStatics(Wrapped, WrappedComponent);\n return Wrapped;\n}\n\n/**\n *\n * `useProfiler` is a React hook that profiles a React component.\n *\n * Requires React 16.8 or above.\n * @param name displayName of component being profiled\n */\nfunction useProfiler(\n name,\n options = {\n disabled: false,\n hasRenderSpan: true,\n },\n) {\n const [mountSpan] = React.useState(() => {\n if (options && options.disabled) {\n return undefined;\n }\n\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n return activeTransaction.startChild({\n description: `<${name}>`,\n op: REACT_MOUNT_OP,\n });\n }\n\n return undefined;\n });\n\n React.useEffect(() => {\n if (mountSpan) {\n mountSpan.finish();\n }\n\n return () => {\n if (mountSpan && options.hasRenderSpan) {\n mountSpan.startChild({\n description: `<${name}>`,\n endTimestamp: timestampInSeconds(),\n op: REACT_RENDER_OP,\n startTimestamp: mountSpan.endTimestamp,\n });\n }\n };\n // We only want this to run once.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\n/** Grabs active transaction off scope */\nfunction getActiveTransaction(hub = getCurrentHub()) {\n if (hub) {\n const scope = hub.getScope();\n if (scope) {\n return scope.getTransaction() ;\n }\n }\n\n return undefined;\n}\n\nexport { Profiler, UNKNOWN_COMPONENT, getActiveTransaction, useProfiler, withProfiler };\n//# sourceMappingURL=profiler.js.map\n","import { getCurrentHub, showReportDialog, withScope, captureException } from '@sentry/browser';\nimport { isError, logger } from '@sentry/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\n\nconst _jsxFileName = \"/home/runner/work/sentry-javascript/sentry-javascript/packages/react/src/errorboundary.tsx\";\n\nfunction isAtLeastReact17(version) {\n const major = version.match(/^([^.]+)/);\n return major !== null && parseInt(major[0]) >= 17;\n}\n\nconst UNKNOWN_COMPONENT = 'unknown';\n\nconst INITIAL_STATE = {\n componentStack: null,\n error: null,\n eventId: null,\n};\n\nfunction setCause(error, cause) {\n const seenErrors = new WeakMap();\n\n function recurse(error, cause) {\n // If we've already seen the error, there is a recursive loop somewhere in the error's\n // cause chain. Let's just bail out then to prevent a stack overflow.\n if (seenErrors.has(error)) {\n return;\n }\n if (error.cause) {\n seenErrors.set(error, true);\n return recurse(error.cause, cause);\n }\n error.cause = cause;\n }\n\n recurse(error, cause);\n}\n\n/**\n * A ErrorBoundary component that logs errors to Sentry. Requires React >= 16.\n * NOTE: If you are a Sentry user, and you are seeing this stack frame, it means the\n * Sentry React SDK ErrorBoundary caught an error invoking your application code. This\n * is expected behavior and NOT indicative of a bug with the Sentry React SDK.\n */\nclass ErrorBoundary extends React.Component {\n __init() {this.state = INITIAL_STATE;}\n\n __init2() {this._openFallbackReportDialog = true;}\n\n constructor(props) {\n super(props);ErrorBoundary.prototype.__init.call(this);ErrorBoundary.prototype.__init2.call(this);ErrorBoundary.prototype.__init3.call(this);\n const client = getCurrentHub().getClient();\n if (client && client.on && props.showDialog) {\n this._openFallbackReportDialog = false;\n client.on('afterSendEvent', event => {\n if (!event.type && event.event_id === this._lastEventId) {\n showReportDialog({ ...props.dialogOptions, eventId: this._lastEventId });\n }\n });\n }\n }\n\n componentDidCatch(error, { componentStack }) {\n const { beforeCapture, onError, showDialog, dialogOptions } = this.props;\n withScope(scope => {\n // If on React version >= 17, create stack trace from componentStack param and links\n // to to the original error using `error.cause` otherwise relies on error param for stacktrace.\n // Linking errors requires the `LinkedErrors` integration be enabled.\n // See: https://reactjs.org/blog/2020/08/10/react-v17-rc.html#native-component-stacks\n //\n // Although `componentDidCatch` is typed to accept an `Error` object, it can also be invoked\n // with non-error objects. This is why we need to check if the error is an error-like object.\n // See: https://github.com/getsentry/sentry-javascript/issues/6167\n if (isAtLeastReact17(React.version) && isError(error)) {\n const errorBoundaryError = new Error(error.message);\n errorBoundaryError.name = `React ErrorBoundary ${errorBoundaryError.name}`;\n errorBoundaryError.stack = componentStack;\n\n // Using the `LinkedErrors` integration to link the errors together.\n setCause(error, errorBoundaryError);\n }\n\n if (beforeCapture) {\n beforeCapture(scope, error, componentStack);\n }\n const eventId = captureException(error, { contexts: { react: { componentStack } } });\n if (onError) {\n onError(error, componentStack, eventId);\n }\n if (showDialog) {\n this._lastEventId = eventId;\n if (this._openFallbackReportDialog) {\n showReportDialog({ ...dialogOptions, eventId });\n }\n }\n\n // componentDidCatch is used over getDerivedStateFromError\n // so that componentStack is accessible through state.\n this.setState({ error, componentStack, eventId });\n });\n }\n\n componentDidMount() {\n const { onMount } = this.props;\n if (onMount) {\n onMount();\n }\n }\n\n componentWillUnmount() {\n const { error, componentStack, eventId } = this.state;\n const { onUnmount } = this.props;\n if (onUnmount) {\n onUnmount(error, componentStack, eventId);\n }\n }\n\n __init3() {this.resetErrorBoundary = () => {\n const { onReset } = this.props;\n const { error, componentStack, eventId } = this.state;\n if (onReset) {\n onReset(error, componentStack, eventId);\n }\n this.setState(INITIAL_STATE);\n };}\n\n render() {\n const { fallback, children } = this.props;\n const state = this.state;\n\n if (state.error) {\n let element = undefined;\n if (typeof fallback === 'function') {\n element = fallback({\n error: state.error,\n componentStack: state.componentStack,\n resetError: this.resetErrorBoundary,\n eventId: state.eventId,\n });\n } else {\n element = fallback;\n }\n\n if (React.isValidElement(element)) {\n return element;\n }\n\n if (fallback) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('fallback did not produce a valid ReactElement');\n }\n\n // Fail gracefully if no fallback provided or is not valid\n return null;\n }\n\n if (typeof children === 'function') {\n return (children )();\n }\n return children;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction withErrorBoundary(\n WrappedComponent,\n errorBoundaryOptions,\n) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const componentDisplayName = WrappedComponent.displayName || WrappedComponent.name || UNKNOWN_COMPONENT;\n\n const Wrapped = (props) => (\n React.createElement(ErrorBoundary, { ...errorBoundaryOptions, __self: this, __source: {fileName: _jsxFileName, lineNumber: 224}}\n , React.createElement(WrappedComponent, { ...props, __self: this, __source: {fileName: _jsxFileName, lineNumber: 225}} )\n )\n );\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n Wrapped.displayName = `errorBoundary(${componentDisplayName})`;\n\n // Copy over static methods from Wrapped component to Profiler HOC\n // See: https://reactjs.org/docs/higher-order-components.html#static-methods-must-be-copied-over\n hoistNonReactStatics(Wrapped, WrappedComponent);\n return Wrapped;\n}\n\nexport { ErrorBoundary, UNKNOWN_COMPONENT, isAtLeastReact17, withErrorBoundary };\n//# sourceMappingURL=errorboundary.js.map\n","import { configureScope, getCurrentHub } from '@sentry/browser';\nimport { addNonEnumerableProperty } from '@sentry/utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nconst ACTION_BREADCRUMB_CATEGORY = 'redux.action';\nconst ACTION_BREADCRUMB_TYPE = 'info';\n\nconst defaultOptions = {\n actionTransformer: action => action,\n stateTransformer: state => state || null,\n};\n\n/**\n * Creates an enhancer that would be passed to Redux's createStore to log actions and the latest state to Sentry.\n *\n * @param enhancerOptions Options to pass to the enhancer\n */\nfunction createReduxEnhancer(enhancerOptions) {\n // Note: We return an any type as to not have type conflicts.\n const options = {\n ...defaultOptions,\n ...enhancerOptions,\n };\n\n return (next) =>\n (reducer, initialState) => {\n const sentryReducer = (state, action) => {\n const newState = reducer(state, action);\n\n configureScope(scope => {\n /* Action breadcrumbs */\n const transformedAction = options.actionTransformer(action);\n if (typeof transformedAction !== 'undefined' && transformedAction !== null) {\n scope.addBreadcrumb({\n category: ACTION_BREADCRUMB_CATEGORY,\n data: transformedAction,\n type: ACTION_BREADCRUMB_TYPE,\n });\n }\n\n /* Set latest state to scope */\n const transformedState = options.stateTransformer(newState);\n if (typeof transformedState !== 'undefined' && transformedState !== null) {\n const client = getCurrentHub().getClient();\n const options = client && client.getOptions();\n const normalizationDepth = (options && options.normalizeDepth) || 3; // default state normalization depth to 3\n\n // Set the normalization depth of the redux state to the configured `normalizeDepth` option or a sane number as a fallback\n const newStateContext = { state: { type: 'redux', value: transformedState } };\n addNonEnumerableProperty(\n newStateContext,\n '__sentry_override_normalization_depth__',\n 3 + // 3 layers for `state.value.transformedState`\n normalizationDepth, // rest for the actual state\n );\n\n scope.setContext('state', newStateContext);\n } else {\n scope.setContext('state', null);\n }\n\n /* Allow user to configure scope with latest state */\n const { configureScopeWithState } = options;\n if (typeof configureScopeWithState === 'function') {\n configureScopeWithState(scope, newState);\n }\n });\n\n return newState;\n };\n\n return next(sentryReducer, initialState);\n };\n}\n\nexport { createReduxEnhancer };\n//# sourceMappingURL=redux.js.map\n","import { WINDOW } from '@sentry/browser';\n\n// Many of the types below had to be mocked out to prevent typescript issues\n// these types are required for correct functionality.\n\n/**\n * Creates routing instrumentation for React Router v3\n * Works for React Router >= 3.2.0 and < 4.0.0\n *\n * @param history object from the `history` library\n * @param routes a list of all routes, should be\n * @param match `Router.match` utility\n */\nfunction reactRouterV3Instrumentation(\n history,\n routes,\n match,\n) {\n return (\n startTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n ) => {\n let activeTransaction;\n let prevName;\n\n // Have to use window.location because history.location might not be defined.\n if (startTransactionOnPageLoad && WINDOW && WINDOW.location) {\n normalizeTransactionName(\n routes,\n WINDOW.location ,\n match,\n (localName, source = 'url') => {\n prevName = localName;\n activeTransaction = startTransaction({\n name: prevName,\n op: 'pageload',\n tags: {\n 'routing.instrumentation': 'react-router-v3',\n },\n metadata: {\n source,\n },\n });\n },\n );\n }\n\n if (startTransactionOnLocationChange && history.listen) {\n history.listen(location => {\n if (location.action === 'PUSH' || location.action === 'POP') {\n if (activeTransaction) {\n activeTransaction.finish();\n }\n const tags = {\n 'routing.instrumentation': 'react-router-v3',\n };\n if (prevName) {\n tags.from = prevName;\n }\n normalizeTransactionName(routes, location, match, (localName, source = 'url') => {\n prevName = localName;\n activeTransaction = startTransaction({\n name: prevName,\n op: 'navigation',\n tags,\n metadata: {\n source,\n },\n });\n });\n }\n });\n }\n };\n}\n\n/**\n * Normalize transaction names using `Router.match`\n */\nfunction normalizeTransactionName(\n appRoutes,\n location,\n match,\n callback,\n) {\n let name = location.pathname;\n match(\n {\n location,\n routes: appRoutes,\n },\n (error, _redirectLocation, renderProps) => {\n if (error || !renderProps) {\n return callback(name);\n }\n\n const routePath = getRouteStringFromRoutes(renderProps.routes || []);\n if (routePath.length === 0 || routePath === '/*') {\n return callback(name);\n }\n\n name = routePath;\n return callback(name, 'route');\n },\n );\n}\n\n/**\n * Generate route name from array of routes\n */\nfunction getRouteStringFromRoutes(routes) {\n if (!Array.isArray(routes) || routes.length === 0) {\n return '';\n }\n\n const routesWithPaths = routes.filter((route) => !!route.path);\n\n let index = -1;\n for (let x = routesWithPaths.length - 1; x >= 0; x--) {\n const route = routesWithPaths[x];\n if (route.path && route.path.startsWith('/')) {\n index = x;\n break;\n }\n }\n\n return routesWithPaths\n .slice(index)\n .filter(({ path }) => !!path)\n .map(({ path }) => path)\n .join('');\n}\n\nexport { reactRouterV3Instrumentation };\n//# sourceMappingURL=reactrouterv3.js.map\n","import { WINDOW } from '@sentry/browser';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\n\nconst _jsxFileName = \"/home/runner/work/sentry-javascript/sentry-javascript/packages/react/src/reactrouter.tsx\";\n// We need to disable eslint no-explict-any because any is required for the\n// react-router typings.\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nlet activeTransaction;\n\nfunction reactRouterV4Instrumentation(\n history,\n routes,\n matchPath,\n) {\n return createReactRouterInstrumentation(history, 'react-router-v4', routes, matchPath);\n}\n\nfunction reactRouterV5Instrumentation(\n history,\n routes,\n matchPath,\n) {\n return createReactRouterInstrumentation(history, 'react-router-v5', routes, matchPath);\n}\n\nfunction createReactRouterInstrumentation(\n history,\n name,\n allRoutes = [],\n matchPath,\n) {\n function getInitPathName() {\n if (history && history.location) {\n return history.location.pathname;\n }\n\n if (WINDOW && WINDOW.location) {\n return WINDOW.location.pathname;\n }\n\n return undefined;\n }\n\n /**\n * Normalizes a transaction name. Returns the new name as well as the\n * source of the transaction.\n *\n * @param pathname The initial pathname we normalize\n */\n function normalizeTransactionName(pathname) {\n if (allRoutes.length === 0 || !matchPath) {\n return [pathname, 'url'];\n }\n\n const branches = matchRoutes(allRoutes, pathname, matchPath);\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let x = 0; x < branches.length; x++) {\n if (branches[x].match.isExact) {\n return [branches[x].match.path, 'route'];\n }\n }\n\n return [pathname, 'url'];\n }\n\n const tags = {\n 'routing.instrumentation': name,\n };\n\n return (customStartTransaction, startTransactionOnPageLoad = true, startTransactionOnLocationChange = true) => {\n const initPathName = getInitPathName();\n if (startTransactionOnPageLoad && initPathName) {\n const [name, source] = normalizeTransactionName(initPathName);\n activeTransaction = customStartTransaction({\n name,\n op: 'pageload',\n tags,\n metadata: {\n source,\n },\n });\n }\n\n if (startTransactionOnLocationChange && history.listen) {\n history.listen((location, action) => {\n if (action && (action === 'PUSH' || action === 'POP')) {\n if (activeTransaction) {\n activeTransaction.finish();\n }\n\n const [name, source] = normalizeTransactionName(location.pathname);\n activeTransaction = customStartTransaction({\n name,\n op: 'navigation',\n tags,\n metadata: {\n source,\n },\n });\n }\n });\n }\n };\n}\n\n/**\n * Matches a set of routes to a pathname\n * Based on implementation from\n */\nfunction matchRoutes(\n routes,\n pathname,\n matchPath,\n branch = [],\n) {\n routes.some(route => {\n const match = route.path\n ? matchPath(pathname, route)\n : branch.length\n ? branch[branch.length - 1].match // use parent match\n : computeRootMatch(pathname); // use default \"root\" match\n\n if (match) {\n branch.push({ route, match });\n\n if (route.routes) {\n matchRoutes(route.routes, pathname, matchPath, branch);\n }\n }\n\n return !!match;\n });\n\n return branch;\n}\n\nfunction computeRootMatch(pathname) {\n return { path: '/', url: '/', params: {}, isExact: pathname === '/' };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\nfunction withSentryRouting(Route) {\n const componentDisplayName = (Route ).displayName || (Route ).name;\n\n const WrappedRoute = (props) => {\n if (activeTransaction && props && props.computedMatch && props.computedMatch.isExact) {\n activeTransaction.setName(props.computedMatch.path, 'route');\n }\n\n // @ts-ignore Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13dc4235c069e25fe7ee16e11f529d909f9f3ff8/types/react-router/index.d.ts#L154-L164\n return React.createElement(Route, { ...props, __self: this, __source: {fileName: _jsxFileName, lineNumber: 174}} );\n };\n\n WrappedRoute.displayName = `sentryRoute(${componentDisplayName})`;\n hoistNonReactStatics(WrappedRoute, Route);\n // @ts-ignore Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13dc4235c069e25fe7ee16e11f529d909f9f3ff8/types/react-router/index.d.ts#L154-L164\n return WrappedRoute;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n\nexport { reactRouterV4Instrumentation, reactRouterV5Instrumentation, withSentryRouting };\n//# sourceMappingURL=reactrouter.js.map\n","import { WINDOW } from '@sentry/browser';\nimport { logger, getNumberOfUrlSegments } from '@sentry/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\n\nconst _jsxFileName = \"/home/runner/work/sentry-javascript/sentry-javascript/packages/react/src/reactrouterv6.tsx\";// Inspired from Donnie McNeal's solution:\n\nlet activeTransaction;\n\nlet _useEffect;\nlet _useLocation;\nlet _useNavigationType;\nlet _createRoutesFromChildren;\nlet _matchRoutes;\nlet _customStartTransaction;\nlet _startTransactionOnLocationChange;\n\nconst SENTRY_TAGS = {\n 'routing.instrumentation': 'react-router-v6',\n};\n\nfunction reactRouterV6Instrumentation(\n useEffect,\n useLocation,\n useNavigationType,\n createRoutesFromChildren,\n matchRoutes,\n) {\n return (\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n ) => {\n const initPathName = WINDOW && WINDOW.location && WINDOW.location.pathname;\n if (startTransactionOnPageLoad && initPathName) {\n activeTransaction = customStartTransaction({\n name: initPathName,\n op: 'pageload',\n tags: SENTRY_TAGS,\n metadata: {\n source: 'url',\n },\n });\n }\n\n _useEffect = useEffect;\n _useLocation = useLocation;\n _useNavigationType = useNavigationType;\n _matchRoutes = matchRoutes;\n _createRoutesFromChildren = createRoutesFromChildren;\n\n _customStartTransaction = customStartTransaction;\n _startTransactionOnLocationChange = startTransactionOnLocationChange;\n };\n}\n\nfunction getNormalizedName(\n routes,\n location,\n branches,\n) {\n if (!routes || routes.length === 0) {\n return [location.pathname, 'url'];\n }\n\n let pathBuilder = '';\n if (branches) {\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let x = 0; x < branches.length; x++) {\n const branch = branches[x];\n const route = branch.route;\n if (route) {\n // Early return if index route\n if (route.index) {\n return [branch.pathname, 'route'];\n }\n\n const path = route.path;\n if (path) {\n const newPath = path[0] === '/' || pathBuilder[pathBuilder.length - 1] === '/' ? path : `/${path}`;\n pathBuilder += newPath;\n if (branch.pathname === location.pathname) {\n if (\n // If the route defined on the element is something like\n // Product} />\n // We should check against the branch.pathname for the number of / seperators\n getNumberOfUrlSegments(pathBuilder) !== getNumberOfUrlSegments(branch.pathname) &&\n // We should not count wildcard operators in the url segments calculation\n pathBuilder.slice(-2) !== '/*'\n ) {\n return [newPath, 'route'];\n }\n return [pathBuilder, 'route'];\n }\n }\n }\n }\n }\n\n return [location.pathname, 'url'];\n}\n\nfunction updatePageloadTransaction(\n location,\n routes,\n matches,\n basename,\n) {\n const branches = Array.isArray(matches)\n ? matches\n : (_matchRoutes(routes, location, basename) );\n\n if (activeTransaction && branches) {\n activeTransaction.setName(...getNormalizedName(routes, location, branches));\n }\n}\n\nfunction handleNavigation(\n location,\n routes,\n navigationType,\n matches,\n basename,\n) {\n const branches = Array.isArray(matches) ? matches : _matchRoutes(routes, location, basename);\n\n if (_startTransactionOnLocationChange && (navigationType === 'PUSH' || navigationType === 'POP') && branches) {\n if (activeTransaction) {\n activeTransaction.finish();\n }\n\n const [name, source] = getNormalizedName(routes, location, branches);\n activeTransaction = _customStartTransaction({\n name,\n op: 'navigation',\n tags: SENTRY_TAGS,\n metadata: {\n source,\n },\n });\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction withSentryReactRouterV6Routing(Routes) {\n if (\n !_useEffect ||\n !_useLocation ||\n !_useNavigationType ||\n !_createRoutesFromChildren ||\n !_matchRoutes ||\n !_customStartTransaction\n ) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`reactRouterV6Instrumentation was unable to wrap Routes because of one or more missing parameters.\n useEffect: ${_useEffect}. useLocation: ${_useLocation}. useNavigationType: ${_useNavigationType}.\n createRoutesFromChildren: ${_createRoutesFromChildren}. matchRoutes: ${_matchRoutes}. customStartTransaction: ${_customStartTransaction}.`);\n\n return Routes;\n }\n\n let isMountRenderPass = true;\n\n const SentryRoutes = (props) => {\n const location = _useLocation();\n const navigationType = _useNavigationType();\n\n _useEffect(\n () => {\n const routes = _createRoutesFromChildren(props.children) ;\n\n if (isMountRenderPass) {\n updatePageloadTransaction(location, routes);\n isMountRenderPass = false;\n } else {\n handleNavigation(location, routes, navigationType);\n }\n },\n // `props.children` is purpusely not included in the dependency array, because we do not want to re-run this effect\n // when the children change. We only want to start transactions when the location or navigation type change.\n [location, navigationType],\n );\n\n // @ts-ignore Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params\n return React.createElement(Routes, { ...props, __self: this, __source: {fileName: _jsxFileName, lineNumber: 205}} );\n };\n\n hoistNonReactStatics(SentryRoutes, Routes);\n\n // @ts-ignore Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params\n return SentryRoutes;\n}\n\nfunction wrapUseRoutes(origUseRoutes) {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes || !_customStartTransaction) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n 'reactRouterV6Instrumentation was unable to wrap `useRoutes` because of one or more missing parameters.',\n );\n\n return origUseRoutes;\n }\n\n let isMountRenderPass = true;\n\n // eslint-disable-next-line react/display-name\n return (routes, locationArg) => {\n const SentryRoutes = () => {\n const Routes = origUseRoutes(routes, locationArg);\n\n const location = _useLocation();\n const navigationType = _useNavigationType();\n\n // A value with stable identity to either pick `locationArg` if available or `location` if not\n const stableLocationParam =\n typeof locationArg === 'string' || (locationArg && locationArg.pathname)\n ? (locationArg )\n : location;\n\n _useEffect(() => {\n const normalizedLocation =\n typeof stableLocationParam === 'string' ? { pathname: stableLocationParam } : stableLocationParam;\n\n if (isMountRenderPass) {\n updatePageloadTransaction(normalizedLocation, routes);\n isMountRenderPass = false;\n } else {\n handleNavigation(normalizedLocation, routes, navigationType);\n }\n }, [navigationType, stableLocationParam]);\n\n return Routes;\n };\n\n return React.createElement(SentryRoutes, {__self: this, __source: {fileName: _jsxFileName, lineNumber: 256}} );\n };\n}\n\nfunction wrapCreateBrowserRouter\n\n(createRouterFunction) {\n // `opts` for createBrowserHistory and createMemoryHistory are different, but also not relevant for us at the moment.\n // `basename` is the only option that is relevant for us, and it is the same for all.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (routes, opts) {\n const router = createRouterFunction(routes, opts);\n const basename = opts && opts.basename;\n\n // The initial load ends when `createBrowserRouter` is called.\n // This is the earliest convenient time to update the transaction name.\n // Callbacks to `router.subscribe` are not called for the initial load.\n if (router.state.historyAction === 'POP' && activeTransaction) {\n updatePageloadTransaction(router.state.location, routes, undefined, basename);\n }\n\n router.subscribe((state) => {\n const location = state.location;\n\n if (\n _startTransactionOnLocationChange &&\n (state.historyAction === 'PUSH' || state.historyAction === 'POP') &&\n activeTransaction\n ) {\n handleNavigation(location, routes, state.historyAction, undefined, basename);\n }\n });\n\n return router;\n };\n}\n\nexport { reactRouterV6Instrumentation, withSentryReactRouterV6Routing, wrapCreateBrowserRouter, wrapUseRoutes };\n//# sourceMappingURL=reactrouterv6.js.map\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nfunction getSDKSource() {\n // @ts-ignore \"npm\" is injected by rollup during build process\n return \"npm\";\n}\n\nexport { getSDKSource, isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { isBrowserBundle } from './env.js';\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod, request) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","import { isNodeEnv, dynamicRequire } from './node.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') ;\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nconst dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nconst timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nconst timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nconst usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nconst browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs, usingPerformanceAPI };\n//# sourceMappingURL=time.js.map\n","/** Internal global with common properties and Sentry extensions */\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj) {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function () {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nfunction getGlobalObject() {\n return GLOBAL_OBJ ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n const gbl = (obj || GLOBAL_OBJ) ;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { GLOBAL_OBJ, getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=worldwide.js.map\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.devAssert = devAssert;\n\nfunction devAssert(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.inspect = inspect;\nconst MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n\n case 'object':\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n\n const seenValues = [...previouslySeenValues, value];\n\n if (isJSONable(value)) {\n const jsonValue = value.toJSON(); // check for infinite recursion\n\n if (jsonValue !== value) {\n return typeof jsonValue === 'string'\n ? jsonValue\n : formatValue(jsonValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n\n if (entries.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n const properties = entries.map(\n ([key, value]) => key + ': ' + formatValue(value, seenValues),\n );\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n const remaining = array.length - len;\n const items = [];\n\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.Token =\n exports.QueryDocumentKeys =\n exports.OperationTypeNode =\n exports.Location =\n void 0;\nexports.isNode = isNode;\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nclass Location {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n constructor(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n get [Symbol.toStringTag]() {\n return 'Location';\n }\n\n toJSON() {\n return {\n start: this.start,\n end: this.end,\n };\n }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexports.Location = Location;\n\nclass Token {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n *\n * Note: is undefined for punctuation tokens, but typed as string for\n * convenience in the parser.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n constructor(kind, start, end, line, column, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n this.value = value;\n this.prev = null;\n this.next = null;\n }\n\n get [Symbol.toStringTag]() {\n return 'Token';\n }\n\n toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column,\n };\n }\n}\n/**\n * The list of all possible AST node types.\n */\n\nexports.Token = Token;\n\n/**\n * @internal\n */\nconst QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: [\n 'name',\n 'variableDefinitions',\n 'directives',\n 'selectionSet',\n ],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: [\n 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n 'variableDefinitions',\n 'typeCondition',\n 'directives',\n 'selectionSet',\n ],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: [\n 'description',\n 'name',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n InterfaceTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nexports.QueryDocumentKeys = QueryDocumentKeys;\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nfunction isNode(maybeNode) {\n const maybeKind =\n maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nvar OperationTypeNode;\nexports.OperationTypeNode = OperationTypeNode;\n\n(function (OperationTypeNode) {\n OperationTypeNode['QUERY'] = 'query';\n OperationTypeNode['MUTATION'] = 'mutation';\n OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (exports.OperationTypeNode = OperationTypeNode = {}));\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.dedentBlockStringLines = dedentBlockStringLines;\nexports.isPrintableAsBlockString = isPrintableAsBlockString;\nexports.printBlockString = printBlockString;\n\nvar _characterClasses = require('./characterClasses.js');\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nfunction dedentBlockStringLines(lines) {\n var _firstNonEmptyLine2;\n\n let commonIndent = Number.MAX_SAFE_INTEGER;\n let firstNonEmptyLine = null;\n let lastNonEmptyLine = -1;\n\n for (let i = 0; i < lines.length; ++i) {\n var _firstNonEmptyLine;\n\n const line = lines[i];\n const indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n firstNonEmptyLine =\n (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine !== void 0\n ? _firstNonEmptyLine\n : i;\n lastNonEmptyLine = i;\n\n if (i !== 0 && indent < commonIndent) {\n commonIndent = indent;\n }\n }\n\n return lines // Remove common indentation from all lines but first.\n .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n .slice(\n (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine2 !== void 0\n ? _firstNonEmptyLine2\n : 0,\n lastNonEmptyLine + 1,\n );\n}\n\nfunction leadingWhitespace(str) {\n let i = 0;\n\n while (\n i < str.length &&\n (0, _characterClasses.isWhiteSpace)(str.charCodeAt(i))\n ) {\n ++i;\n }\n\n return i;\n}\n/**\n * @internal\n */\n\nfunction isPrintableAsBlockString(value) {\n if (value === '') {\n return true; // empty string is printable\n }\n\n let isEmptyLine = true;\n let hasIndent = false;\n let hasCommonIndent = true;\n let seenNonEmptyLine = false;\n\n for (let i = 0; i < value.length; ++i) {\n switch (value.codePointAt(i)) {\n case 0x0000:\n case 0x0001:\n case 0x0002:\n case 0x0003:\n case 0x0004:\n case 0x0005:\n case 0x0006:\n case 0x0007:\n case 0x0008:\n case 0x000b:\n case 0x000c:\n case 0x000e:\n case 0x000f:\n return false;\n // Has non-printable characters\n\n case 0x000d:\n // \\r\n return false;\n // Has \\r or \\r\\n which will be replaced as \\n\n\n case 10:\n // \\n\n if (isEmptyLine && !seenNonEmptyLine) {\n return false; // Has leading new line\n }\n\n seenNonEmptyLine = true;\n isEmptyLine = true;\n hasIndent = false;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n hasIndent || (hasIndent = isEmptyLine);\n break;\n\n default:\n hasCommonIndent && (hasCommonIndent = hasIndent);\n isEmptyLine = false;\n }\n }\n\n if (isEmptyLine) {\n return false; // Has trailing empty lines\n }\n\n if (hasCommonIndent && seenNonEmptyLine) {\n return false; // Has internal indent\n }\n\n return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nfunction printBlockString(value, options) {\n const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n const forceLeadingNewLine =\n lines.length > 1 &&\n lines\n .slice(1)\n .every(\n (line) =>\n line.length === 0 ||\n (0, _characterClasses.isWhiteSpace)(line.charCodeAt(0)),\n ); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n const hasTrailingSlash = value.endsWith('\\\\');\n const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n const printAsMultipleLines =\n !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n (!isSingleLine ||\n value.length > 70 ||\n forceTrailingNewline ||\n forceLeadingNewLine ||\n hasTrailingTripleQuotes);\n let result = ''; // Format a multi-line block quote to account for leading space.\n\n const skipLeadingNewLine =\n isSingleLine && (0, _characterClasses.isWhiteSpace)(value.charCodeAt(0));\n\n if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n result += '\\n';\n }\n\n result += escapedValue;\n\n if (printAsMultipleLines || forceTrailingNewline) {\n result += '\\n';\n }\n\n return '\"\"\"' + result + '\"\"\"';\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.isDigit = isDigit;\nexports.isLetter = isLetter;\nexports.isNameContinue = isNameContinue;\nexports.isNameStart = isNameStart;\nexports.isWhiteSpace = isWhiteSpace;\n\n/**\n * ```\n * WhiteSpace ::\n * - \"Horizontal Tab (U+0009)\"\n * - \"Space (U+0020)\"\n * ```\n * @internal\n */\nfunction isWhiteSpace(code) {\n return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nfunction isDigit(code) {\n return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nfunction isLetter(code) {\n return (\n (code >= 0x0061 && code <= 0x007a) || // A-Z\n (code >= 0x0041 && code <= 0x005a) // a-z\n );\n}\n/**\n * ```\n * NameStart ::\n * - Letter\n * - `_`\n * ```\n * @internal\n */\n\nfunction isNameStart(code) {\n return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n * - Letter\n * - Digit\n * - `_`\n * ```\n * @internal\n */\n\nfunction isNameContinue(code) {\n return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.Kind = void 0;\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind;\nexports.Kind = Kind;\n\n(function (Kind) {\n Kind['NAME'] = 'Name';\n Kind['DOCUMENT'] = 'Document';\n Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n Kind['SELECTION_SET'] = 'SelectionSet';\n Kind['FIELD'] = 'Field';\n Kind['ARGUMENT'] = 'Argument';\n Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n Kind['VARIABLE'] = 'Variable';\n Kind['INT'] = 'IntValue';\n Kind['FLOAT'] = 'FloatValue';\n Kind['STRING'] = 'StringValue';\n Kind['BOOLEAN'] = 'BooleanValue';\n Kind['NULL'] = 'NullValue';\n Kind['ENUM'] = 'EnumValue';\n Kind['LIST'] = 'ListValue';\n Kind['OBJECT'] = 'ObjectValue';\n Kind['OBJECT_FIELD'] = 'ObjectField';\n Kind['DIRECTIVE'] = 'Directive';\n Kind['NAMED_TYPE'] = 'NamedType';\n Kind['LIST_TYPE'] = 'ListType';\n Kind['NON_NULL_TYPE'] = 'NonNullType';\n Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (exports.Kind = Kind = {}));\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.printString = printString;\n\n/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nfunction printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n '\\\\u0000',\n '\\\\u0001',\n '\\\\u0002',\n '\\\\u0003',\n '\\\\u0004',\n '\\\\u0005',\n '\\\\u0006',\n '\\\\u0007',\n '\\\\b',\n '\\\\t',\n '\\\\n',\n '\\\\u000B',\n '\\\\f',\n '\\\\r',\n '\\\\u000E',\n '\\\\u000F',\n '\\\\u0010',\n '\\\\u0011',\n '\\\\u0012',\n '\\\\u0013',\n '\\\\u0014',\n '\\\\u0015',\n '\\\\u0016',\n '\\\\u0017',\n '\\\\u0018',\n '\\\\u0019',\n '\\\\u001A',\n '\\\\u001B',\n '\\\\u001C',\n '\\\\u001D',\n '\\\\u001E',\n '\\\\u001F',\n '',\n '',\n '\\\\\"',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 2F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 3F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 4F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\\\\\',\n '',\n '',\n '', // 5F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 6F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\u007F',\n '\\\\u0080',\n '\\\\u0081',\n '\\\\u0082',\n '\\\\u0083',\n '\\\\u0084',\n '\\\\u0085',\n '\\\\u0086',\n '\\\\u0087',\n '\\\\u0088',\n '\\\\u0089',\n '\\\\u008A',\n '\\\\u008B',\n '\\\\u008C',\n '\\\\u008D',\n '\\\\u008E',\n '\\\\u008F',\n '\\\\u0090',\n '\\\\u0091',\n '\\\\u0092',\n '\\\\u0093',\n '\\\\u0094',\n '\\\\u0095',\n '\\\\u0096',\n '\\\\u0097',\n '\\\\u0098',\n '\\\\u0099',\n '\\\\u009A',\n '\\\\u009B',\n '\\\\u009C',\n '\\\\u009D',\n '\\\\u009E',\n '\\\\u009F',\n];\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.print = print;\n\nvar _blockString = require('./blockString.js');\n\nvar _printString = require('./printString.js');\n\nvar _visitor = require('./visitor.js');\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nfunction print(ast) {\n return (0, _visitor.visit)(ast, printDocASTReducer);\n}\n\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n Name: {\n leave: (node) => node.value,\n },\n Variable: {\n leave: (node) => '$' + node.name,\n },\n // Document\n Document: {\n leave: (node) => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join(\n [\n node.operation,\n join([node.name, varDefs]),\n join(node.directives, ' '),\n ],\n ' ',\n ); // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) =>\n variable +\n ': ' +\n type +\n wrap(' = ', defaultValue) +\n wrap(' ', join(directives, ' ')),\n },\n SelectionSet: {\n leave: ({ selections }) => block(selections),\n },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) =>\n '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) =>\n join(\n [\n '...',\n wrap('on ', typeCondition),\n join(directives, ' '),\n selectionSet,\n ],\n ' ',\n ),\n },\n FragmentDefinition: {\n leave: (\n { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n ) =>\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: {\n leave: ({ value }) => value,\n },\n FloatValue: {\n leave: ({ value }) => value,\n },\n StringValue: {\n leave: ({ value, block: isBlockString }) =>\n isBlockString\n ? (0, _blockString.printBlockString)(value)\n : (0, _printString.printString)(value),\n },\n BooleanValue: {\n leave: ({ value }) => (value ? 'true' : 'false'),\n },\n NullValue: {\n leave: () => 'null',\n },\n EnumValue: {\n leave: ({ value }) => value,\n },\n ListValue: {\n leave: ({ values }) => '[' + join(values, ', ') + ']',\n },\n ObjectValue: {\n leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n },\n ObjectField: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) =>\n '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: {\n leave: ({ name }) => name,\n },\n ListType: {\n leave: ({ type }) => '[' + type + ']',\n },\n NonNullType: {\n leave: ({ type }) => type + '!',\n },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ description, directives, operationTypes }) =>\n wrap('', description, '\\n') +\n join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') +\n join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n FieldDefinition: {\n leave: ({ description, name, arguments: args, type, directives }) =>\n wrap('', description, '\\n') +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ description, name, type, defaultValue, directives }) =>\n wrap('', description, '\\n') +\n join(\n [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n ' ',\n ),\n },\n InterfaceTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeDefinition: {\n leave: ({ description, name, directives, types }) =>\n wrap('', description, '\\n') +\n join(\n ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n ' ',\n ),\n },\n EnumTypeDefinition: {\n leave: ({ description, name, directives, values }) =>\n wrap('', description, '\\n') +\n join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ description, name, directives, fields }) =>\n wrap('', description, '\\n') +\n join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ description, name, arguments: args, repeatable, locations }) =>\n wrap('', description, '\\n') +\n 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) =>\n join(\n ['extend schema', join(directives, ' '), block(operationTypes)],\n ' ',\n ),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) =>\n join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) =>\n join(\n [\n 'extend union',\n name,\n join(directives, ' '),\n wrap('= ', join(types, ' | ')),\n ],\n ' ',\n ),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) =>\n join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) =>\n join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.filter((x) => x).join(separator)) !== null &&\n _maybeArray$filter$jo !== void 0\n ? _maybeArray$filter$jo\n : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n return maybeString != null && maybeString !== ''\n ? start + maybeString + end\n : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n var _maybeArray$some;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n return (_maybeArray$some =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n _maybeArray$some !== void 0\n ? _maybeArray$some\n : false;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.BREAK = void 0;\nexports.getEnterLeaveForKind = getEnterLeaveForKind;\nexports.getVisitFn = getVisitFn;\nexports.visit = visit;\nexports.visitInParallel = visitInParallel;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _ast = require('./ast.js');\n\nvar _kinds = require('./kinds.js');\n\nconst BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\n\nexports.BREAK = BREAK;\n\nfunction visit(root, visitor, visitorKeys = _ast.QueryDocumentKeys) {\n const enterLeaveMap = new Map();\n\n for (const kind of Object.values(_kinds.Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n /* eslint-disable no-undef-init */\n\n let stack = undefined;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = undefined;\n let parent = undefined;\n const path = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties(\n {},\n Object.getOwnPropertyDescriptors(node),\n );\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === undefined) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n (0, _ast.isNode)(node) ||\n (0, _devAssert.devAssert)(\n false,\n `Invalid AST Node: ${(0, _inspect.inspect)(node)}.`,\n );\n const visitFn = isLeaving\n ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get === void 0\n ? void 0\n : _enterLeaveMap$get.leave\n : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get2 === void 0\n ? void 0\n : _enterLeaveMap$get2.enter;\n result =\n visitFn === null || visitFn === void 0\n ? void 0\n : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if ((0, _ast.isNode)(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack,\n };\n inArray = Array.isArray(node);\n keys = inArray\n ? node\n : (_node$kind = visitorKeys[node.kind]) !== null &&\n _node$kind !== void 0\n ? _node$kind\n : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits[edits.length - 1][1];\n }\n\n return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nfunction visitInParallel(visitors) {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(_kinds.Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor || (hasVisitor = enter != null || leave != null);\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave = {\n enter(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _enterList$i;\n\n const result =\n (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n ? void 0\n : _enterList$i.apply(visitors[i], args);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n\n leave(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _leaveList$i;\n\n const result =\n (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n ? void 0\n : _leaveList$i.apply(visitors[i], args);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nfunction getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return {\n enter: kindVisitor,\n leave: undefined,\n };\n } // { enter() {}, leave() {} }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave,\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n return isLeaving ? leave : enter;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports.getOperationAST = getOperationAST;\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\nfunction getOperationAST(documentAST, operationName) {\n let operation = null;\n\n for (const definition of documentAST.definitions) {\n if (definition.kind === _kinds.Kind.OPERATION_DEFINITION) {\n var _definition$name;\n\n if (operationName == null) {\n // If no operation name was provided, only return an Operation if there\n // is one defined in the document. Upon encountering the second, return\n // null.\n if (operation) {\n return null;\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n return definition;\n }\n }\n }\n\n return operation;\n}\n","(function __HLS_WORKER_BUNDLE__(__IN_WORKER__){\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.Hls = factory());\n})(this, (function () { 'use strict';\n\n function ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n }\n function _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n }\n function _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n }\n function _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : String(i);\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, _toPropertyKey(descriptor.key), descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n function _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n }\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n function _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n }\n function _isNativeFunction(fn) {\n try {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n } catch (e) {\n return typeof fn === \"function\";\n }\n }\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\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 _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 function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\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 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 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 function getDefaultExportFromCjs (x) {\n \treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n }\n\n var urlToolkit = {exports: {}};\n\n (function (module, exports) {\n \t// see https://tools.ietf.org/html/rfc1808\n\n \t(function (root) {\n \t var URL_REGEX =\n \t /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n \t var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n \t var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n \t var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n\n \t var URLToolkit = {\n \t // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n \t // E.g\n \t // With opts.alwaysNormalize = false (default, spec compliant)\n \t // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n \t // With opts.alwaysNormalize = true (not spec compliant)\n \t // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n \t buildAbsoluteURL: function (baseURL, relativeURL, opts) {\n \t opts = opts || {};\n \t // remove any remaining space and CRLF\n \t baseURL = baseURL.trim();\n \t relativeURL = relativeURL.trim();\n \t if (!relativeURL) {\n \t // 2a) If the embedded URL is entirely empty, it inherits the\n \t // entire base URL (i.e., is set equal to the base URL)\n \t // and we are done.\n \t if (!opts.alwaysNormalize) {\n \t return baseURL;\n \t }\n \t var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n \t if (!basePartsForNormalise) {\n \t throw new Error('Error trying to parse base URL.');\n \t }\n \t basePartsForNormalise.path = URLToolkit.normalizePath(\n \t basePartsForNormalise.path\n \t );\n \t return URLToolkit.buildURLFromParts(basePartsForNormalise);\n \t }\n \t var relativeParts = URLToolkit.parseURL(relativeURL);\n \t if (!relativeParts) {\n \t throw new Error('Error trying to parse relative URL.');\n \t }\n \t if (relativeParts.scheme) {\n \t // 2b) If the embedded URL starts with a scheme name, it is\n \t // interpreted as an absolute URL and we are done.\n \t if (!opts.alwaysNormalize) {\n \t return relativeURL;\n \t }\n \t relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n \t return URLToolkit.buildURLFromParts(relativeParts);\n \t }\n \t var baseParts = URLToolkit.parseURL(baseURL);\n \t if (!baseParts) {\n \t throw new Error('Error trying to parse base URL.');\n \t }\n \t if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n \t // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n \t // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n \t var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n \t baseParts.netLoc = pathParts[1];\n \t baseParts.path = pathParts[2];\n \t }\n \t if (baseParts.netLoc && !baseParts.path) {\n \t baseParts.path = '/';\n \t }\n \t var builtParts = {\n \t // 2c) Otherwise, the embedded URL inherits the scheme of\n \t // the base URL.\n \t scheme: baseParts.scheme,\n \t netLoc: relativeParts.netLoc,\n \t path: null,\n \t params: relativeParts.params,\n \t query: relativeParts.query,\n \t fragment: relativeParts.fragment,\n \t };\n \t if (!relativeParts.netLoc) {\n \t // 3) If the embedded URL's is non-empty, we skip to\n \t // Step 7. Otherwise, the embedded URL inherits the \n \t // (if any) of the base URL.\n \t builtParts.netLoc = baseParts.netLoc;\n \t // 4) If the embedded URL path is preceded by a slash \"/\", the\n \t // path is not relative and we skip to Step 7.\n \t if (relativeParts.path[0] !== '/') {\n \t if (!relativeParts.path) {\n \t // 5) If the embedded URL path is empty (and not preceded by a\n \t // slash), then the embedded URL inherits the base URL path\n \t builtParts.path = baseParts.path;\n \t // 5a) if the embedded URL's is non-empty, we skip to\n \t // step 7; otherwise, it inherits the of the base\n \t // URL (if any) and\n \t if (!relativeParts.params) {\n \t builtParts.params = baseParts.params;\n \t // 5b) if the embedded URL's is non-empty, we skip to\n \t // step 7; otherwise, it inherits the of the base\n \t // URL (if any) and we skip to step 7.\n \t if (!relativeParts.query) {\n \t builtParts.query = baseParts.query;\n \t }\n \t }\n \t } else {\n \t // 6) The last segment of the base URL's path (anything\n \t // following the rightmost slash \"/\", or the entire path if no\n \t // slash is present) is removed and the embedded URL's path is\n \t // appended in its place.\n \t var baseURLPath = baseParts.path;\n \t var newPath =\n \t baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\n \t relativeParts.path;\n \t builtParts.path = URLToolkit.normalizePath(newPath);\n \t }\n \t }\n \t }\n \t if (builtParts.path === null) {\n \t builtParts.path = opts.alwaysNormalize\n \t ? URLToolkit.normalizePath(relativeParts.path)\n \t : relativeParts.path;\n \t }\n \t return URLToolkit.buildURLFromParts(builtParts);\n \t },\n \t parseURL: function (url) {\n \t var parts = URL_REGEX.exec(url);\n \t if (!parts) {\n \t return null;\n \t }\n \t return {\n \t scheme: parts[1] || '',\n \t netLoc: parts[2] || '',\n \t path: parts[3] || '',\n \t params: parts[4] || '',\n \t query: parts[5] || '',\n \t fragment: parts[6] || '',\n \t };\n \t },\n \t normalizePath: function (path) {\n \t // The following operations are\n \t // then applied, in order, to the new path:\n \t // 6a) All occurrences of \"./\", where \".\" is a complete path\n \t // segment, are removed.\n \t // 6b) If the path ends with \".\" as a complete path segment,\n \t // that \".\" is removed.\n \t path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n \t // 6c) All occurrences of \"/../\", where is a\n \t // complete path segment not equal to \"..\", are removed.\n \t // Removal of these path segments is performed iteratively,\n \t // removing the leftmost matching pattern on each iteration,\n \t // until no matching pattern remains.\n \t // 6d) If the path ends with \"/..\", where is a\n \t // complete path segment not equal to \"..\", that\n \t // \"/..\" is removed.\n \t while (\n \t path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\n \t ) {}\n \t return path.split('').reverse().join('');\n \t },\n \t buildURLFromParts: function (parts) {\n \t return (\n \t parts.scheme +\n \t parts.netLoc +\n \t parts.path +\n \t parts.params +\n \t parts.query +\n \t parts.fragment\n \t );\n \t },\n \t };\n\n \t module.exports = URLToolkit;\n \t})(); \n } (urlToolkit));\n\n var urlToolkitExports = urlToolkit.exports;\n\n // https://caniuse.com/mdn-javascript_builtins_number_isfinite\n var isFiniteNumber = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value);\n };\n\n // https://caniuse.com/mdn-javascript_builtins_number_issafeinteger\n var isSafeInteger = Number.isSafeInteger || function (value) {\n return typeof value === 'number' && Math.abs(value) <= MAX_SAFE_INTEGER;\n };\n var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n var Events = /*#__PURE__*/function (Events) {\n Events[\"MEDIA_ATTACHING\"] = \"hlsMediaAttaching\";\n Events[\"MEDIA_ATTACHED\"] = \"hlsMediaAttached\";\n Events[\"MEDIA_DETACHING\"] = \"hlsMediaDetaching\";\n Events[\"MEDIA_DETACHED\"] = \"hlsMediaDetached\";\n Events[\"BUFFER_RESET\"] = \"hlsBufferReset\";\n Events[\"BUFFER_CODECS\"] = \"hlsBufferCodecs\";\n Events[\"BUFFER_CREATED\"] = \"hlsBufferCreated\";\n Events[\"BUFFER_APPENDING\"] = \"hlsBufferAppending\";\n Events[\"BUFFER_APPENDED\"] = \"hlsBufferAppended\";\n Events[\"BUFFER_EOS\"] = \"hlsBufferEos\";\n Events[\"BUFFER_FLUSHING\"] = \"hlsBufferFlushing\";\n Events[\"BUFFER_FLUSHED\"] = \"hlsBufferFlushed\";\n Events[\"MANIFEST_LOADING\"] = \"hlsManifestLoading\";\n Events[\"MANIFEST_LOADED\"] = \"hlsManifestLoaded\";\n Events[\"MANIFEST_PARSED\"] = \"hlsManifestParsed\";\n Events[\"LEVEL_SWITCHING\"] = \"hlsLevelSwitching\";\n Events[\"LEVEL_SWITCHED\"] = \"hlsLevelSwitched\";\n Events[\"LEVEL_LOADING\"] = \"hlsLevelLoading\";\n Events[\"LEVEL_LOADED\"] = \"hlsLevelLoaded\";\n Events[\"LEVEL_UPDATED\"] = \"hlsLevelUpdated\";\n Events[\"LEVEL_PTS_UPDATED\"] = \"hlsLevelPtsUpdated\";\n Events[\"LEVELS_UPDATED\"] = \"hlsLevelsUpdated\";\n Events[\"AUDIO_TRACKS_UPDATED\"] = \"hlsAudioTracksUpdated\";\n Events[\"AUDIO_TRACK_SWITCHING\"] = \"hlsAudioTrackSwitching\";\n Events[\"AUDIO_TRACK_SWITCHED\"] = \"hlsAudioTrackSwitched\";\n Events[\"AUDIO_TRACK_LOADING\"] = \"hlsAudioTrackLoading\";\n Events[\"AUDIO_TRACK_LOADED\"] = \"hlsAudioTrackLoaded\";\n Events[\"SUBTITLE_TRACKS_UPDATED\"] = \"hlsSubtitleTracksUpdated\";\n Events[\"SUBTITLE_TRACKS_CLEARED\"] = \"hlsSubtitleTracksCleared\";\n Events[\"SUBTITLE_TRACK_SWITCH\"] = \"hlsSubtitleTrackSwitch\";\n Events[\"SUBTITLE_TRACK_LOADING\"] = \"hlsSubtitleTrackLoading\";\n Events[\"SUBTITLE_TRACK_LOADED\"] = \"hlsSubtitleTrackLoaded\";\n Events[\"SUBTITLE_FRAG_PROCESSED\"] = \"hlsSubtitleFragProcessed\";\n Events[\"CUES_PARSED\"] = \"hlsCuesParsed\";\n Events[\"NON_NATIVE_TEXT_TRACKS_FOUND\"] = \"hlsNonNativeTextTracksFound\";\n Events[\"INIT_PTS_FOUND\"] = \"hlsInitPtsFound\";\n Events[\"FRAG_LOADING\"] = \"hlsFragLoading\";\n Events[\"FRAG_LOAD_EMERGENCY_ABORTED\"] = \"hlsFragLoadEmergencyAborted\";\n Events[\"FRAG_LOADED\"] = \"hlsFragLoaded\";\n Events[\"FRAG_DECRYPTED\"] = \"hlsFragDecrypted\";\n Events[\"FRAG_PARSING_INIT_SEGMENT\"] = \"hlsFragParsingInitSegment\";\n Events[\"FRAG_PARSING_USERDATA\"] = \"hlsFragParsingUserdata\";\n Events[\"FRAG_PARSING_METADATA\"] = \"hlsFragParsingMetadata\";\n Events[\"FRAG_PARSED\"] = \"hlsFragParsed\";\n Events[\"FRAG_BUFFERED\"] = \"hlsFragBuffered\";\n Events[\"FRAG_CHANGED\"] = \"hlsFragChanged\";\n Events[\"FPS_DROP\"] = \"hlsFpsDrop\";\n Events[\"FPS_DROP_LEVEL_CAPPING\"] = \"hlsFpsDropLevelCapping\";\n Events[\"MAX_AUTO_LEVEL_UPDATED\"] = \"hlsMaxAutoLevelUpdated\";\n Events[\"ERROR\"] = \"hlsError\";\n Events[\"DESTROYING\"] = \"hlsDestroying\";\n Events[\"KEY_LOADING\"] = \"hlsKeyLoading\";\n Events[\"KEY_LOADED\"] = \"hlsKeyLoaded\";\n Events[\"LIVE_BACK_BUFFER_REACHED\"] = \"hlsLiveBackBufferReached\";\n Events[\"BACK_BUFFER_REACHED\"] = \"hlsBackBufferReached\";\n Events[\"STEERING_MANIFEST_LOADED\"] = \"hlsSteeringManifestLoaded\";\n return Events;\n }({});\n\n /**\n * Defines each Event type and payload by Event name. Used in {@link hls.js#HlsEventEmitter} to strongly type the event listener API.\n */\n\n var ErrorTypes = /*#__PURE__*/function (ErrorTypes) {\n ErrorTypes[\"NETWORK_ERROR\"] = \"networkError\";\n ErrorTypes[\"MEDIA_ERROR\"] = \"mediaError\";\n ErrorTypes[\"KEY_SYSTEM_ERROR\"] = \"keySystemError\";\n ErrorTypes[\"MUX_ERROR\"] = \"muxError\";\n ErrorTypes[\"OTHER_ERROR\"] = \"otherError\";\n return ErrorTypes;\n }({});\n var ErrorDetails = /*#__PURE__*/function (ErrorDetails) {\n ErrorDetails[\"KEY_SYSTEM_NO_KEYS\"] = \"keySystemNoKeys\";\n ErrorDetails[\"KEY_SYSTEM_NO_ACCESS\"] = \"keySystemNoAccess\";\n ErrorDetails[\"KEY_SYSTEM_NO_SESSION\"] = \"keySystemNoSession\";\n ErrorDetails[\"KEY_SYSTEM_NO_CONFIGURED_LICENSE\"] = \"keySystemNoConfiguredLicense\";\n ErrorDetails[\"KEY_SYSTEM_LICENSE_REQUEST_FAILED\"] = \"keySystemLicenseRequestFailed\";\n ErrorDetails[\"KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED\"] = \"keySystemServerCertificateRequestFailed\";\n ErrorDetails[\"KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED\"] = \"keySystemServerCertificateUpdateFailed\";\n ErrorDetails[\"KEY_SYSTEM_SESSION_UPDATE_FAILED\"] = \"keySystemSessionUpdateFailed\";\n ErrorDetails[\"KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED\"] = \"keySystemStatusOutputRestricted\";\n ErrorDetails[\"KEY_SYSTEM_STATUS_INTERNAL_ERROR\"] = \"keySystemStatusInternalError\";\n ErrorDetails[\"MANIFEST_LOAD_ERROR\"] = \"manifestLoadError\";\n ErrorDetails[\"MANIFEST_LOAD_TIMEOUT\"] = \"manifestLoadTimeOut\";\n ErrorDetails[\"MANIFEST_PARSING_ERROR\"] = \"manifestParsingError\";\n ErrorDetails[\"MANIFEST_INCOMPATIBLE_CODECS_ERROR\"] = \"manifestIncompatibleCodecsError\";\n ErrorDetails[\"LEVEL_EMPTY_ERROR\"] = \"levelEmptyError\";\n ErrorDetails[\"LEVEL_LOAD_ERROR\"] = \"levelLoadError\";\n ErrorDetails[\"LEVEL_LOAD_TIMEOUT\"] = \"levelLoadTimeOut\";\n ErrorDetails[\"LEVEL_PARSING_ERROR\"] = \"levelParsingError\";\n ErrorDetails[\"LEVEL_SWITCH_ERROR\"] = \"levelSwitchError\";\n ErrorDetails[\"AUDIO_TRACK_LOAD_ERROR\"] = \"audioTrackLoadError\";\n ErrorDetails[\"AUDIO_TRACK_LOAD_TIMEOUT\"] = \"audioTrackLoadTimeOut\";\n ErrorDetails[\"SUBTITLE_LOAD_ERROR\"] = \"subtitleTrackLoadError\";\n ErrorDetails[\"SUBTITLE_TRACK_LOAD_TIMEOUT\"] = \"subtitleTrackLoadTimeOut\";\n ErrorDetails[\"FRAG_LOAD_ERROR\"] = \"fragLoadError\";\n ErrorDetails[\"FRAG_LOAD_TIMEOUT\"] = \"fragLoadTimeOut\";\n ErrorDetails[\"FRAG_DECRYPT_ERROR\"] = \"fragDecryptError\";\n ErrorDetails[\"FRAG_PARSING_ERROR\"] = \"fragParsingError\";\n ErrorDetails[\"FRAG_GAP\"] = \"fragGap\";\n ErrorDetails[\"REMUX_ALLOC_ERROR\"] = \"remuxAllocError\";\n ErrorDetails[\"KEY_LOAD_ERROR\"] = \"keyLoadError\";\n ErrorDetails[\"KEY_LOAD_TIMEOUT\"] = \"keyLoadTimeOut\";\n ErrorDetails[\"BUFFER_ADD_CODEC_ERROR\"] = \"bufferAddCodecError\";\n ErrorDetails[\"BUFFER_INCOMPATIBLE_CODECS_ERROR\"] = \"bufferIncompatibleCodecsError\";\n ErrorDetails[\"BUFFER_APPEND_ERROR\"] = \"bufferAppendError\";\n ErrorDetails[\"BUFFER_APPENDING_ERROR\"] = \"bufferAppendingError\";\n ErrorDetails[\"BUFFER_STALLED_ERROR\"] = \"bufferStalledError\";\n ErrorDetails[\"BUFFER_FULL_ERROR\"] = \"bufferFullError\";\n ErrorDetails[\"BUFFER_SEEK_OVER_HOLE\"] = \"bufferSeekOverHole\";\n ErrorDetails[\"BUFFER_NUDGE_ON_STALL\"] = \"bufferNudgeOnStall\";\n ErrorDetails[\"INTERNAL_EXCEPTION\"] = \"internalException\";\n ErrorDetails[\"INTERNAL_ABORTED\"] = \"aborted\";\n ErrorDetails[\"UNKNOWN\"] = \"unknown\";\n return ErrorDetails;\n }({});\n\n var noop = function noop() {};\n var fakeLogger = {\n trace: noop,\n debug: noop,\n log: noop,\n warn: noop,\n info: noop,\n error: noop\n };\n var exportedLogger = fakeLogger;\n\n // let lastCallTime;\n // function formatMsgWithTimeInfo(type, msg) {\n // const now = Date.now();\n // const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';\n // lastCallTime = now;\n // msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )';\n // return msg;\n // }\n\n function consolePrintFn(type) {\n var func = self.console[type];\n if (func) {\n return func.bind(self.console, \"[\" + type + \"] >\");\n }\n return noop;\n }\n function exportLoggerFunctions(debugConfig) {\n for (var _len = arguments.length, functions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n functions[_key - 1] = arguments[_key];\n }\n functions.forEach(function (type) {\n exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type);\n });\n }\n function enableLogs(debugConfig, id) {\n // check that console is available\n if (typeof console === 'object' && debugConfig === true || typeof debugConfig === 'object') {\n exportLoggerFunctions(debugConfig,\n // Remove out from list here to hard-disable a log-level\n // 'trace',\n 'debug', 'log', 'info', 'warn', 'error');\n // Some browsers don't allow to use bind on console object anyway\n // fallback to default if needed\n try {\n exportedLogger.log(\"Debug logs enabled for \\\"\" + id + \"\\\" in hls.js version \" + \"1.5.11\");\n } catch (e) {\n exportedLogger = fakeLogger;\n }\n } else {\n exportedLogger = fakeLogger;\n }\n }\n var logger = exportedLogger;\n\n var DECIMAL_RESOLUTION_REGEX = /^(\\d+)x(\\d+)$/;\n var ATTR_LIST_REGEX = /(.+?)=(\".*?\"|.*?)(?:,|$)/g;\n\n // adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js\n var AttrList = /*#__PURE__*/function () {\n function AttrList(attrs) {\n if (typeof attrs === 'string') {\n attrs = AttrList.parseAttrList(attrs);\n }\n _extends(this, attrs);\n }\n var _proto = AttrList.prototype;\n _proto.decimalInteger = function decimalInteger(attrName) {\n var intValue = parseInt(this[attrName], 10);\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n return intValue;\n };\n _proto.hexadecimalInteger = function hexadecimalInteger(attrName) {\n if (this[attrName]) {\n var stringValue = (this[attrName] || '0x').slice(2);\n stringValue = (stringValue.length & 1 ? '0' : '') + stringValue;\n var value = new Uint8Array(stringValue.length / 2);\n for (var i = 0; i < stringValue.length / 2; i++) {\n value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16);\n }\n return value;\n } else {\n return null;\n }\n };\n _proto.hexadecimalIntegerAsNumber = function hexadecimalIntegerAsNumber(attrName) {\n var intValue = parseInt(this[attrName], 16);\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n return intValue;\n };\n _proto.decimalFloatingPoint = function decimalFloatingPoint(attrName) {\n return parseFloat(this[attrName]);\n };\n _proto.optionalFloat = function optionalFloat(attrName, defaultValue) {\n var value = this[attrName];\n return value ? parseFloat(value) : defaultValue;\n };\n _proto.enumeratedString = function enumeratedString(attrName) {\n return this[attrName];\n };\n _proto.bool = function bool(attrName) {\n return this[attrName] === 'YES';\n };\n _proto.decimalResolution = function decimalResolution(attrName) {\n var res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]);\n if (res === null) {\n return undefined;\n }\n return {\n width: parseInt(res[1], 10),\n height: parseInt(res[2], 10)\n };\n };\n AttrList.parseAttrList = function parseAttrList(input) {\n var match;\n var attrs = {};\n var quote = '\"';\n ATTR_LIST_REGEX.lastIndex = 0;\n while ((match = ATTR_LIST_REGEX.exec(input)) !== null) {\n var value = match[2];\n if (value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1) {\n value = value.slice(1, -1);\n }\n var name = match[1].trim();\n attrs[name] = value;\n }\n return attrs;\n };\n _createClass(AttrList, [{\n key: \"clientAttrs\",\n get: function get() {\n return Object.keys(this).filter(function (attr) {\n return attr.substring(0, 2) === 'X-';\n });\n }\n }]);\n return AttrList;\n }();\n\n // Avoid exporting const enum so that these values can be inlined\n\n function isDateRangeCueAttribute(attrName) {\n return attrName !== \"ID\" && attrName !== \"CLASS\" && attrName !== \"START-DATE\" && attrName !== \"DURATION\" && attrName !== \"END-DATE\" && attrName !== \"END-ON-NEXT\";\n }\n function isSCTE35Attribute(attrName) {\n return attrName === \"SCTE35-OUT\" || attrName === \"SCTE35-IN\";\n }\n var DateRange = /*#__PURE__*/function () {\n function DateRange(dateRangeAttr, dateRangeWithSameId) {\n this.attr = void 0;\n this._startDate = void 0;\n this._endDate = void 0;\n this._badValueForSameId = void 0;\n if (dateRangeWithSameId) {\n var previousAttr = dateRangeWithSameId.attr;\n for (var key in previousAttr) {\n if (Object.prototype.hasOwnProperty.call(dateRangeAttr, key) && dateRangeAttr[key] !== previousAttr[key]) {\n logger.warn(\"DATERANGE tag attribute: \\\"\" + key + \"\\\" does not match for tags with ID: \\\"\" + dateRangeAttr.ID + \"\\\"\");\n this._badValueForSameId = key;\n break;\n }\n }\n // Merge DateRange tags with the same ID\n dateRangeAttr = _extends(new AttrList({}), previousAttr, dateRangeAttr);\n }\n this.attr = dateRangeAttr;\n this._startDate = new Date(dateRangeAttr[\"START-DATE\"]);\n if (\"END-DATE\" in this.attr) {\n var endDate = new Date(this.attr[\"END-DATE\"]);\n if (isFiniteNumber(endDate.getTime())) {\n this._endDate = endDate;\n }\n }\n }\n _createClass(DateRange, [{\n key: \"id\",\n get: function get() {\n return this.attr.ID;\n }\n }, {\n key: \"class\",\n get: function get() {\n return this.attr.CLASS;\n }\n }, {\n key: \"startDate\",\n get: function get() {\n return this._startDate;\n }\n }, {\n key: \"endDate\",\n get: function get() {\n if (this._endDate) {\n return this._endDate;\n }\n var duration = this.duration;\n if (duration !== null) {\n return new Date(this._startDate.getTime() + duration * 1000);\n }\n return null;\n }\n }, {\n key: \"duration\",\n get: function get() {\n if (\"DURATION\" in this.attr) {\n var duration = this.attr.decimalFloatingPoint(\"DURATION\");\n if (isFiniteNumber(duration)) {\n return duration;\n }\n } else if (this._endDate) {\n return (this._endDate.getTime() - this._startDate.getTime()) / 1000;\n }\n return null;\n }\n }, {\n key: \"plannedDuration\",\n get: function get() {\n if (\"PLANNED-DURATION\" in this.attr) {\n return this.attr.decimalFloatingPoint(\"PLANNED-DURATION\");\n }\n return null;\n }\n }, {\n key: \"endOnNext\",\n get: function get() {\n return this.attr.bool(\"END-ON-NEXT\");\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return !!this.id && !this._badValueForSameId && isFiniteNumber(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class);\n }\n }]);\n return DateRange;\n }();\n\n var LoadStats = function LoadStats() {\n this.aborted = false;\n this.loaded = 0;\n this.retry = 0;\n this.total = 0;\n this.chunkCount = 0;\n this.bwEstimate = 0;\n this.loading = {\n start: 0,\n first: 0,\n end: 0\n };\n this.parsing = {\n start: 0,\n end: 0\n };\n this.buffering = {\n start: 0,\n first: 0,\n end: 0\n };\n };\n\n var ElementaryStreamTypes = {\n AUDIO: \"audio\",\n VIDEO: \"video\",\n AUDIOVIDEO: \"audiovideo\"\n };\n var BaseSegment = /*#__PURE__*/function () {\n function BaseSegment(baseurl) {\n var _this$elementaryStrea;\n this._byteRange = null;\n this._url = null;\n // baseurl is the URL to the playlist\n this.baseurl = void 0;\n // relurl is the portion of the URL that comes from inside the playlist.\n this.relurl = void 0;\n // Holds the types of data this fragment supports\n this.elementaryStreams = (_this$elementaryStrea = {}, _this$elementaryStrea[ElementaryStreamTypes.AUDIO] = null, _this$elementaryStrea[ElementaryStreamTypes.VIDEO] = null, _this$elementaryStrea[ElementaryStreamTypes.AUDIOVIDEO] = null, _this$elementaryStrea);\n this.baseurl = baseurl;\n }\n\n // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array\n var _proto = BaseSegment.prototype;\n _proto.setByteRange = function setByteRange(value, previous) {\n var params = value.split('@', 2);\n var start;\n if (params.length === 1) {\n start = (previous == null ? void 0 : previous.byteRangeEndOffset) || 0;\n } else {\n start = parseInt(params[1]);\n }\n this._byteRange = [start, parseInt(params[0]) + start];\n };\n _createClass(BaseSegment, [{\n key: \"byteRange\",\n get: function get() {\n if (!this._byteRange) {\n return [];\n }\n return this._byteRange;\n }\n }, {\n key: \"byteRangeStartOffset\",\n get: function get() {\n return this.byteRange[0];\n }\n }, {\n key: \"byteRangeEndOffset\",\n get: function get() {\n return this.byteRange[1];\n }\n }, {\n key: \"url\",\n get: function get() {\n if (!this._url && this.baseurl && this.relurl) {\n this._url = urlToolkitExports.buildAbsoluteURL(this.baseurl, this.relurl, {\n alwaysNormalize: true\n });\n }\n return this._url || '';\n },\n set: function set(value) {\n this._url = value;\n }\n }]);\n return BaseSegment;\n }();\n\n /**\n * Object representing parsed data from an HLS Segment. Found in {@link hls.js#LevelDetails.fragments}.\n */\n var Fragment = /*#__PURE__*/function (_BaseSegment) {\n _inheritsLoose(Fragment, _BaseSegment);\n function Fragment(type, baseurl) {\n var _this;\n _this = _BaseSegment.call(this, baseurl) || this;\n _this._decryptdata = null;\n _this.rawProgramDateTime = null;\n _this.programDateTime = null;\n _this.tagList = [];\n // EXTINF has to be present for a m3u8 to be considered valid\n _this.duration = 0;\n // sn notates the sequence number for a segment, and if set to a string can be 'initSegment'\n _this.sn = 0;\n // levelkeys are the EXT-X-KEY tags that apply to this segment for decryption\n // core difference from the private field _decryptdata is the lack of the initialized IV\n // _decryptdata will set the IV for this segment based on the segment number in the fragment\n _this.levelkeys = void 0;\n // A string representing the fragment type\n _this.type = void 0;\n // A reference to the loader. Set while the fragment is loading, and removed afterwards. Used to abort fragment loading\n _this.loader = null;\n // A reference to the key loader. Set while the key is loading, and removed afterwards. Used to abort key loading\n _this.keyLoader = null;\n // The level/track index to which the fragment belongs\n _this.level = -1;\n // The continuity counter of the fragment\n _this.cc = 0;\n // The starting Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n _this.startPTS = void 0;\n // The ending Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n _this.endPTS = void 0;\n // The starting Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n _this.startDTS = void 0;\n // The ending Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n _this.endDTS = void 0;\n // The start time of the fragment, as listed in the manifest. Updated after transmux complete.\n _this.start = 0;\n // Set by `updateFragPTSDTS` in level-helper\n _this.deltaPTS = void 0;\n // The maximum starting Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n _this.maxStartPTS = void 0;\n // The minimum ending Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n _this.minEndPTS = void 0;\n // Load/parse timing information\n _this.stats = new LoadStats();\n // Init Segment bytes (unset for media segments)\n _this.data = void 0;\n // A flag indicating whether the segment was downloaded in order to test bitrate, and was not buffered\n _this.bitrateTest = false;\n // #EXTINF segment title\n _this.title = null;\n // The Media Initialization Section for this segment\n _this.initSegment = null;\n // Fragment is the last fragment in the media playlist\n _this.endList = void 0;\n // Fragment is marked by an EXT-X-GAP tag indicating that it does not contain media data and should not be loaded\n _this.gap = void 0;\n // Deprecated\n _this.urlId = 0;\n _this.type = type;\n return _this;\n }\n var _proto2 = Fragment.prototype;\n _proto2.setKeyFormat = function setKeyFormat(keyFormat) {\n if (this.levelkeys) {\n var _key = this.levelkeys[keyFormat];\n if (_key && !this._decryptdata) {\n this._decryptdata = _key.getDecryptData(this.sn);\n }\n }\n };\n _proto2.abortRequests = function abortRequests() {\n var _this$loader, _this$keyLoader;\n (_this$loader = this.loader) == null ? void 0 : _this$loader.abort();\n (_this$keyLoader = this.keyLoader) == null ? void 0 : _this$keyLoader.abort();\n };\n _proto2.setElementaryStreamInfo = function setElementaryStreamInfo(type, startPTS, endPTS, startDTS, endDTS, partial) {\n if (partial === void 0) {\n partial = false;\n }\n var elementaryStreams = this.elementaryStreams;\n var info = elementaryStreams[type];\n if (!info) {\n elementaryStreams[type] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS,\n partial: partial\n };\n return;\n }\n info.startPTS = Math.min(info.startPTS, startPTS);\n info.endPTS = Math.max(info.endPTS, endPTS);\n info.startDTS = Math.min(info.startDTS, startDTS);\n info.endDTS = Math.max(info.endDTS, endDTS);\n };\n _proto2.clearElementaryStreamInfo = function clearElementaryStreamInfo() {\n var elementaryStreams = this.elementaryStreams;\n elementaryStreams[ElementaryStreamTypes.AUDIO] = null;\n elementaryStreams[ElementaryStreamTypes.VIDEO] = null;\n elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO] = null;\n };\n _createClass(Fragment, [{\n key: \"decryptdata\",\n get: function get() {\n var levelkeys = this.levelkeys;\n if (!levelkeys && !this._decryptdata) {\n return null;\n }\n if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) {\n var _key2 = this.levelkeys.identity;\n if (_key2) {\n this._decryptdata = _key2.getDecryptData(this.sn);\n } else {\n var keyFormats = Object.keys(this.levelkeys);\n if (keyFormats.length === 1) {\n return this._decryptdata = this.levelkeys[keyFormats[0]].getDecryptData(this.sn);\n }\n }\n }\n return this._decryptdata;\n }\n }, {\n key: \"end\",\n get: function get() {\n return this.start + this.duration;\n }\n }, {\n key: \"endProgramDateTime\",\n get: function get() {\n if (this.programDateTime === null) {\n return null;\n }\n if (!isFiniteNumber(this.programDateTime)) {\n return null;\n }\n var duration = !isFiniteNumber(this.duration) ? 0 : this.duration;\n return this.programDateTime + duration * 1000;\n }\n }, {\n key: \"encrypted\",\n get: function get() {\n var _this$_decryptdata;\n // At the m3u8-parser level we need to add support for manifest signalled keyformats\n // when we want the fragment to start reporting that it is encrypted.\n // Currently, keyFormat will only be set for identity keys\n if ((_this$_decryptdata = this._decryptdata) != null && _this$_decryptdata.encrypted) {\n return true;\n } else if (this.levelkeys) {\n var keyFormats = Object.keys(this.levelkeys);\n var len = keyFormats.length;\n if (len > 1 || len === 1 && this.levelkeys[keyFormats[0]].encrypted) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Fragment;\n }(BaseSegment);\n\n /**\n * Object representing parsed data from an HLS Partial Segment. Found in {@link hls.js#LevelDetails.partList}.\n */\n var Part = /*#__PURE__*/function (_BaseSegment2) {\n _inheritsLoose(Part, _BaseSegment2);\n function Part(partAttrs, frag, baseurl, index, previous) {\n var _this2;\n _this2 = _BaseSegment2.call(this, baseurl) || this;\n _this2.fragOffset = 0;\n _this2.duration = 0;\n _this2.gap = false;\n _this2.independent = false;\n _this2.relurl = void 0;\n _this2.fragment = void 0;\n _this2.index = void 0;\n _this2.stats = new LoadStats();\n _this2.duration = partAttrs.decimalFloatingPoint('DURATION');\n _this2.gap = partAttrs.bool('GAP');\n _this2.independent = partAttrs.bool('INDEPENDENT');\n _this2.relurl = partAttrs.enumeratedString('URI');\n _this2.fragment = frag;\n _this2.index = index;\n var byteRange = partAttrs.enumeratedString('BYTERANGE');\n if (byteRange) {\n _this2.setByteRange(byteRange, previous);\n }\n if (previous) {\n _this2.fragOffset = previous.fragOffset + previous.duration;\n }\n return _this2;\n }\n _createClass(Part, [{\n key: \"start\",\n get: function get() {\n return this.fragment.start + this.fragOffset;\n }\n }, {\n key: \"end\",\n get: function get() {\n return this.start + this.duration;\n }\n }, {\n key: \"loaded\",\n get: function get() {\n var elementaryStreams = this.elementaryStreams;\n return !!(elementaryStreams.audio || elementaryStreams.video || elementaryStreams.audiovideo);\n }\n }]);\n return Part;\n }(BaseSegment);\n\n var DEFAULT_TARGET_DURATION = 10;\n\n /**\n * Object representing parsed data from an HLS Media Playlist. Found in {@link hls.js#Level.details}.\n */\n var LevelDetails = /*#__PURE__*/function () {\n function LevelDetails(baseUrl) {\n this.PTSKnown = false;\n this.alignedSliding = false;\n this.averagetargetduration = void 0;\n this.endCC = 0;\n this.endSN = 0;\n this.fragments = void 0;\n this.fragmentHint = void 0;\n this.partList = null;\n this.dateRanges = void 0;\n this.live = true;\n this.ageHeader = 0;\n this.advancedDateTime = void 0;\n this.updated = true;\n this.advanced = true;\n this.availabilityDelay = void 0;\n // Manifest reload synchronization\n this.misses = 0;\n this.startCC = 0;\n this.startSN = 0;\n this.startTimeOffset = null;\n this.targetduration = 0;\n this.totalduration = 0;\n this.type = null;\n this.url = void 0;\n this.m3u8 = '';\n this.version = null;\n this.canBlockReload = false;\n this.canSkipUntil = 0;\n this.canSkipDateRanges = false;\n this.skippedSegments = 0;\n this.recentlyRemovedDateranges = void 0;\n this.partHoldBack = 0;\n this.holdBack = 0;\n this.partTarget = 0;\n this.preloadHint = void 0;\n this.renditionReports = void 0;\n this.tuneInGoal = 0;\n this.deltaUpdateFailed = void 0;\n this.driftStartTime = 0;\n this.driftEndTime = 0;\n this.driftStart = 0;\n this.driftEnd = 0;\n this.encryptedFragments = void 0;\n this.playlistParsingError = null;\n this.variableList = null;\n this.hasVariableRefs = false;\n this.fragments = [];\n this.encryptedFragments = [];\n this.dateRanges = {};\n this.url = baseUrl;\n }\n var _proto = LevelDetails.prototype;\n _proto.reloaded = function reloaded(previous) {\n if (!previous) {\n this.advanced = true;\n this.updated = true;\n return;\n }\n var partSnDiff = this.lastPartSn - previous.lastPartSn;\n var partIndexDiff = this.lastPartIndex - previous.lastPartIndex;\n this.updated = this.endSN !== previous.endSN || !!partIndexDiff || !!partSnDiff || !this.live;\n this.advanced = this.endSN > previous.endSN || partSnDiff > 0 || partSnDiff === 0 && partIndexDiff > 0;\n if (this.updated || this.advanced) {\n this.misses = Math.floor(previous.misses * 0.6);\n } else {\n this.misses = previous.misses + 1;\n }\n this.availabilityDelay = previous.availabilityDelay;\n };\n _createClass(LevelDetails, [{\n key: \"hasProgramDateTime\",\n get: function get() {\n if (this.fragments.length) {\n return isFiniteNumber(this.fragments[this.fragments.length - 1].programDateTime);\n }\n return false;\n }\n }, {\n key: \"levelTargetDuration\",\n get: function get() {\n return this.averagetargetduration || this.targetduration || DEFAULT_TARGET_DURATION;\n }\n }, {\n key: \"drift\",\n get: function get() {\n var runTime = this.driftEndTime - this.driftStartTime;\n if (runTime > 0) {\n var runDuration = this.driftEnd - this.driftStart;\n return runDuration * 1000 / runTime;\n }\n return 1;\n }\n }, {\n key: \"edge\",\n get: function get() {\n return this.partEnd || this.fragmentEnd;\n }\n }, {\n key: \"partEnd\",\n get: function get() {\n var _this$partList;\n if ((_this$partList = this.partList) != null && _this$partList.length) {\n return this.partList[this.partList.length - 1].end;\n }\n return this.fragmentEnd;\n }\n }, {\n key: \"fragmentEnd\",\n get: function get() {\n var _this$fragments;\n if ((_this$fragments = this.fragments) != null && _this$fragments.length) {\n return this.fragments[this.fragments.length - 1].end;\n }\n return 0;\n }\n }, {\n key: \"age\",\n get: function get() {\n if (this.advancedDateTime) {\n return Math.max(Date.now() - this.advancedDateTime, 0) / 1000;\n }\n return 0;\n }\n }, {\n key: \"lastPartIndex\",\n get: function get() {\n var _this$partList2;\n if ((_this$partList2 = this.partList) != null && _this$partList2.length) {\n return this.partList[this.partList.length - 1].index;\n }\n return -1;\n }\n }, {\n key: \"lastPartSn\",\n get: function get() {\n var _this$partList3;\n if ((_this$partList3 = this.partList) != null && _this$partList3.length) {\n return this.partList[this.partList.length - 1].fragment.sn;\n }\n return this.endSN;\n }\n }]);\n return LevelDetails;\n }();\n\n function base64Decode(base64encodedStr) {\n return Uint8Array.from(atob(base64encodedStr), function (c) {\n return c.charCodeAt(0);\n });\n }\n\n function getKeyIdBytes(str) {\n var keyIdbytes = strToUtf8array(str).subarray(0, 16);\n var paddedkeyIdbytes = new Uint8Array(16);\n paddedkeyIdbytes.set(keyIdbytes, 16 - keyIdbytes.length);\n return paddedkeyIdbytes;\n }\n function changeEndianness(keyId) {\n var swap = function swap(array, from, to) {\n var cur = array[from];\n array[from] = array[to];\n array[to] = cur;\n };\n swap(keyId, 0, 3);\n swap(keyId, 1, 2);\n swap(keyId, 4, 5);\n swap(keyId, 6, 7);\n }\n function convertDataUriToArrayBytes(uri) {\n // data:[\n var colonsplit = uri.split(':');\n var keydata = null;\n if (colonsplit[0] === 'data' && colonsplit.length === 2) {\n var semicolonsplit = colonsplit[1].split(';');\n var commasplit = semicolonsplit[semicolonsplit.length - 1].split(',');\n if (commasplit.length === 2) {\n var isbase64 = commasplit[0] === 'base64';\n var data = commasplit[1];\n if (isbase64) {\n semicolonsplit.splice(-1, 1); // remove from processing\n keydata = base64Decode(data);\n } else {\n keydata = getKeyIdBytes(data);\n }\n }\n }\n return keydata;\n }\n function strToUtf8array(str) {\n return Uint8Array.from(unescape(encodeURIComponent(str)), function (c) {\n return c.charCodeAt(0);\n });\n }\n\n /** returns `undefined` is `self` is missing, e.g. in node */\n var optionalSelf = typeof self !== 'undefined' ? self : undefined;\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess\n */\n var KeySystems = {\n CLEARKEY: \"org.w3.clearkey\",\n FAIRPLAY: \"com.apple.fps\",\n PLAYREADY: \"com.microsoft.playready\",\n WIDEVINE: \"com.widevine.alpha\"\n };\n\n // Playlist #EXT-X-KEY KEYFORMAT values\n var KeySystemFormats = {\n CLEARKEY: \"org.w3.clearkey\",\n FAIRPLAY: \"com.apple.streamingkeydelivery\",\n PLAYREADY: \"com.microsoft.playready\",\n WIDEVINE: \"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed\"\n };\n function keySystemFormatToKeySystemDomain(format) {\n switch (format) {\n case KeySystemFormats.FAIRPLAY:\n return KeySystems.FAIRPLAY;\n case KeySystemFormats.PLAYREADY:\n return KeySystems.PLAYREADY;\n case KeySystemFormats.WIDEVINE:\n return KeySystems.WIDEVINE;\n case KeySystemFormats.CLEARKEY:\n return KeySystems.CLEARKEY;\n }\n }\n\n // System IDs for which we can extract a key ID from \"encrypted\" event PSSH\n var KeySystemIds = {\n WIDEVINE: \"edef8ba979d64acea3c827dcd51d21ed\"\n };\n function keySystemIdToKeySystemDomain(systemId) {\n if (systemId === KeySystemIds.WIDEVINE) {\n return KeySystems.WIDEVINE;\n // } else if (systemId === KeySystemIds.PLAYREADY) {\n // return KeySystems.PLAYREADY;\n // } else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) {\n // return KeySystems.CLEARKEY;\n }\n }\n function keySystemDomainToKeySystemFormat(keySystem) {\n switch (keySystem) {\n case KeySystems.FAIRPLAY:\n return KeySystemFormats.FAIRPLAY;\n case KeySystems.PLAYREADY:\n return KeySystemFormats.PLAYREADY;\n case KeySystems.WIDEVINE:\n return KeySystemFormats.WIDEVINE;\n case KeySystems.CLEARKEY:\n return KeySystemFormats.CLEARKEY;\n }\n }\n function getKeySystemsForConfig(config) {\n var drmSystems = config.drmSystems,\n widevineLicenseUrl = config.widevineLicenseUrl;\n var keySystemsToAttempt = drmSystems ? [KeySystems.FAIRPLAY, KeySystems.WIDEVINE, KeySystems.PLAYREADY, KeySystems.CLEARKEY].filter(function (keySystem) {\n return !!drmSystems[keySystem];\n }) : [];\n if (!keySystemsToAttempt[KeySystems.WIDEVINE] && widevineLicenseUrl) {\n keySystemsToAttempt.push(KeySystems.WIDEVINE);\n }\n return keySystemsToAttempt;\n }\n var requestMediaKeySystemAccess = function (_optionalSelf$navigat) {\n if (optionalSelf != null && (_optionalSelf$navigat = optionalSelf.navigator) != null && _optionalSelf$navigat.requestMediaKeySystemAccess) {\n return self.navigator.requestMediaKeySystemAccess.bind(self.navigator);\n } else {\n return null;\n }\n }();\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemConfiguration\n */\n function getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, drmSystemOptions) {\n var initDataTypes;\n switch (keySystem) {\n case KeySystems.FAIRPLAY:\n initDataTypes = ['cenc', 'sinf'];\n break;\n case KeySystems.WIDEVINE:\n case KeySystems.PLAYREADY:\n initDataTypes = ['cenc'];\n break;\n case KeySystems.CLEARKEY:\n initDataTypes = ['cenc', 'keyids'];\n break;\n default:\n throw new Error(\"Unknown key-system: \" + keySystem);\n }\n return createMediaKeySystemConfigurations(initDataTypes, audioCodecs, videoCodecs, drmSystemOptions);\n }\n function createMediaKeySystemConfigurations(initDataTypes, audioCodecs, videoCodecs, drmSystemOptions) {\n var baseConfig = {\n initDataTypes: initDataTypes,\n persistentState: drmSystemOptions.persistentState || 'optional',\n distinctiveIdentifier: drmSystemOptions.distinctiveIdentifier || 'optional',\n sessionTypes: drmSystemOptions.sessionTypes || [drmSystemOptions.sessionType || 'temporary'],\n audioCapabilities: audioCodecs.map(function (codec) {\n return {\n contentType: \"audio/mp4; codecs=\\\"\" + codec + \"\\\"\",\n robustness: drmSystemOptions.audioRobustness || '',\n encryptionScheme: drmSystemOptions.audioEncryptionScheme || null\n };\n }),\n videoCapabilities: videoCodecs.map(function (codec) {\n return {\n contentType: \"video/mp4; codecs=\\\"\" + codec + \"\\\"\",\n robustness: drmSystemOptions.videoRobustness || '',\n encryptionScheme: drmSystemOptions.videoEncryptionScheme || null\n };\n })\n };\n return [baseConfig];\n }\n\n function sliceUint8(array, start, end) {\n // @ts-expect-error This polyfills IE11 usage of Uint8Array slice.\n // It always exists in the TypeScript definition so fails, but it fails at runtime on IE11.\n return Uint8Array.prototype.slice ? array.slice(start, end) : new Uint8Array(Array.prototype.slice.call(array, start, end));\n }\n\n // breaking up those two types in order to clarify what is happening in the decoding path.\n\n /**\n * Returns true if an ID3 header can be found at offset in data\n * @param data - The data to search\n * @param offset - The offset at which to start searching\n */\n var isHeader$2 = function isHeader(data, offset) {\n /*\n * http://id3.org/id3v2.3.0\n * [0] = 'I'\n * [1] = 'D'\n * [2] = '3'\n * [3,4] = {Version}\n * [5] = {Flags}\n * [6-9] = {ID3 Size}\n *\n * An ID3v2 tag can be detected with the following pattern:\n * $49 44 33 yy yy xx zz zz zz zz\n * Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80\n */\n if (offset + 10 <= data.length) {\n // look for 'ID3' identifier\n if (data[offset] === 0x49 && data[offset + 1] === 0x44 && data[offset + 2] === 0x33) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n return false;\n };\n\n /**\n * Returns true if an ID3 footer can be found at offset in data\n * @param data - The data to search\n * @param offset - The offset at which to start searching\n */\n var isFooter = function isFooter(data, offset) {\n /*\n * The footer is a copy of the header, but with a different identifier\n */\n if (offset + 10 <= data.length) {\n // look for '3DI' identifier\n if (data[offset] === 0x33 && data[offset + 1] === 0x44 && data[offset + 2] === 0x49) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n return false;\n };\n\n /**\n * Returns any adjacent ID3 tags found in data starting at offset, as one block of data\n * @param data - The data to search in\n * @param offset - The offset at which to start searching\n * @returns the block of data containing any ID3 tags found\n * or *undefined* if no header is found at the starting offset\n */\n var getID3Data = function getID3Data(data, offset) {\n var front = offset;\n var length = 0;\n while (isHeader$2(data, offset)) {\n // ID3 header is 10 bytes\n length += 10;\n var size = readSize(data, offset + 6);\n length += size;\n if (isFooter(data, offset + 10)) {\n // ID3 footer is 10 bytes\n length += 10;\n }\n offset += length;\n }\n if (length > 0) {\n return data.subarray(front, front + length);\n }\n return undefined;\n };\n var readSize = function readSize(data, offset) {\n var size = 0;\n size = (data[offset] & 0x7f) << 21;\n size |= (data[offset + 1] & 0x7f) << 14;\n size |= (data[offset + 2] & 0x7f) << 7;\n size |= data[offset + 3] & 0x7f;\n return size;\n };\n var canParse$2 = function canParse(data, offset) {\n return isHeader$2(data, offset) && readSize(data, offset + 6) + 10 <= data.length - offset;\n };\n\n /**\n * Searches for the Elementary Stream timestamp found in the ID3 data chunk\n * @param data - Block of data containing one or more ID3 tags\n */\n var getTimeStamp = function getTimeStamp(data) {\n var frames = getID3Frames(data);\n for (var i = 0; i < frames.length; i++) {\n var frame = frames[i];\n if (isTimeStampFrame(frame)) {\n return readTimeStamp(frame);\n }\n }\n return undefined;\n };\n\n /**\n * Returns true if the ID3 frame is an Elementary Stream timestamp frame\n */\n var isTimeStampFrame = function isTimeStampFrame(frame) {\n return frame && frame.key === 'PRIV' && frame.info === 'com.apple.streaming.transportStreamTimestamp';\n };\n var getFrameData = function getFrameData(data) {\n /*\n Frame ID $xx xx xx xx (four characters)\n Size $xx xx xx xx\n Flags $xx xx\n */\n var type = String.fromCharCode(data[0], data[1], data[2], data[3]);\n var size = readSize(data, 4);\n\n // skip frame id, size, and flags\n var offset = 10;\n return {\n type: type,\n size: size,\n data: data.subarray(offset, offset + size)\n };\n };\n\n /**\n * Returns an array of ID3 frames found in all the ID3 tags in the id3Data\n * @param id3Data - The ID3 data containing one or more ID3 tags\n */\n var getID3Frames = function getID3Frames(id3Data) {\n var offset = 0;\n var frames = [];\n while (isHeader$2(id3Data, offset)) {\n var size = readSize(id3Data, offset + 6);\n // skip past ID3 header\n offset += 10;\n var end = offset + size;\n // loop through frames in the ID3 tag\n while (offset + 8 < end) {\n var frameData = getFrameData(id3Data.subarray(offset));\n var frame = decodeFrame(frameData);\n if (frame) {\n frames.push(frame);\n }\n\n // skip frame header and frame data\n offset += frameData.size + 10;\n }\n if (isFooter(id3Data, offset)) {\n offset += 10;\n }\n }\n return frames;\n };\n var decodeFrame = function decodeFrame(frame) {\n if (frame.type === 'PRIV') {\n return decodePrivFrame(frame);\n } else if (frame.type[0] === 'W') {\n return decodeURLFrame(frame);\n }\n return decodeTextFrame(frame);\n };\n var decodePrivFrame = function decodePrivFrame(frame) {\n /*\n Format: \\0\n */\n if (frame.size < 2) {\n return undefined;\n }\n var owner = utf8ArrayToStr(frame.data, true);\n var privateData = new Uint8Array(frame.data.subarray(owner.length + 1));\n return {\n key: frame.type,\n info: owner,\n data: privateData.buffer\n };\n };\n var decodeTextFrame = function decodeTextFrame(frame) {\n if (frame.size < 2) {\n return undefined;\n }\n if (frame.type === 'TXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{Value}\n */\n var index = 1;\n var description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n var value = utf8ArrayToStr(frame.data.subarray(index));\n return {\n key: frame.type,\n info: description,\n data: value\n };\n }\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Value}\n */\n var text = utf8ArrayToStr(frame.data.subarray(1));\n return {\n key: frame.type,\n data: text\n };\n };\n var decodeURLFrame = function decodeURLFrame(frame) {\n if (frame.type === 'WXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{URL}\n */\n if (frame.size < 2) {\n return undefined;\n }\n var index = 1;\n var description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n var value = utf8ArrayToStr(frame.data.subarray(index));\n return {\n key: frame.type,\n info: description,\n data: value\n };\n }\n /*\n Format:\n [0-?] = {URL}\n */\n var url = utf8ArrayToStr(frame.data);\n return {\n key: frame.type,\n data: url\n };\n };\n var readTimeStamp = function readTimeStamp(timeStampFrame) {\n if (timeStampFrame.data.byteLength === 8) {\n var data = new Uint8Array(timeStampFrame.data);\n // timestamp is 33 bit expressed as a big-endian eight-octet number,\n // with the upper 31 bits set to zero.\n var pts33Bit = data[3] & 0x1;\n var timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];\n timestamp /= 45;\n if (pts33Bit) {\n timestamp += 47721858.84;\n } // 2^32 / 90\n\n return Math.round(timestamp);\n }\n return undefined;\n };\n\n // http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197\n // http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt\n /* utf.js - UTF-8 <=> UTF-16 convertion\n *\n * Copyright (C) 1999 Masanao Izumo \n * Version: 1.0\n * LastModified: Dec 25 1999\n * This library is free. You can redistribute it and/or modify it.\n */\n var utf8ArrayToStr = function utf8ArrayToStr(array, exitOnNull) {\n if (exitOnNull === void 0) {\n exitOnNull = false;\n }\n var decoder = getTextDecoder();\n if (decoder) {\n var decoded = decoder.decode(array);\n if (exitOnNull) {\n // grab up to the first null\n var idx = decoded.indexOf('\\0');\n return idx !== -1 ? decoded.substring(0, idx) : decoded;\n }\n\n // remove any null characters\n return decoded.replace(/\\0/g, '');\n }\n var len = array.length;\n var c;\n var char2;\n var char3;\n var out = '';\n var i = 0;\n while (i < len) {\n c = array[i++];\n if (c === 0x00 && exitOnNull) {\n return out;\n } else if (c === 0x00 || c === 0x03) {\n // If the character is 3 (END_OF_TEXT) or 0 (NULL) then skip it\n continue;\n }\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c);\n break;\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++];\n out += String.fromCharCode((c & 0x1f) << 6 | char2 & 0x3f);\n break;\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++];\n char3 = array[i++];\n out += String.fromCharCode((c & 0x0f) << 12 | (char2 & 0x3f) << 6 | (char3 & 0x3f) << 0);\n break;\n }\n }\n return out;\n };\n var decoder;\n function getTextDecoder() {\n // On Play Station 4, TextDecoder is defined but partially implemented.\n // Manual decoding option is preferable\n if (navigator.userAgent.includes('PlayStation 4')) {\n return;\n }\n if (!decoder && typeof self.TextDecoder !== 'undefined') {\n decoder = new self.TextDecoder('utf-8');\n }\n return decoder;\n }\n\n /**\n * hex dump helper class\n */\n\n var Hex = {\n hexDump: function hexDump(array) {\n var str = '';\n for (var i = 0; i < array.length; i++) {\n var h = array[i].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n str += h;\n }\n return str;\n }\n };\n\n var UINT32_MAX$1 = Math.pow(2, 32) - 1;\n var push = [].push;\n\n // We are using fixed track IDs for driving the MP4 remuxer\n // instead of following the TS PIDs.\n // There is no reason not to do this and some browsers/SourceBuffer-demuxers\n // may not like if there are TrackID \"switches\"\n // See https://github.com/video-dev/hls.js/issues/1331\n // Here we are mapping our internal track types to constant MP4 track IDs\n // With MSE currently one can only have one track of each, and we are muxing\n // whatever video/audio rendition in them.\n var RemuxerTrackIdConfig = {\n video: 1,\n audio: 2,\n id3: 3,\n text: 4\n };\n function bin2str(data) {\n return String.fromCharCode.apply(null, data);\n }\n function readUint16(buffer, offset) {\n var val = buffer[offset] << 8 | buffer[offset + 1];\n return val < 0 ? 65536 + val : val;\n }\n function readUint32(buffer, offset) {\n var val = readSint32(buffer, offset);\n return val < 0 ? 4294967296 + val : val;\n }\n function readUint64(buffer, offset) {\n var result = readUint32(buffer, offset);\n result *= Math.pow(2, 32);\n result += readUint32(buffer, offset + 4);\n return result;\n }\n function readSint32(buffer, offset) {\n return buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];\n }\n function writeUint32(buffer, offset, value) {\n buffer[offset] = value >> 24;\n buffer[offset + 1] = value >> 16 & 0xff;\n buffer[offset + 2] = value >> 8 & 0xff;\n buffer[offset + 3] = value & 0xff;\n }\n\n // Find \"moof\" box\n function hasMoofData(data) {\n var end = data.byteLength;\n for (var i = 0; i < end;) {\n var size = readUint32(data, i);\n if (size > 8 && data[i + 4] === 0x6d && data[i + 5] === 0x6f && data[i + 6] === 0x6f && data[i + 7] === 0x66) {\n return true;\n }\n i = size > 1 ? i + size : end;\n }\n return false;\n }\n\n // Find the data for a box specified by its path\n function findBox(data, path) {\n var results = [];\n if (!path.length) {\n // short-circuit the search for empty paths\n return results;\n }\n var end = data.byteLength;\n for (var i = 0; i < end;) {\n var size = readUint32(data, i);\n var type = bin2str(data.subarray(i + 4, i + 8));\n var endbox = size > 1 ? i + size : end;\n if (type === path[0]) {\n if (path.length === 1) {\n // this is the end of the path and we've found the box we were\n // looking for\n results.push(data.subarray(i + 8, endbox));\n } else {\n // recursively search for the next box along the path\n var subresults = findBox(data.subarray(i + 8, endbox), path.slice(1));\n if (subresults.length) {\n push.apply(results, subresults);\n }\n }\n }\n i = endbox;\n }\n\n // we've finished searching all of data\n return results;\n }\n function parseSegmentIndex(sidx) {\n var references = [];\n var version = sidx[0];\n\n // set initial offset, we skip the reference ID (not needed)\n var index = 8;\n var timescale = readUint32(sidx, index);\n index += 4;\n var earliestPresentationTime = 0;\n var firstOffset = 0;\n if (version === 0) {\n earliestPresentationTime = readUint32(sidx, index);\n firstOffset = readUint32(sidx, index + 4);\n index += 8;\n } else {\n earliestPresentationTime = readUint64(sidx, index);\n firstOffset = readUint64(sidx, index + 8);\n index += 16;\n }\n\n // skip reserved\n index += 2;\n var startByte = sidx.length + firstOffset;\n var referencesCount = readUint16(sidx, index);\n index += 2;\n for (var i = 0; i < referencesCount; i++) {\n var referenceIndex = index;\n var referenceInfo = readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n var referenceSize = referenceInfo & 0x7fffffff;\n var referenceType = (referenceInfo & 0x80000000) >>> 31;\n if (referenceType === 1) {\n logger.warn('SIDX has hierarchical references (not supported)');\n return null;\n }\n var subsegmentDuration = readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n references.push({\n referenceSize: referenceSize,\n subsegmentDuration: subsegmentDuration,\n // unscaled\n info: {\n duration: subsegmentDuration / timescale,\n start: startByte,\n end: startByte + referenceSize - 1\n }\n });\n startByte += referenceSize;\n\n // Skipping 1 bit for |startsWithSap|, 3 bits for |sapType|, and 28 bits\n // for |sapDelta|.\n referenceIndex += 4;\n\n // skip to next ref\n index = referenceIndex;\n }\n return {\n earliestPresentationTime: earliestPresentationTime,\n timescale: timescale,\n version: version,\n referencesCount: referencesCount,\n references: references\n };\n }\n\n /**\n * Parses an MP4 initialization segment and extracts stream type and\n * timescale values for any declared tracks. Timescale values indicate the\n * number of clock ticks per second to assume for time-based values\n * elsewhere in the MP4.\n *\n * To determine the start time of an MP4, you need two pieces of\n * information: the timescale unit and the earliest base media decode\n * time. Multiple timescales can be specified within an MP4 but the\n * base media decode time is always expressed in the timescale from\n * the media header box for the track:\n * ```\n * moov > trak > mdia > mdhd.timescale\n * moov > trak > mdia > hdlr\n * ```\n * @param initSegment the bytes of the init segment\n * @returns a hash of track type to timescale values or null if\n * the init segment is malformed.\n */\n\n function parseInitSegment(initSegment) {\n var result = [];\n var traks = findBox(initSegment, ['moov', 'trak']);\n for (var i = 0; i < traks.length; i++) {\n var trak = traks[i];\n var tkhd = findBox(trak, ['tkhd'])[0];\n if (tkhd) {\n var version = tkhd[0];\n var trackId = readUint32(tkhd, version === 0 ? 12 : 20);\n var mdhd = findBox(trak, ['mdia', 'mdhd'])[0];\n if (mdhd) {\n version = mdhd[0];\n var timescale = readUint32(mdhd, version === 0 ? 12 : 20);\n var hdlr = findBox(trak, ['mdia', 'hdlr'])[0];\n if (hdlr) {\n var hdlrType = bin2str(hdlr.subarray(8, 12));\n var type = {\n soun: ElementaryStreamTypes.AUDIO,\n vide: ElementaryStreamTypes.VIDEO\n }[hdlrType];\n if (type) {\n // Parse codec details\n var stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n var stsdData = parseStsd(stsd);\n result[trackId] = {\n timescale: timescale,\n type: type\n };\n result[type] = _objectSpread2({\n timescale: timescale,\n id: trackId\n }, stsdData);\n }\n }\n }\n }\n }\n var trex = findBox(initSegment, ['moov', 'mvex', 'trex']);\n trex.forEach(function (trex) {\n var trackId = readUint32(trex, 4);\n var track = result[trackId];\n if (track) {\n track.default = {\n duration: readUint32(trex, 12),\n flags: readUint32(trex, 20)\n };\n }\n });\n return result;\n }\n function parseStsd(stsd) {\n var sampleEntries = stsd.subarray(8);\n var sampleEntriesEnd = sampleEntries.subarray(8 + 78);\n var fourCC = bin2str(sampleEntries.subarray(4, 8));\n var codec = fourCC;\n var encrypted = fourCC === 'enca' || fourCC === 'encv';\n if (encrypted) {\n var encBox = findBox(sampleEntries, [fourCC])[0];\n var encBoxChildren = encBox.subarray(fourCC === 'enca' ? 28 : 78);\n var sinfs = findBox(encBoxChildren, ['sinf']);\n sinfs.forEach(function (sinf) {\n var schm = findBox(sinf, ['schm'])[0];\n if (schm) {\n var scheme = bin2str(schm.subarray(4, 8));\n if (scheme === 'cbcs' || scheme === 'cenc') {\n var frma = findBox(sinf, ['frma'])[0];\n if (frma) {\n // for encrypted content codec fourCC will be in frma\n codec = bin2str(frma);\n }\n }\n }\n });\n }\n switch (codec) {\n case 'avc1':\n case 'avc2':\n case 'avc3':\n case 'avc4':\n {\n // extract profile + compatibility + level out of avcC box\n var avcCBox = findBox(sampleEntriesEnd, ['avcC'])[0];\n codec += '.' + toHex(avcCBox[1]) + toHex(avcCBox[2]) + toHex(avcCBox[3]);\n break;\n }\n case 'mp4a':\n {\n var codecBox = findBox(sampleEntries, [fourCC])[0];\n var esdsBox = findBox(codecBox.subarray(28), ['esds'])[0];\n if (esdsBox && esdsBox.length > 12) {\n var i = 4;\n // ES Descriptor tag\n if (esdsBox[i++] !== 0x03) {\n break;\n }\n i = skipBERInteger(esdsBox, i);\n i += 2; // skip es_id;\n var flags = esdsBox[i++];\n if (flags & 0x80) {\n i += 2; // skip dependency es_id\n }\n if (flags & 0x40) {\n i += esdsBox[i++]; // skip URL\n }\n // Decoder config descriptor\n if (esdsBox[i++] !== 0x04) {\n break;\n }\n i = skipBERInteger(esdsBox, i);\n var objectType = esdsBox[i++];\n if (objectType === 0x40) {\n codec += '.' + toHex(objectType);\n } else {\n break;\n }\n i += 12;\n // Decoder specific info\n if (esdsBox[i++] !== 0x05) {\n break;\n }\n i = skipBERInteger(esdsBox, i);\n var firstByte = esdsBox[i++];\n var audioObjectType = (firstByte & 0xf8) >> 3;\n if (audioObjectType === 31) {\n audioObjectType += 1 + ((firstByte & 0x7) << 3) + ((esdsBox[i] & 0xe0) >> 5);\n }\n codec += '.' + audioObjectType;\n }\n break;\n }\n case 'hvc1':\n case 'hev1':\n {\n var hvcCBox = findBox(sampleEntriesEnd, ['hvcC'])[0];\n var profileByte = hvcCBox[1];\n var profileSpace = ['', 'A', 'B', 'C'][profileByte >> 6];\n var generalProfileIdc = profileByte & 0x1f;\n var profileCompat = readUint32(hvcCBox, 2);\n var tierFlag = (profileByte & 0x20) >> 5 ? 'H' : 'L';\n var levelIDC = hvcCBox[12];\n var constraintIndicator = hvcCBox.subarray(6, 12);\n codec += '.' + profileSpace + generalProfileIdc;\n codec += '.' + profileCompat.toString(16).toUpperCase();\n codec += '.' + tierFlag + levelIDC;\n var constraintString = '';\n for (var _i = constraintIndicator.length; _i--;) {\n var _byte = constraintIndicator[_i];\n if (_byte || constraintString) {\n var encodedByte = _byte.toString(16).toUpperCase();\n constraintString = '.' + encodedByte + constraintString;\n }\n }\n codec += constraintString;\n break;\n }\n case 'dvh1':\n case 'dvhe':\n {\n var dvcCBox = findBox(sampleEntriesEnd, ['dvcC'])[0];\n var profile = dvcCBox[2] >> 1 & 0x7f;\n var level = dvcCBox[2] << 5 & 0x20 | dvcCBox[3] >> 3 & 0x1f;\n codec += '.' + addLeadingZero(profile) + '.' + addLeadingZero(level);\n break;\n }\n case 'vp09':\n {\n var vpcCBox = findBox(sampleEntriesEnd, ['vpcC'])[0];\n var _profile = vpcCBox[4];\n var _level = vpcCBox[5];\n var bitDepth = vpcCBox[6] >> 4 & 0x0f;\n codec += '.' + addLeadingZero(_profile) + '.' + addLeadingZero(_level) + '.' + addLeadingZero(bitDepth);\n break;\n }\n case 'av01':\n {\n var av1CBox = findBox(sampleEntriesEnd, ['av1C'])[0];\n var _profile2 = av1CBox[1] >>> 5;\n var _level2 = av1CBox[1] & 0x1f;\n var _tierFlag = av1CBox[2] >>> 7 ? 'H' : 'M';\n var highBitDepth = (av1CBox[2] & 0x40) >> 6;\n var twelveBit = (av1CBox[2] & 0x20) >> 5;\n var _bitDepth = _profile2 === 2 && highBitDepth ? twelveBit ? 12 : 10 : highBitDepth ? 10 : 8;\n var monochrome = (av1CBox[2] & 0x10) >> 4;\n var chromaSubsamplingX = (av1CBox[2] & 0x08) >> 3;\n var chromaSubsamplingY = (av1CBox[2] & 0x04) >> 2;\n var chromaSamplePosition = av1CBox[2] & 0x03;\n // TODO: parse color_description_present_flag\n // default it to BT.709/limited range for now\n // more info https://aomediacodec.github.io/av1-isobmff/#av1codecconfigurationbox-syntax\n var colorPrimaries = 1;\n var transferCharacteristics = 1;\n var matrixCoefficients = 1;\n var videoFullRangeFlag = 0;\n codec += '.' + _profile2 + '.' + addLeadingZero(_level2) + _tierFlag + '.' + addLeadingZero(_bitDepth) + '.' + monochrome + '.' + chromaSubsamplingX + chromaSubsamplingY + chromaSamplePosition + '.' + addLeadingZero(colorPrimaries) + '.' + addLeadingZero(transferCharacteristics) + '.' + addLeadingZero(matrixCoefficients) + '.' + videoFullRangeFlag;\n break;\n }\n }\n return {\n codec: codec,\n encrypted: encrypted\n };\n }\n function skipBERInteger(bytes, i) {\n var limit = i + 5;\n while (bytes[i++] & 0x80 && i < limit) {}\n return i;\n }\n function toHex(x) {\n return ('0' + x.toString(16).toUpperCase()).slice(-2);\n }\n function addLeadingZero(num) {\n return (num < 10 ? '0' : '') + num;\n }\n function patchEncyptionData(initSegment, decryptdata) {\n if (!initSegment || !decryptdata) {\n return initSegment;\n }\n var keyId = decryptdata.keyId;\n if (keyId && decryptdata.isCommonEncryption) {\n var traks = findBox(initSegment, ['moov', 'trak']);\n traks.forEach(function (trak) {\n var stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n\n // skip the sample entry count\n var sampleEntries = stsd.subarray(8);\n var encBoxes = findBox(sampleEntries, ['enca']);\n var isAudio = encBoxes.length > 0;\n if (!isAudio) {\n encBoxes = findBox(sampleEntries, ['encv']);\n }\n encBoxes.forEach(function (enc) {\n var encBoxChildren = isAudio ? enc.subarray(28) : enc.subarray(78);\n var sinfBoxes = findBox(encBoxChildren, ['sinf']);\n sinfBoxes.forEach(function (sinf) {\n var tenc = parseSinf(sinf);\n if (tenc) {\n // Look for default key id (keyID offset is always 8 within the tenc box):\n var tencKeyId = tenc.subarray(8, 24);\n if (!tencKeyId.some(function (b) {\n return b !== 0;\n })) {\n logger.log(\"[eme] Patching keyId in 'enc\" + (isAudio ? 'a' : 'v') + \">sinf>>tenc' box: \" + Hex.hexDump(tencKeyId) + \" -> \" + Hex.hexDump(keyId));\n tenc.set(keyId, 8);\n }\n }\n });\n });\n });\n }\n return initSegment;\n }\n function parseSinf(sinf) {\n var schm = findBox(sinf, ['schm'])[0];\n if (schm) {\n var scheme = bin2str(schm.subarray(4, 8));\n if (scheme === 'cbcs' || scheme === 'cenc') {\n return findBox(sinf, ['schi', 'tenc'])[0];\n }\n }\n logger.error(\"[eme] missing 'schm' box\");\n return null;\n }\n\n /**\n * Determine the base media decode start time, in seconds, for an MP4\n * fragment. If multiple fragments are specified, the earliest time is\n * returned.\n *\n * The base media decode time can be parsed from track fragment\n * metadata:\n * ```\n * moof > traf > tfdt.baseMediaDecodeTime\n * ```\n * It requires the timescale value from the mdhd to interpret.\n *\n * @param initData - a hash of track type to timescale values\n * @param fmp4 - the bytes of the mp4 fragment\n * @returns the earliest base media decode start time for the\n * fragment, in seconds\n */\n function getStartDTS(initData, fmp4) {\n // we need info from two children of each track fragment box\n return findBox(fmp4, ['moof', 'traf']).reduce(function (result, traf) {\n var tfdt = findBox(traf, ['tfdt'])[0];\n var version = tfdt[0];\n var start = findBox(traf, ['tfhd']).reduce(function (result, tfhd) {\n // get the track id from the tfhd\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n if (track) {\n var baseTime = readUint32(tfdt, 4);\n if (version === 1) {\n // If value is too large, assume signed 64-bit. Negative track fragment decode times are invalid, but they exist in the wild.\n // This prevents large values from being used for initPTS, which can cause playlist sync issues.\n // https://github.com/video-dev/hls.js/issues/5303\n if (baseTime === UINT32_MAX$1) {\n logger.warn(\"[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time\");\n return result;\n }\n baseTime *= UINT32_MAX$1 + 1;\n baseTime += readUint32(tfdt, 8);\n }\n // assume a 90kHz clock if no timescale was specified\n var scale = track.timescale || 90e3;\n // convert base time to seconds\n var startTime = baseTime / scale;\n if (isFiniteNumber(startTime) && (result === null || startTime < result)) {\n return startTime;\n }\n }\n return result;\n }, null);\n if (start !== null && isFiniteNumber(start) && (result === null || start < result)) {\n return start;\n }\n return result;\n }, null);\n }\n\n /*\n For Reference:\n aligned(8) class TrackFragmentHeaderBox\n extends FullBox(‘tfhd’, 0, tf_flags){\n unsigned int(32) track_ID;\n // all the following are optional fields\n unsigned int(64) base_data_offset;\n unsigned int(32) sample_description_index;\n unsigned int(32) default_sample_duration;\n unsigned int(32) default_sample_size;\n unsigned int(32) default_sample_flags\n }\n */\n function getDuration(data, initData) {\n var rawDuration = 0;\n var videoDuration = 0;\n var audioDuration = 0;\n var trafs = findBox(data, ['moof', 'traf']);\n for (var i = 0; i < trafs.length; i++) {\n var traf = trafs[i];\n // There is only one tfhd & trun per traf\n // This is true for CMAF style content, and we should perhaps check the ftyp\n // and only look for a single trun then, but for ISOBMFF we should check\n // for multiple track runs.\n var tfhd = findBox(traf, ['tfhd'])[0];\n // get the track id from the tfhd\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n if (!track) {\n continue;\n }\n var trackDefault = track.default;\n var tfhdFlags = readUint32(tfhd, 0) | (trackDefault == null ? void 0 : trackDefault.flags);\n var sampleDuration = trackDefault == null ? void 0 : trackDefault.duration;\n if (tfhdFlags & 0x000008) {\n // 0x000008 indicates the presence of the default_sample_duration field\n if (tfhdFlags & 0x000002) {\n // 0x000002 indicates the presence of the sample_description_index field, which precedes default_sample_duration\n // If present, the default_sample_duration exists at byte offset 12\n sampleDuration = readUint32(tfhd, 12);\n } else {\n // Otherwise, the duration is at byte offset 8\n sampleDuration = readUint32(tfhd, 8);\n }\n }\n // assume a 90kHz clock if no timescale was specified\n var timescale = track.timescale || 90e3;\n var truns = findBox(traf, ['trun']);\n for (var j = 0; j < truns.length; j++) {\n rawDuration = computeRawDurationFromSamples(truns[j]);\n if (!rawDuration && sampleDuration) {\n var sampleCount = readUint32(truns[j], 4);\n rawDuration = sampleDuration * sampleCount;\n }\n if (track.type === ElementaryStreamTypes.VIDEO) {\n videoDuration += rawDuration / timescale;\n } else if (track.type === ElementaryStreamTypes.AUDIO) {\n audioDuration += rawDuration / timescale;\n }\n }\n }\n if (videoDuration === 0 && audioDuration === 0) {\n // If duration samples are not available in the traf use sidx subsegment_duration\n var sidxMinStart = Infinity;\n var sidxMaxEnd = 0;\n var sidxDuration = 0;\n var sidxs = findBox(data, ['sidx']);\n for (var _i2 = 0; _i2 < sidxs.length; _i2++) {\n var sidx = parseSegmentIndex(sidxs[_i2]);\n if (sidx != null && sidx.references) {\n sidxMinStart = Math.min(sidxMinStart, sidx.earliestPresentationTime / sidx.timescale);\n var subSegmentDuration = sidx.references.reduce(function (dur, ref) {\n return dur + ref.info.duration || 0;\n }, 0);\n sidxMaxEnd = Math.max(sidxMaxEnd, subSegmentDuration + sidx.earliestPresentationTime / sidx.timescale);\n sidxDuration = sidxMaxEnd - sidxMinStart;\n }\n }\n if (sidxDuration && isFiniteNumber(sidxDuration)) {\n return sidxDuration;\n }\n }\n if (videoDuration) {\n return videoDuration;\n }\n return audioDuration;\n }\n\n /*\n For Reference:\n aligned(8) class TrackRunBox\n extends FullBox(‘trun’, version, tr_flags) {\n unsigned int(32) sample_count;\n // the following are optional fields\n signed int(32) data_offset;\n unsigned int(32) first_sample_flags;\n // all fields in the following array are optional\n {\n unsigned int(32) sample_duration;\n unsigned int(32) sample_size;\n unsigned int(32) sample_flags\n if (version == 0)\n { unsigned int(32)\n else\n { signed int(32)\n }[ sample_count ]\n }\n */\n function computeRawDurationFromSamples(trun) {\n var flags = readUint32(trun, 0);\n // Flags are at offset 0, non-optional sample_count is at offset 4. Therefore we start 8 bytes in.\n // Each field is an int32, which is 4 bytes\n var offset = 8;\n // data-offset-present flag\n if (flags & 0x000001) {\n offset += 4;\n }\n // first-sample-flags-present flag\n if (flags & 0x000004) {\n offset += 4;\n }\n var duration = 0;\n var sampleCount = readUint32(trun, 4);\n for (var i = 0; i < sampleCount; i++) {\n // sample-duration-present flag\n if (flags & 0x000100) {\n var sampleDuration = readUint32(trun, offset);\n duration += sampleDuration;\n offset += 4;\n }\n // sample-size-present flag\n if (flags & 0x000200) {\n offset += 4;\n }\n // sample-flags-present flag\n if (flags & 0x000400) {\n offset += 4;\n }\n // sample-composition-time-offsets-present flag\n if (flags & 0x000800) {\n offset += 4;\n }\n }\n return duration;\n }\n function offsetStartDTS(initData, fmp4, timeOffset) {\n findBox(fmp4, ['moof', 'traf']).forEach(function (traf) {\n findBox(traf, ['tfhd']).forEach(function (tfhd) {\n // get the track id from the tfhd\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n if (!track) {\n return;\n }\n // assume a 90kHz clock if no timescale was specified\n var timescale = track.timescale || 90e3;\n // get the base media decode time from the tfdt\n findBox(traf, ['tfdt']).forEach(function (tfdt) {\n var version = tfdt[0];\n var offset = timeOffset * timescale;\n if (offset) {\n var baseMediaDecodeTime = readUint32(tfdt, 4);\n if (version === 0) {\n baseMediaDecodeTime -= offset;\n baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n writeUint32(tfdt, 4, baseMediaDecodeTime);\n } else {\n baseMediaDecodeTime *= Math.pow(2, 32);\n baseMediaDecodeTime += readUint32(tfdt, 8);\n baseMediaDecodeTime -= offset;\n baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n var upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX$1 + 1));\n var lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX$1 + 1));\n writeUint32(tfdt, 4, upper);\n writeUint32(tfdt, 8, lower);\n }\n }\n });\n });\n });\n }\n\n // TODO: Check if the last moof+mdat pair is part of the valid range\n function segmentValidRange(data) {\n var segmentedRange = {\n valid: null,\n remainder: null\n };\n var moofs = findBox(data, ['moof']);\n if (moofs.length < 2) {\n segmentedRange.remainder = data;\n return segmentedRange;\n }\n var last = moofs[moofs.length - 1];\n // Offset by 8 bytes; findBox offsets the start by as much\n segmentedRange.valid = sliceUint8(data, 0, last.byteOffset - 8);\n segmentedRange.remainder = sliceUint8(data, last.byteOffset - 8);\n return segmentedRange;\n }\n function appendUint8Array(data1, data2) {\n var temp = new Uint8Array(data1.length + data2.length);\n temp.set(data1);\n temp.set(data2, data1.length);\n return temp;\n }\n function parseSamples(timeOffset, track) {\n var seiSamples = [];\n var videoData = track.samples;\n var timescale = track.timescale;\n var trackId = track.id;\n var isHEVCFlavor = false;\n var moofs = findBox(videoData, ['moof']);\n moofs.map(function (moof) {\n var moofOffset = moof.byteOffset - 8;\n var trafs = findBox(moof, ['traf']);\n trafs.map(function (traf) {\n // get the base media decode time from the tfdt\n var baseTime = findBox(traf, ['tfdt']).map(function (tfdt) {\n var version = tfdt[0];\n var result = readUint32(tfdt, 4);\n if (version === 1) {\n result *= Math.pow(2, 32);\n result += readUint32(tfdt, 8);\n }\n return result / timescale;\n })[0];\n if (baseTime !== undefined) {\n timeOffset = baseTime;\n }\n return findBox(traf, ['tfhd']).map(function (tfhd) {\n var id = readUint32(tfhd, 4);\n var tfhdFlags = readUint32(tfhd, 0) & 0xffffff;\n var baseDataOffsetPresent = (tfhdFlags & 0x000001) !== 0;\n var sampleDescriptionIndexPresent = (tfhdFlags & 0x000002) !== 0;\n var defaultSampleDurationPresent = (tfhdFlags & 0x000008) !== 0;\n var defaultSampleDuration = 0;\n var defaultSampleSizePresent = (tfhdFlags & 0x000010) !== 0;\n var defaultSampleSize = 0;\n var defaultSampleFlagsPresent = (tfhdFlags & 0x000020) !== 0;\n var tfhdOffset = 8;\n if (id === trackId) {\n if (baseDataOffsetPresent) {\n tfhdOffset += 8;\n }\n if (sampleDescriptionIndexPresent) {\n tfhdOffset += 4;\n }\n if (defaultSampleDurationPresent) {\n defaultSampleDuration = readUint32(tfhd, tfhdOffset);\n tfhdOffset += 4;\n }\n if (defaultSampleSizePresent) {\n defaultSampleSize = readUint32(tfhd, tfhdOffset);\n tfhdOffset += 4;\n }\n if (defaultSampleFlagsPresent) {\n tfhdOffset += 4;\n }\n if (track.type === 'video') {\n isHEVCFlavor = isHEVC(track.codec);\n }\n findBox(traf, ['trun']).map(function (trun) {\n var version = trun[0];\n var flags = readUint32(trun, 0) & 0xffffff;\n var dataOffsetPresent = (flags & 0x000001) !== 0;\n var dataOffset = 0;\n var firstSampleFlagsPresent = (flags & 0x000004) !== 0;\n var sampleDurationPresent = (flags & 0x000100) !== 0;\n var sampleDuration = 0;\n var sampleSizePresent = (flags & 0x000200) !== 0;\n var sampleSize = 0;\n var sampleFlagsPresent = (flags & 0x000400) !== 0;\n var sampleCompositionOffsetsPresent = (flags & 0x000800) !== 0;\n var compositionOffset = 0;\n var sampleCount = readUint32(trun, 4);\n var trunOffset = 8; // past version, flags, and sample count\n\n if (dataOffsetPresent) {\n dataOffset = readUint32(trun, trunOffset);\n trunOffset += 4;\n }\n if (firstSampleFlagsPresent) {\n trunOffset += 4;\n }\n var sampleOffset = dataOffset + moofOffset;\n for (var ix = 0; ix < sampleCount; ix++) {\n if (sampleDurationPresent) {\n sampleDuration = readUint32(trun, trunOffset);\n trunOffset += 4;\n } else {\n sampleDuration = defaultSampleDuration;\n }\n if (sampleSizePresent) {\n sampleSize = readUint32(trun, trunOffset);\n trunOffset += 4;\n } else {\n sampleSize = defaultSampleSize;\n }\n if (sampleFlagsPresent) {\n trunOffset += 4;\n }\n if (sampleCompositionOffsetsPresent) {\n if (version === 0) {\n compositionOffset = readUint32(trun, trunOffset);\n } else {\n compositionOffset = readSint32(trun, trunOffset);\n }\n trunOffset += 4;\n }\n if (track.type === ElementaryStreamTypes.VIDEO) {\n var naluTotalSize = 0;\n while (naluTotalSize < sampleSize) {\n var naluSize = readUint32(videoData, sampleOffset);\n sampleOffset += 4;\n if (isSEIMessage(isHEVCFlavor, videoData[sampleOffset])) {\n var data = videoData.subarray(sampleOffset, sampleOffset + naluSize);\n parseSEIMessageFromNALu(data, isHEVCFlavor ? 2 : 1, timeOffset + compositionOffset / timescale, seiSamples);\n }\n sampleOffset += naluSize;\n naluTotalSize += naluSize + 4;\n }\n }\n timeOffset += sampleDuration / timescale;\n }\n });\n }\n });\n });\n });\n return seiSamples;\n }\n function isHEVC(codec) {\n if (!codec) {\n return false;\n }\n var delimit = codec.indexOf('.');\n var baseCodec = delimit < 0 ? codec : codec.substring(0, delimit);\n return baseCodec === 'hvc1' || baseCodec === 'hev1' ||\n // Dolby Vision\n baseCodec === 'dvh1' || baseCodec === 'dvhe';\n }\n function isSEIMessage(isHEVCFlavor, naluHeader) {\n if (isHEVCFlavor) {\n var naluType = naluHeader >> 1 & 0x3f;\n return naluType === 39 || naluType === 40;\n } else {\n var _naluType = naluHeader & 0x1f;\n return _naluType === 6;\n }\n }\n function parseSEIMessageFromNALu(unescapedData, headerSize, pts, samples) {\n var data = discardEPB(unescapedData);\n var seiPtr = 0;\n // skip nal header\n seiPtr += headerSize;\n var payloadType = 0;\n var payloadSize = 0;\n var b = 0;\n while (seiPtr < data.length) {\n payloadType = 0;\n do {\n if (seiPtr >= data.length) {\n break;\n }\n b = data[seiPtr++];\n payloadType += b;\n } while (b === 0xff);\n\n // Parse payload size.\n payloadSize = 0;\n do {\n if (seiPtr >= data.length) {\n break;\n }\n b = data[seiPtr++];\n payloadSize += b;\n } while (b === 0xff);\n var leftOver = data.length - seiPtr;\n // Create a variable to process the payload\n var payPtr = seiPtr;\n\n // Increment the seiPtr to the end of the payload\n if (payloadSize < leftOver) {\n seiPtr += payloadSize;\n } else if (payloadSize > leftOver) {\n // Some type of corruption has happened?\n logger.error(\"Malformed SEI payload. \" + payloadSize + \" is too small, only \" + leftOver + \" bytes left to parse.\");\n // We might be able to parse some data, but let's be safe and ignore it.\n break;\n }\n if (payloadType === 4) {\n var countryCode = data[payPtr++];\n if (countryCode === 181) {\n var providerCode = readUint16(data, payPtr);\n payPtr += 2;\n if (providerCode === 49) {\n var userStructure = readUint32(data, payPtr);\n payPtr += 4;\n if (userStructure === 0x47413934) {\n var userDataType = data[payPtr++];\n\n // Raw CEA-608 bytes wrapped in CEA-708 packet\n if (userDataType === 3) {\n var firstByte = data[payPtr++];\n var totalCCs = 0x1f & firstByte;\n var enabled = 0x40 & firstByte;\n var totalBytes = enabled ? 2 + totalCCs * 3 : 0;\n var byteArray = new Uint8Array(totalBytes);\n if (enabled) {\n byteArray[0] = firstByte;\n for (var i = 1; i < totalBytes; i++) {\n byteArray[i] = data[payPtr++];\n }\n }\n samples.push({\n type: userDataType,\n payloadType: payloadType,\n pts: pts,\n bytes: byteArray\n });\n }\n }\n }\n }\n } else if (payloadType === 5) {\n if (payloadSize > 16) {\n var uuidStrArray = [];\n for (var _i3 = 0; _i3 < 16; _i3++) {\n var _b = data[payPtr++].toString(16);\n uuidStrArray.push(_b.length == 1 ? '0' + _b : _b);\n if (_i3 === 3 || _i3 === 5 || _i3 === 7 || _i3 === 9) {\n uuidStrArray.push('-');\n }\n }\n var length = payloadSize - 16;\n var userDataBytes = new Uint8Array(length);\n for (var _i4 = 0; _i4 < length; _i4++) {\n userDataBytes[_i4] = data[payPtr++];\n }\n samples.push({\n payloadType: payloadType,\n pts: pts,\n uuid: uuidStrArray.join(''),\n userData: utf8ArrayToStr(userDataBytes),\n userDataBytes: userDataBytes\n });\n }\n }\n }\n }\n\n /**\n * remove Emulation Prevention bytes from a RBSP\n */\n function discardEPB(data) {\n var length = data.byteLength;\n var EPBPositions = [];\n var i = 1;\n\n // Find all `Emulation Prevention Bytes`\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n EPBPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n }\n\n // If no Emulation Prevention Bytes were found just return the original\n // array\n if (EPBPositions.length === 0) {\n return data;\n }\n\n // Create a new array to hold the NAL unit data\n var newLength = length - EPBPositions.length;\n var newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === EPBPositions[0]) {\n // Skip this byte\n sourceIndex++;\n // Remove this position index\n EPBPositions.shift();\n }\n newData[i] = data[sourceIndex];\n }\n return newData;\n }\n function parseEmsg(data) {\n var version = data[0];\n var schemeIdUri = '';\n var value = '';\n var timeScale = 0;\n var presentationTimeDelta = 0;\n var presentationTime = 0;\n var eventDuration = 0;\n var id = 0;\n var offset = 0;\n if (version === 0) {\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n timeScale = readUint32(data, 12);\n presentationTimeDelta = readUint32(data, 16);\n eventDuration = readUint32(data, 20);\n id = readUint32(data, 24);\n offset = 28;\n } else if (version === 1) {\n offset += 4;\n timeScale = readUint32(data, offset);\n offset += 4;\n var leftPresentationTime = readUint32(data, offset);\n offset += 4;\n var rightPresentationTime = readUint32(data, offset);\n offset += 4;\n presentationTime = Math.pow(2, 32) * leftPresentationTime + rightPresentationTime;\n if (!isSafeInteger(presentationTime)) {\n presentationTime = Number.MAX_SAFE_INTEGER;\n logger.warn('Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box');\n }\n eventDuration = readUint32(data, offset);\n offset += 4;\n id = readUint32(data, offset);\n offset += 4;\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n var payload = data.subarray(offset, data.byteLength);\n return {\n schemeIdUri: schemeIdUri,\n value: value,\n timeScale: timeScale,\n presentationTime: presentationTime,\n presentationTimeDelta: presentationTimeDelta,\n eventDuration: eventDuration,\n id: id,\n payload: payload\n };\n }\n function mp4Box(type) {\n for (var _len = arguments.length, payload = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n payload[_key - 1] = arguments[_key];\n }\n var len = payload.length;\n var size = 8;\n var i = len;\n while (i--) {\n size += payload[i].byteLength;\n }\n var result = new Uint8Array(size);\n result[0] = size >> 24 & 0xff;\n result[1] = size >> 16 & 0xff;\n result[2] = size >> 8 & 0xff;\n result[3] = size & 0xff;\n result.set(type, 4);\n for (i = 0, size = 8; i < len; i++) {\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n return result;\n }\n function mp4pssh(systemId, keyids, data) {\n if (systemId.byteLength !== 16) {\n throw new RangeError('Invalid system id');\n }\n var version;\n var kids;\n if (keyids) {\n version = 1;\n kids = new Uint8Array(keyids.length * 16);\n for (var ix = 0; ix < keyids.length; ix++) {\n var k = keyids[ix]; // uint8array\n if (k.byteLength !== 16) {\n throw new RangeError('Invalid key');\n }\n kids.set(k, ix * 16);\n }\n } else {\n version = 0;\n kids = new Uint8Array();\n }\n var kidCount;\n if (version > 0) {\n kidCount = new Uint8Array(4);\n if (keyids.length > 0) {\n new DataView(kidCount.buffer).setUint32(0, keyids.length, false);\n }\n } else {\n kidCount = new Uint8Array();\n }\n var dataSize = new Uint8Array(4);\n if (data && data.byteLength > 0) {\n new DataView(dataSize.buffer).setUint32(0, data.byteLength, false);\n }\n return mp4Box([112, 115, 115, 104], new Uint8Array([version, 0x00, 0x00, 0x00 // Flags\n ]), systemId,\n // 16 bytes\n kidCount, kids, dataSize, data || new Uint8Array());\n }\n function parsePssh(initData) {\n if (!(initData instanceof ArrayBuffer) || initData.byteLength < 32) {\n return null;\n }\n var result = {\n version: 0,\n systemId: '',\n kids: null,\n data: null\n };\n var view = new DataView(initData);\n var boxSize = view.getUint32(0);\n if (initData.byteLength !== boxSize && boxSize > 44) {\n return null;\n }\n var type = view.getUint32(4);\n if (type !== 0x70737368) {\n return null;\n }\n result.version = view.getUint32(8) >>> 24;\n if (result.version > 1) {\n return null;\n }\n result.systemId = Hex.hexDump(new Uint8Array(initData, 12, 16));\n var dataSizeOrKidCount = view.getUint32(28);\n if (result.version === 0) {\n if (boxSize - 32 < dataSizeOrKidCount) {\n return null;\n }\n result.data = new Uint8Array(initData, 32, dataSizeOrKidCount);\n } else if (result.version === 1) {\n result.kids = [];\n for (var i = 0; i < dataSizeOrKidCount; i++) {\n result.kids.push(new Uint8Array(initData, 32 + i * 16, 16));\n }\n }\n return result;\n }\n\n var keyUriToKeyIdMap = {};\n var LevelKey = /*#__PURE__*/function () {\n LevelKey.clearKeyUriToKeyIdMap = function clearKeyUriToKeyIdMap() {\n keyUriToKeyIdMap = {};\n };\n function LevelKey(method, uri, format, formatversions, iv) {\n if (formatversions === void 0) {\n formatversions = [1];\n }\n if (iv === void 0) {\n iv = null;\n }\n this.uri = void 0;\n this.method = void 0;\n this.keyFormat = void 0;\n this.keyFormatVersions = void 0;\n this.encrypted = void 0;\n this.isCommonEncryption = void 0;\n this.iv = null;\n this.key = null;\n this.keyId = null;\n this.pssh = null;\n this.method = method;\n this.uri = uri;\n this.keyFormat = format;\n this.keyFormatVersions = formatversions;\n this.iv = iv;\n this.encrypted = method ? method !== 'NONE' : false;\n this.isCommonEncryption = this.encrypted && method !== 'AES-128';\n }\n var _proto = LevelKey.prototype;\n _proto.isSupported = function isSupported() {\n // If it's Segment encryption or No encryption, just select that key system\n if (this.method) {\n if (this.method === 'AES-128' || this.method === 'NONE') {\n return true;\n }\n if (this.keyFormat === 'identity') {\n // Maintain support for clear SAMPLE-AES with MPEG-3 TS\n return this.method === 'SAMPLE-AES';\n } else {\n switch (this.keyFormat) {\n case KeySystemFormats.FAIRPLAY:\n case KeySystemFormats.WIDEVINE:\n case KeySystemFormats.PLAYREADY:\n case KeySystemFormats.CLEARKEY:\n return ['ISO-23001-7', 'SAMPLE-AES', 'SAMPLE-AES-CENC', 'SAMPLE-AES-CTR'].indexOf(this.method) !== -1;\n }\n }\n }\n return false;\n };\n _proto.getDecryptData = function getDecryptData(sn) {\n if (!this.encrypted || !this.uri) {\n return null;\n }\n if (this.method === 'AES-128' && this.uri && !this.iv) {\n if (typeof sn !== 'number') {\n // We are fetching decryption data for a initialization segment\n // If the segment was encrypted with AES-128\n // It must have an IV defined. We cannot substitute the Segment Number in.\n if (this.method === 'AES-128' && !this.iv) {\n logger.warn(\"missing IV for initialization segment with method=\\\"\" + this.method + \"\\\" - compliance issue\");\n }\n // Explicitly set sn to resulting value from implicit conversions 'initSegment' values for IV generation.\n sn = 0;\n }\n var iv = createInitializationVector(sn);\n var decryptdata = new LevelKey(this.method, this.uri, 'identity', this.keyFormatVersions, iv);\n return decryptdata;\n }\n\n // Initialize keyId if possible\n var keyBytes = convertDataUriToArrayBytes(this.uri);\n if (keyBytes) {\n switch (this.keyFormat) {\n case KeySystemFormats.WIDEVINE:\n this.pssh = keyBytes;\n // In case of widevine keyID is embedded in PSSH box. Read Key ID.\n if (keyBytes.length >= 22) {\n this.keyId = keyBytes.subarray(keyBytes.length - 22, keyBytes.length - 6);\n }\n break;\n case KeySystemFormats.PLAYREADY:\n {\n var PlayReadyKeySystemUUID = new Uint8Array([0x9a, 0x04, 0xf0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xab, 0x92, 0xe6, 0x5b, 0xe0, 0x88, 0x5f, 0x95]);\n this.pssh = mp4pssh(PlayReadyKeySystemUUID, null, keyBytes);\n var keyBytesUtf16 = new Uint16Array(keyBytes.buffer, keyBytes.byteOffset, keyBytes.byteLength / 2);\n var keyByteStr = String.fromCharCode.apply(null, Array.from(keyBytesUtf16));\n\n // Parse Playready WRMHeader XML\n var xmlKeyBytes = keyByteStr.substring(keyByteStr.indexOf('<'), keyByteStr.length);\n var parser = new DOMParser();\n var xmlDoc = parser.parseFromString(xmlKeyBytes, 'text/xml');\n var keyData = xmlDoc.getElementsByTagName('KID')[0];\n if (keyData) {\n var keyId = keyData.childNodes[0] ? keyData.childNodes[0].nodeValue : keyData.getAttribute('VALUE');\n if (keyId) {\n var keyIdArray = base64Decode(keyId).subarray(0, 16);\n // KID value in PRO is a base64-encoded little endian GUID interpretation of UUID\n // KID value in ‘tenc’ is a big endian UUID GUID interpretation of UUID\n changeEndianness(keyIdArray);\n this.keyId = keyIdArray;\n }\n }\n break;\n }\n default:\n {\n var keydata = keyBytes.subarray(0, 16);\n if (keydata.length !== 16) {\n var padded = new Uint8Array(16);\n padded.set(keydata, 16 - keydata.length);\n keydata = padded;\n }\n this.keyId = keydata;\n break;\n }\n }\n }\n\n // Default behavior: assign a new keyId for each uri\n if (!this.keyId || this.keyId.byteLength !== 16) {\n var _keyId = keyUriToKeyIdMap[this.uri];\n if (!_keyId) {\n var val = Object.keys(keyUriToKeyIdMap).length % Number.MAX_SAFE_INTEGER;\n _keyId = new Uint8Array(16);\n var dv = new DataView(_keyId.buffer, 12, 4); // Just set the last 4 bytes\n dv.setUint32(0, val);\n keyUriToKeyIdMap[this.uri] = _keyId;\n }\n this.keyId = _keyId;\n }\n return this;\n };\n return LevelKey;\n }();\n function createInitializationVector(segmentNumber) {\n var uint8View = new Uint8Array(16);\n for (var i = 12; i < 16; i++) {\n uint8View[i] = segmentNumber >> 8 * (15 - i) & 0xff;\n }\n return uint8View;\n }\n\n var VARIABLE_REPLACEMENT_REGEX = /\\{\\$([a-zA-Z0-9-_]+)\\}/g;\n function hasVariableReferences(str) {\n return VARIABLE_REPLACEMENT_REGEX.test(str);\n }\n function substituteVariablesInAttributes(parsed, attr, attributeNames) {\n if (parsed.variableList !== null || parsed.hasVariableRefs) {\n for (var i = attributeNames.length; i--;) {\n var name = attributeNames[i];\n var value = attr[name];\n if (value) {\n attr[name] = substituteVariables(parsed, value);\n }\n }\n }\n }\n function substituteVariables(parsed, value) {\n if (parsed.variableList !== null || parsed.hasVariableRefs) {\n var variableList = parsed.variableList;\n return value.replace(VARIABLE_REPLACEMENT_REGEX, function (variableReference) {\n var variableName = variableReference.substring(2, variableReference.length - 1);\n var variableValue = variableList == null ? void 0 : variableList[variableName];\n if (variableValue === undefined) {\n parsed.playlistParsingError || (parsed.playlistParsingError = new Error(\"Missing preceding EXT-X-DEFINE tag for Variable Reference: \\\"\" + variableName + \"\\\"\"));\n return variableReference;\n }\n return variableValue;\n });\n }\n return value;\n }\n function addVariableDefinition(parsed, attr, parentUrl) {\n var variableList = parsed.variableList;\n if (!variableList) {\n parsed.variableList = variableList = {};\n }\n var NAME;\n var VALUE;\n if ('QUERYPARAM' in attr) {\n NAME = attr.QUERYPARAM;\n try {\n var searchParams = new self.URL(parentUrl).searchParams;\n if (searchParams.has(NAME)) {\n VALUE = searchParams.get(NAME);\n } else {\n throw new Error(\"\\\"\" + NAME + \"\\\" does not match any query parameter in URI: \\\"\" + parentUrl + \"\\\"\");\n }\n } catch (error) {\n parsed.playlistParsingError || (parsed.playlistParsingError = new Error(\"EXT-X-DEFINE QUERYPARAM: \" + error.message));\n }\n } else {\n NAME = attr.NAME;\n VALUE = attr.VALUE;\n }\n if (NAME in variableList) {\n parsed.playlistParsingError || (parsed.playlistParsingError = new Error(\"EXT-X-DEFINE duplicate Variable Name declarations: \\\"\" + NAME + \"\\\"\"));\n } else {\n variableList[NAME] = VALUE || '';\n }\n }\n function importVariableDefinition(parsed, attr, sourceVariableList) {\n var IMPORT = attr.IMPORT;\n if (sourceVariableList && IMPORT in sourceVariableList) {\n var variableList = parsed.variableList;\n if (!variableList) {\n parsed.variableList = variableList = {};\n }\n variableList[IMPORT] = sourceVariableList[IMPORT];\n } else {\n parsed.playlistParsingError || (parsed.playlistParsingError = new Error(\"EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: \\\"\" + IMPORT + \"\\\"\"));\n }\n }\n\n /**\n * MediaSource helper\n */\n\n function getMediaSource(preferManagedMediaSource) {\n if (preferManagedMediaSource === void 0) {\n preferManagedMediaSource = true;\n }\n if (typeof self === 'undefined') return undefined;\n var mms = (preferManagedMediaSource || !self.MediaSource) && self.ManagedMediaSource;\n return mms || self.MediaSource || self.WebKitMediaSource;\n }\n function isManagedMediaSource(source) {\n return typeof self !== 'undefined' && source === self.ManagedMediaSource;\n }\n\n // from http://mp4ra.org/codecs.html\n // values indicate codec selection preference (lower is higher priority)\n var sampleEntryCodesISO = {\n audio: {\n a3ds: 1,\n 'ac-3': 0.95,\n 'ac-4': 1,\n alac: 0.9,\n alaw: 1,\n dra1: 1,\n 'dts+': 1,\n 'dts-': 1,\n dtsc: 1,\n dtse: 1,\n dtsh: 1,\n 'ec-3': 0.9,\n enca: 1,\n fLaC: 0.9,\n // MP4-RA listed codec entry for FLAC\n flac: 0.9,\n // legacy browser codec name for FLAC\n FLAC: 0.9,\n // some manifests may list \"FLAC\" with Apple's tools\n g719: 1,\n g726: 1,\n m4ae: 1,\n mha1: 1,\n mha2: 1,\n mhm1: 1,\n mhm2: 1,\n mlpa: 1,\n mp4a: 1,\n 'raw ': 1,\n Opus: 1,\n opus: 1,\n // browsers expect this to be lowercase despite MP4RA says 'Opus'\n samr: 1,\n sawb: 1,\n sawp: 1,\n sevc: 1,\n sqcp: 1,\n ssmv: 1,\n twos: 1,\n ulaw: 1\n },\n video: {\n avc1: 1,\n avc2: 1,\n avc3: 1,\n avc4: 1,\n avcp: 1,\n av01: 0.8,\n drac: 1,\n dva1: 1,\n dvav: 1,\n dvh1: 0.7,\n dvhe: 0.7,\n encv: 1,\n hev1: 0.75,\n hvc1: 0.75,\n mjp2: 1,\n mp4v: 1,\n mvc1: 1,\n mvc2: 1,\n mvc3: 1,\n mvc4: 1,\n resv: 1,\n rv60: 1,\n s263: 1,\n svc1: 1,\n svc2: 1,\n 'vc-1': 1,\n vp08: 1,\n vp09: 0.9\n },\n text: {\n stpp: 1,\n wvtt: 1\n }\n };\n function isCodecType(codec, type) {\n var typeCodes = sampleEntryCodesISO[type];\n return !!typeCodes && !!typeCodes[codec.slice(0, 4)];\n }\n function areCodecsMediaSourceSupported(codecs, type, preferManagedMediaSource) {\n if (preferManagedMediaSource === void 0) {\n preferManagedMediaSource = true;\n }\n return !codecs.split(',').some(function (codec) {\n return !isCodecMediaSourceSupported(codec, type, preferManagedMediaSource);\n });\n }\n function isCodecMediaSourceSupported(codec, type, preferManagedMediaSource) {\n var _MediaSource$isTypeSu;\n if (preferManagedMediaSource === void 0) {\n preferManagedMediaSource = true;\n }\n var MediaSource = getMediaSource(preferManagedMediaSource);\n return (_MediaSource$isTypeSu = MediaSource == null ? void 0 : MediaSource.isTypeSupported(mimeTypeForCodec(codec, type))) != null ? _MediaSource$isTypeSu : false;\n }\n function mimeTypeForCodec(codec, type) {\n return type + \"/mp4;codecs=\\\"\" + codec + \"\\\"\";\n }\n function videoCodecPreferenceValue(videoCodec) {\n if (videoCodec) {\n var fourCC = videoCodec.substring(0, 4);\n return sampleEntryCodesISO.video[fourCC];\n }\n return 2;\n }\n function codecsSetSelectionPreferenceValue(codecSet) {\n return codecSet.split(',').reduce(function (num, fourCC) {\n var preferenceValue = sampleEntryCodesISO.video[fourCC];\n if (preferenceValue) {\n return (preferenceValue * 2 + num) / (num ? 3 : 2);\n }\n return (sampleEntryCodesISO.audio[fourCC] + num) / (num ? 2 : 1);\n }, 0);\n }\n var CODEC_COMPATIBLE_NAMES = {};\n function getCodecCompatibleNameLower(lowerCaseCodec, preferManagedMediaSource) {\n if (preferManagedMediaSource === void 0) {\n preferManagedMediaSource = true;\n }\n if (CODEC_COMPATIBLE_NAMES[lowerCaseCodec]) {\n return CODEC_COMPATIBLE_NAMES[lowerCaseCodec];\n }\n\n // Idealy fLaC and Opus would be first (spec-compliant) but\n // some browsers will report that fLaC is supported then fail.\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=1422728\n var codecsToCheck = {\n flac: ['flac', 'fLaC', 'FLAC'],\n opus: ['opus', 'Opus']\n }[lowerCaseCodec];\n for (var i = 0; i < codecsToCheck.length; i++) {\n if (isCodecMediaSourceSupported(codecsToCheck[i], 'audio', preferManagedMediaSource)) {\n CODEC_COMPATIBLE_NAMES[lowerCaseCodec] = codecsToCheck[i];\n return codecsToCheck[i];\n }\n }\n return lowerCaseCodec;\n }\n var AUDIO_CODEC_REGEXP = /flac|opus/i;\n function getCodecCompatibleName(codec, preferManagedMediaSource) {\n if (preferManagedMediaSource === void 0) {\n preferManagedMediaSource = true;\n }\n return codec.replace(AUDIO_CODEC_REGEXP, function (m) {\n return getCodecCompatibleNameLower(m.toLowerCase(), preferManagedMediaSource);\n });\n }\n function pickMostCompleteCodecName(parsedCodec, levelCodec) {\n // Parsing of mp4a codecs strings in mp4-tools from media is incomplete as of d8c6c7a\n // so use level codec is parsed codec is unavailable or incomplete\n if (parsedCodec && parsedCodec !== 'mp4a') {\n return parsedCodec;\n }\n return levelCodec ? levelCodec.split(',')[0] : levelCodec;\n }\n function convertAVC1ToAVCOTI(codec) {\n // Convert avc1 codec string from RFC-4281 to RFC-6381 for MediaSource.isTypeSupported\n var avcdata = codec.split('.');\n if (avcdata.length > 2) {\n var result = avcdata.shift() + '.';\n result += parseInt(avcdata.shift()).toString(16);\n result += ('000' + parseInt(avcdata.shift()).toString(16)).slice(-4);\n return result;\n }\n return codec;\n }\n\n var MASTER_PLAYLIST_REGEX = /#EXT-X-STREAM-INF:([^\\r\\n]*)(?:[\\r\\n](?:#[^\\r\\n]*)?)*([^\\r\\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\\r\\n]*)[\\r\\n]+/g;\n var MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g;\n var IS_MEDIA_PLAYLIST = /^#EXT(?:INF|-X-TARGETDURATION):/m; // Handle empty Media Playlist (first EXTINF not signaled, but TARGETDURATION present)\n\n var LEVEL_PLAYLIST_REGEX_FAST = new RegExp([/#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?/.source,\n // duration (#EXTINF:,), group 1 => duration, group 2 => title\n /(?!#) *(\\S[^\\r\\n]*)/.source,\n // segment URI, group 3 => the URI (note newline is not eaten)\n /#EXT-X-BYTERANGE:*(.+)/.source,\n // next segment's byterange, group 4 => range spec (x@y)\n /#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,\n // next segment's program date/time group 5 => the datetime spec\n /#.*/.source // All other non-segment oriented tags will match with all groups empty\n ].join('|'), 'g');\n var LEVEL_PLAYLIST_REGEX_SLOW = new RegExp([/#(EXTM3U)/.source, /#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\\r?\\n?/.source].join('|'));\n var M3U8Parser = /*#__PURE__*/function () {\n function M3U8Parser() {}\n M3U8Parser.findGroup = function findGroup(groups, mediaGroupId) {\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n if (group.id === mediaGroupId) {\n return group;\n }\n }\n };\n M3U8Parser.resolve = function resolve(url, baseUrl) {\n return urlToolkitExports.buildAbsoluteURL(baseUrl, url, {\n alwaysNormalize: true\n });\n };\n M3U8Parser.isMediaPlaylist = function isMediaPlaylist(str) {\n return IS_MEDIA_PLAYLIST.test(str);\n };\n M3U8Parser.parseMasterPlaylist = function parseMasterPlaylist(string, baseurl) {\n var hasVariableRefs = hasVariableReferences(string) ;\n var parsed = {\n contentSteering: null,\n levels: [],\n playlistParsingError: null,\n sessionData: null,\n sessionKeys: null,\n startTimeOffset: null,\n variableList: null,\n hasVariableRefs: hasVariableRefs\n };\n var levelsWithKnownCodecs = [];\n MASTER_PLAYLIST_REGEX.lastIndex = 0;\n var result;\n while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) {\n if (result[1]) {\n var _level$unknownCodecs;\n // '#EXT-X-STREAM-INF' is found, parse level tag in group 1\n var attrs = new AttrList(result[1]);\n {\n substituteVariablesInAttributes(parsed, attrs, ['CODECS', 'SUPPLEMENTAL-CODECS', 'ALLOWED-CPC', 'PATHWAY-ID', 'STABLE-VARIANT-ID', 'AUDIO', 'VIDEO', 'SUBTITLES', 'CLOSED-CAPTIONS', 'NAME']);\n }\n var uri = substituteVariables(parsed, result[2]) ;\n var level = {\n attrs: attrs,\n bitrate: attrs.decimalInteger('BANDWIDTH') || attrs.decimalInteger('AVERAGE-BANDWIDTH'),\n name: attrs.NAME,\n url: M3U8Parser.resolve(uri, baseurl)\n };\n var resolution = attrs.decimalResolution('RESOLUTION');\n if (resolution) {\n level.width = resolution.width;\n level.height = resolution.height;\n }\n setCodecs(attrs.CODECS, level);\n if (!((_level$unknownCodecs = level.unknownCodecs) != null && _level$unknownCodecs.length)) {\n levelsWithKnownCodecs.push(level);\n }\n parsed.levels.push(level);\n } else if (result[3]) {\n var tag = result[3];\n var attributes = result[4];\n switch (tag) {\n case 'SESSION-DATA':\n {\n // #EXT-X-SESSION-DATA\n var sessionAttrs = new AttrList(attributes);\n {\n substituteVariablesInAttributes(parsed, sessionAttrs, ['DATA-ID', 'LANGUAGE', 'VALUE', 'URI']);\n }\n var dataId = sessionAttrs['DATA-ID'];\n if (dataId) {\n if (parsed.sessionData === null) {\n parsed.sessionData = {};\n }\n parsed.sessionData[dataId] = sessionAttrs;\n }\n break;\n }\n case 'SESSION-KEY':\n {\n // #EXT-X-SESSION-KEY\n var sessionKey = parseKey(attributes, baseurl, parsed);\n if (sessionKey.encrypted && sessionKey.isSupported()) {\n if (parsed.sessionKeys === null) {\n parsed.sessionKeys = [];\n }\n parsed.sessionKeys.push(sessionKey);\n } else {\n logger.warn(\"[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: \\\"\" + attributes + \"\\\"\");\n }\n break;\n }\n case 'DEFINE':\n {\n // #EXT-X-DEFINE\n {\n var variableAttributes = new AttrList(attributes);\n substituteVariablesInAttributes(parsed, variableAttributes, ['NAME', 'VALUE', 'QUERYPARAM']);\n addVariableDefinition(parsed, variableAttributes, baseurl);\n }\n break;\n }\n case 'CONTENT-STEERING':\n {\n // #EXT-X-CONTENT-STEERING\n var contentSteeringAttributes = new AttrList(attributes);\n {\n substituteVariablesInAttributes(parsed, contentSteeringAttributes, ['SERVER-URI', 'PATHWAY-ID']);\n }\n parsed.contentSteering = {\n uri: M3U8Parser.resolve(contentSteeringAttributes['SERVER-URI'], baseurl),\n pathwayId: contentSteeringAttributes['PATHWAY-ID'] || '.'\n };\n break;\n }\n case 'START':\n {\n // #EXT-X-START\n parsed.startTimeOffset = parseStartTimeOffset(attributes);\n break;\n }\n }\n }\n }\n // Filter out levels with unknown codecs if it does not remove all levels\n var stripUnknownCodecLevels = levelsWithKnownCodecs.length > 0 && levelsWithKnownCodecs.length < parsed.levels.length;\n parsed.levels = stripUnknownCodecLevels ? levelsWithKnownCodecs : parsed.levels;\n if (parsed.levels.length === 0) {\n parsed.playlistParsingError = new Error('no levels found in manifest');\n }\n return parsed;\n };\n M3U8Parser.parseMasterPlaylistMedia = function parseMasterPlaylistMedia(string, baseurl, parsed) {\n var result;\n var results = {};\n var levels = parsed.levels;\n var groupsByType = {\n AUDIO: levels.map(function (level) {\n return {\n id: level.attrs.AUDIO,\n audioCodec: level.audioCodec\n };\n }),\n SUBTITLES: levels.map(function (level) {\n return {\n id: level.attrs.SUBTITLES,\n textCodec: level.textCodec\n };\n }),\n 'CLOSED-CAPTIONS': []\n };\n var id = 0;\n MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0;\n while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) {\n var attrs = new AttrList(result[1]);\n var type = attrs.TYPE;\n if (type) {\n var groups = groupsByType[type];\n var medias = results[type] || [];\n results[type] = medias;\n {\n substituteVariablesInAttributes(parsed, attrs, ['URI', 'GROUP-ID', 'LANGUAGE', 'ASSOC-LANGUAGE', 'STABLE-RENDITION-ID', 'NAME', 'INSTREAM-ID', 'CHARACTERISTICS', 'CHANNELS']);\n }\n var lang = attrs.LANGUAGE;\n var assocLang = attrs['ASSOC-LANGUAGE'];\n var channels = attrs.CHANNELS;\n var characteristics = attrs.CHARACTERISTICS;\n var instreamId = attrs['INSTREAM-ID'];\n var media = {\n attrs: attrs,\n bitrate: 0,\n id: id++,\n groupId: attrs['GROUP-ID'] || '',\n name: attrs.NAME || lang || '',\n type: type,\n default: attrs.bool('DEFAULT'),\n autoselect: attrs.bool('AUTOSELECT'),\n forced: attrs.bool('FORCED'),\n lang: lang,\n url: attrs.URI ? M3U8Parser.resolve(attrs.URI, baseurl) : ''\n };\n if (assocLang) {\n media.assocLang = assocLang;\n }\n if (channels) {\n media.channels = channels;\n }\n if (characteristics) {\n media.characteristics = characteristics;\n }\n if (instreamId) {\n media.instreamId = instreamId;\n }\n if (groups != null && groups.length) {\n // If there are audio or text groups signalled in the manifest, let's look for a matching codec string for this track\n // If we don't find the track signalled, lets use the first audio groups codec we have\n // Acting as a best guess\n var groupCodec = M3U8Parser.findGroup(groups, media.groupId) || groups[0];\n assignCodec(media, groupCodec, 'audioCodec');\n assignCodec(media, groupCodec, 'textCodec');\n }\n medias.push(media);\n }\n }\n return results;\n };\n M3U8Parser.parseLevelPlaylist = function parseLevelPlaylist(string, baseurl, id, type, levelUrlId, multivariantVariableList) {\n var level = new LevelDetails(baseurl);\n var fragments = level.fragments;\n // The most recent init segment seen (applies to all subsequent segments)\n var currentInitSegment = null;\n var currentSN = 0;\n var currentPart = 0;\n var totalduration = 0;\n var discontinuityCounter = 0;\n var prevFrag = null;\n var frag = new Fragment(type, baseurl);\n var result;\n var i;\n var levelkeys;\n var firstPdtIndex = -1;\n var createNextFrag = false;\n var nextByteRange = null;\n LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0;\n level.m3u8 = string;\n level.hasVariableRefs = hasVariableReferences(string) ;\n while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) {\n if (createNextFrag) {\n createNextFrag = false;\n frag = new Fragment(type, baseurl);\n // setup the next fragment for part loading\n frag.start = totalduration;\n frag.sn = currentSN;\n frag.cc = discontinuityCounter;\n frag.level = id;\n if (currentInitSegment) {\n frag.initSegment = currentInitSegment;\n frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n currentInitSegment.rawProgramDateTime = null;\n if (nextByteRange) {\n frag.setByteRange(nextByteRange);\n nextByteRange = null;\n }\n }\n }\n var duration = result[1];\n if (duration) {\n // INF\n frag.duration = parseFloat(duration);\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n var title = (' ' + result[2]).slice(1);\n frag.title = title || null;\n frag.tagList.push(title ? ['INF', duration, title] : ['INF', duration]);\n } else if (result[3]) {\n // url\n if (isFiniteNumber(frag.duration)) {\n frag.start = totalduration;\n if (levelkeys) {\n setFragLevelKeys(frag, levelkeys, level);\n }\n frag.sn = currentSN;\n frag.level = id;\n frag.cc = discontinuityCounter;\n fragments.push(frag);\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n var uri = (' ' + result[3]).slice(1);\n frag.relurl = substituteVariables(level, uri) ;\n assignProgramDateTime(frag, prevFrag);\n prevFrag = frag;\n totalduration += frag.duration;\n currentSN++;\n currentPart = 0;\n createNextFrag = true;\n }\n } else if (result[4]) {\n // X-BYTERANGE\n var data = (' ' + result[4]).slice(1);\n if (prevFrag) {\n frag.setByteRange(data, prevFrag);\n } else {\n frag.setByteRange(data);\n }\n } else if (result[5]) {\n // PROGRAM-DATE-TIME\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n frag.rawProgramDateTime = (' ' + result[5]).slice(1);\n frag.tagList.push(['PROGRAM-DATE-TIME', frag.rawProgramDateTime]);\n if (firstPdtIndex === -1) {\n firstPdtIndex = fragments.length;\n }\n } else {\n result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW);\n if (!result) {\n logger.warn('No matches on slow regex match for level playlist!');\n continue;\n }\n for (i = 1; i < result.length; i++) {\n if (typeof result[i] !== 'undefined') {\n break;\n }\n }\n\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n var tag = (' ' + result[i]).slice(1);\n var value1 = (' ' + result[i + 1]).slice(1);\n var value2 = result[i + 2] ? (' ' + result[i + 2]).slice(1) : '';\n switch (tag) {\n case 'PLAYLIST-TYPE':\n level.type = value1.toUpperCase();\n break;\n case 'MEDIA-SEQUENCE':\n currentSN = level.startSN = parseInt(value1);\n break;\n case 'SKIP':\n {\n var skipAttrs = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, skipAttrs, ['RECENTLY-REMOVED-DATERANGES']);\n }\n var skippedSegments = skipAttrs.decimalInteger('SKIPPED-SEGMENTS');\n if (isFiniteNumber(skippedSegments)) {\n level.skippedSegments = skippedSegments;\n // This will result in fragments[] containing undefined values, which we will fill in with `mergeDetails`\n for (var _i = skippedSegments; _i--;) {\n fragments.unshift(null);\n }\n currentSN += skippedSegments;\n }\n var recentlyRemovedDateranges = skipAttrs.enumeratedString('RECENTLY-REMOVED-DATERANGES');\n if (recentlyRemovedDateranges) {\n level.recentlyRemovedDateranges = recentlyRemovedDateranges.split('\\t');\n }\n break;\n }\n case 'TARGETDURATION':\n level.targetduration = Math.max(parseInt(value1), 1);\n break;\n case 'VERSION':\n level.version = parseInt(value1);\n break;\n case 'INDEPENDENT-SEGMENTS':\n case 'EXTM3U':\n break;\n case 'ENDLIST':\n level.live = false;\n break;\n case '#':\n if (value1 || value2) {\n frag.tagList.push(value2 ? [value1, value2] : [value1]);\n }\n break;\n case 'DISCONTINUITY':\n discontinuityCounter++;\n frag.tagList.push(['DIS']);\n break;\n case 'GAP':\n frag.gap = true;\n frag.tagList.push([tag]);\n break;\n case 'BITRATE':\n frag.tagList.push([tag, value1]);\n break;\n case 'DATERANGE':\n {\n var dateRangeAttr = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, dateRangeAttr, ['ID', 'CLASS', 'START-DATE', 'END-DATE', 'SCTE35-CMD', 'SCTE35-OUT', 'SCTE35-IN']);\n substituteVariablesInAttributes(level, dateRangeAttr, dateRangeAttr.clientAttrs);\n }\n var dateRange = new DateRange(dateRangeAttr, level.dateRanges[dateRangeAttr.ID]);\n if (dateRange.isValid || level.skippedSegments) {\n level.dateRanges[dateRange.id] = dateRange;\n } else {\n logger.warn(\"Ignoring invalid DATERANGE tag: \\\"\" + value1 + \"\\\"\");\n }\n // Add to fragment tag list for backwards compatibility (< v1.2.0)\n frag.tagList.push(['EXT-X-DATERANGE', value1]);\n break;\n }\n case 'DEFINE':\n {\n {\n var variableAttributes = new AttrList(value1);\n substituteVariablesInAttributes(level, variableAttributes, ['NAME', 'VALUE', 'IMPORT', 'QUERYPARAM']);\n if ('IMPORT' in variableAttributes) {\n importVariableDefinition(level, variableAttributes, multivariantVariableList);\n } else {\n addVariableDefinition(level, variableAttributes, baseurl);\n }\n }\n break;\n }\n case 'DISCONTINUITY-SEQUENCE':\n discontinuityCounter = parseInt(value1);\n break;\n case 'KEY':\n {\n var levelKey = parseKey(value1, baseurl, level);\n if (levelKey.isSupported()) {\n if (levelKey.method === 'NONE') {\n levelkeys = undefined;\n break;\n }\n if (!levelkeys) {\n levelkeys = {};\n }\n if (levelkeys[levelKey.keyFormat]) {\n levelkeys = _extends({}, levelkeys);\n }\n levelkeys[levelKey.keyFormat] = levelKey;\n } else {\n logger.warn(\"[Keys] Ignoring invalid EXT-X-KEY tag: \\\"\" + value1 + \"\\\"\");\n }\n break;\n }\n case 'START':\n level.startTimeOffset = parseStartTimeOffset(value1);\n break;\n case 'MAP':\n {\n var mapAttrs = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, mapAttrs, ['BYTERANGE', 'URI']);\n }\n if (frag.duration) {\n // Initial segment tag is after segment duration tag.\n // #EXTINF: 6.0\n // #EXT-X-MAP:URI=\"init.mp4\n var init = new Fragment(type, baseurl);\n setInitSegment(init, mapAttrs, id, levelkeys);\n currentInitSegment = init;\n frag.initSegment = currentInitSegment;\n if (currentInitSegment.rawProgramDateTime && !frag.rawProgramDateTime) {\n frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n }\n } else {\n // Initial segment tag is before segment duration tag\n // Handle case where EXT-X-MAP is declared after EXT-X-BYTERANGE\n var end = frag.byteRangeEndOffset;\n if (end) {\n var start = frag.byteRangeStartOffset;\n nextByteRange = end - start + \"@\" + start;\n } else {\n nextByteRange = null;\n }\n setInitSegment(frag, mapAttrs, id, levelkeys);\n currentInitSegment = frag;\n createNextFrag = true;\n }\n break;\n }\n case 'SERVER-CONTROL':\n {\n var serverControlAttrs = new AttrList(value1);\n level.canBlockReload = serverControlAttrs.bool('CAN-BLOCK-RELOAD');\n level.canSkipUntil = serverControlAttrs.optionalFloat('CAN-SKIP-UNTIL', 0);\n level.canSkipDateRanges = level.canSkipUntil > 0 && serverControlAttrs.bool('CAN-SKIP-DATERANGES');\n level.partHoldBack = serverControlAttrs.optionalFloat('PART-HOLD-BACK', 0);\n level.holdBack = serverControlAttrs.optionalFloat('HOLD-BACK', 0);\n break;\n }\n case 'PART-INF':\n {\n var partInfAttrs = new AttrList(value1);\n level.partTarget = partInfAttrs.decimalFloatingPoint('PART-TARGET');\n break;\n }\n case 'PART':\n {\n var partList = level.partList;\n if (!partList) {\n partList = level.partList = [];\n }\n var previousFragmentPart = currentPart > 0 ? partList[partList.length - 1] : undefined;\n var index = currentPart++;\n var partAttrs = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, partAttrs, ['BYTERANGE', 'URI']);\n }\n var part = new Part(partAttrs, frag, baseurl, index, previousFragmentPart);\n partList.push(part);\n frag.duration += part.duration;\n break;\n }\n case 'PRELOAD-HINT':\n {\n var preloadHintAttrs = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, preloadHintAttrs, ['URI']);\n }\n level.preloadHint = preloadHintAttrs;\n break;\n }\n case 'RENDITION-REPORT':\n {\n var renditionReportAttrs = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, renditionReportAttrs, ['URI']);\n }\n level.renditionReports = level.renditionReports || [];\n level.renditionReports.push(renditionReportAttrs);\n break;\n }\n default:\n logger.warn(\"line parsed but not handled: \" + result);\n break;\n }\n }\n }\n if (prevFrag && !prevFrag.relurl) {\n fragments.pop();\n totalduration -= prevFrag.duration;\n if (level.partList) {\n level.fragmentHint = prevFrag;\n }\n } else if (level.partList) {\n assignProgramDateTime(frag, prevFrag);\n frag.cc = discontinuityCounter;\n level.fragmentHint = frag;\n if (levelkeys) {\n setFragLevelKeys(frag, levelkeys, level);\n }\n }\n var fragmentLength = fragments.length;\n var firstFragment = fragments[0];\n var lastFragment = fragments[fragmentLength - 1];\n totalduration += level.skippedSegments * level.targetduration;\n if (totalduration > 0 && fragmentLength && lastFragment) {\n level.averagetargetduration = totalduration / fragmentLength;\n var lastSn = lastFragment.sn;\n level.endSN = lastSn !== 'initSegment' ? lastSn : 0;\n if (!level.live) {\n lastFragment.endList = true;\n }\n if (firstFragment) {\n level.startCC = firstFragment.cc;\n }\n } else {\n level.endSN = 0;\n level.startCC = 0;\n }\n if (level.fragmentHint) {\n totalduration += level.fragmentHint.duration;\n }\n level.totalduration = totalduration;\n level.endCC = discontinuityCounter;\n\n /**\n * Backfill any missing PDT values\n * \"If the first EXT-X-PROGRAM-DATE-TIME tag in a Playlist appears after\n * one or more Media Segment URIs, the client SHOULD extrapolate\n * backward from that tag (using EXTINF durations and/or media\n * timestamps) to associate dates with those segments.\"\n * We have already extrapolated forward, but all fragments up to the first instance of PDT do not have their PDTs\n * computed.\n */\n if (firstPdtIndex > 0) {\n backfillProgramDateTimes(fragments, firstPdtIndex);\n }\n return level;\n };\n return M3U8Parser;\n }();\n function parseKey(keyTagAttributes, baseurl, parsed) {\n var _keyAttrs$METHOD, _keyAttrs$KEYFORMAT;\n // https://tools.ietf.org/html/rfc8216#section-4.3.2.4\n var keyAttrs = new AttrList(keyTagAttributes);\n {\n substituteVariablesInAttributes(parsed, keyAttrs, ['KEYFORMAT', 'KEYFORMATVERSIONS', 'URI', 'IV', 'URI']);\n }\n var decryptmethod = (_keyAttrs$METHOD = keyAttrs.METHOD) != null ? _keyAttrs$METHOD : '';\n var decrypturi = keyAttrs.URI;\n var decryptiv = keyAttrs.hexadecimalInteger('IV');\n var decryptkeyformatversions = keyAttrs.KEYFORMATVERSIONS;\n // From RFC: This attribute is OPTIONAL; its absence indicates an implicit value of \"identity\".\n var decryptkeyformat = (_keyAttrs$KEYFORMAT = keyAttrs.KEYFORMAT) != null ? _keyAttrs$KEYFORMAT : 'identity';\n if (decrypturi && keyAttrs.IV && !decryptiv) {\n logger.error(\"Invalid IV: \" + keyAttrs.IV);\n }\n // If decrypturi is a URI with a scheme, then baseurl will be ignored\n // No uri is allowed when METHOD is NONE\n var resolvedUri = decrypturi ? M3U8Parser.resolve(decrypturi, baseurl) : '';\n var keyFormatVersions = (decryptkeyformatversions ? decryptkeyformatversions : '1').split('/').map(Number).filter(Number.isFinite);\n return new LevelKey(decryptmethod, resolvedUri, decryptkeyformat, keyFormatVersions, decryptiv);\n }\n function parseStartTimeOffset(startAttributes) {\n var startAttrs = new AttrList(startAttributes);\n var startTimeOffset = startAttrs.decimalFloatingPoint('TIME-OFFSET');\n if (isFiniteNumber(startTimeOffset)) {\n return startTimeOffset;\n }\n return null;\n }\n function setCodecs(codecsAttributeValue, level) {\n var codecs = (codecsAttributeValue || '').split(/[ ,]+/).filter(function (c) {\n return c;\n });\n ['video', 'audio', 'text'].forEach(function (type) {\n var filtered = codecs.filter(function (codec) {\n return isCodecType(codec, type);\n });\n if (filtered.length) {\n // Comma separated list of all codecs for type\n level[type + \"Codec\"] = filtered.join(',');\n // Remove known codecs so that only unknownCodecs are left after iterating through each type\n codecs = codecs.filter(function (codec) {\n return filtered.indexOf(codec) === -1;\n });\n }\n });\n level.unknownCodecs = codecs;\n }\n function assignCodec(media, groupItem, codecProperty) {\n var codecValue = groupItem[codecProperty];\n if (codecValue) {\n media[codecProperty] = codecValue;\n }\n }\n function backfillProgramDateTimes(fragments, firstPdtIndex) {\n var fragPrev = fragments[firstPdtIndex];\n for (var i = firstPdtIndex; i--;) {\n var frag = fragments[i];\n // Exit on delta-playlist skipped segments\n if (!frag) {\n return;\n }\n frag.programDateTime = fragPrev.programDateTime - frag.duration * 1000;\n fragPrev = frag;\n }\n }\n function assignProgramDateTime(frag, prevFrag) {\n if (frag.rawProgramDateTime) {\n frag.programDateTime = Date.parse(frag.rawProgramDateTime);\n } else if (prevFrag != null && prevFrag.programDateTime) {\n frag.programDateTime = prevFrag.endProgramDateTime;\n }\n if (!isFiniteNumber(frag.programDateTime)) {\n frag.programDateTime = null;\n frag.rawProgramDateTime = null;\n }\n }\n function setInitSegment(frag, mapAttrs, id, levelkeys) {\n frag.relurl = mapAttrs.URI;\n if (mapAttrs.BYTERANGE) {\n frag.setByteRange(mapAttrs.BYTERANGE);\n }\n frag.level = id;\n frag.sn = 'initSegment';\n if (levelkeys) {\n frag.levelkeys = levelkeys;\n }\n frag.initSegment = null;\n }\n function setFragLevelKeys(frag, levelkeys, level) {\n frag.levelkeys = levelkeys;\n var encryptedFragments = level.encryptedFragments;\n if ((!encryptedFragments.length || encryptedFragments[encryptedFragments.length - 1].levelkeys !== levelkeys) && Object.keys(levelkeys).some(function (format) {\n return levelkeys[format].isCommonEncryption;\n })) {\n encryptedFragments.push(frag);\n }\n }\n\n var PlaylistContextType = {\n MANIFEST: \"manifest\",\n LEVEL: \"level\",\n AUDIO_TRACK: \"audioTrack\",\n SUBTITLE_TRACK: \"subtitleTrack\"\n };\n var PlaylistLevelType = {\n MAIN: \"main\",\n AUDIO: \"audio\",\n SUBTITLE: \"subtitle\"\n };\n\n function mapContextToLevelType(context) {\n var type = context.type;\n switch (type) {\n case PlaylistContextType.AUDIO_TRACK:\n return PlaylistLevelType.AUDIO;\n case PlaylistContextType.SUBTITLE_TRACK:\n return PlaylistLevelType.SUBTITLE;\n default:\n return PlaylistLevelType.MAIN;\n }\n }\n function getResponseUrl(response, context) {\n var url = response.url;\n // responseURL not supported on some browsers (it is used to detect URL redirection)\n // data-uri mode also not supported (but no need to detect redirection)\n if (url === undefined || url.indexOf('data:') === 0) {\n // fallback to initial URL\n url = context.url;\n }\n return url;\n }\n var PlaylistLoader = /*#__PURE__*/function () {\n function PlaylistLoader(hls) {\n this.hls = void 0;\n this.loaders = Object.create(null);\n this.variableList = null;\n this.hls = hls;\n this.registerListeners();\n }\n var _proto = PlaylistLoader.prototype;\n _proto.startLoad = function startLoad(startPosition) {};\n _proto.stopLoad = function stopLoad() {\n this.destroyInternalLoaders();\n };\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n hls.on(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n hls.off(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n }\n\n /**\n * Returns defaults or configured loader-type overloads (pLoader and loader config params)\n */;\n _proto.createInternalLoader = function createInternalLoader(context) {\n var config = this.hls.config;\n var PLoader = config.pLoader;\n var Loader = config.loader;\n var InternalLoader = PLoader || Loader;\n var loader = new InternalLoader(config);\n this.loaders[context.type] = loader;\n return loader;\n };\n _proto.getInternalLoader = function getInternalLoader(context) {\n return this.loaders[context.type];\n };\n _proto.resetInternalLoader = function resetInternalLoader(contextType) {\n if (this.loaders[contextType]) {\n delete this.loaders[contextType];\n }\n }\n\n /**\n * Call `destroy` on all internal loader instances mapped (one per context type)\n */;\n _proto.destroyInternalLoaders = function destroyInternalLoaders() {\n for (var contextType in this.loaders) {\n var loader = this.loaders[contextType];\n if (loader) {\n loader.destroy();\n }\n this.resetInternalLoader(contextType);\n }\n };\n _proto.destroy = function destroy() {\n this.variableList = null;\n this.unregisterListeners();\n this.destroyInternalLoaders();\n };\n _proto.onManifestLoading = function onManifestLoading(event, data) {\n var url = data.url;\n this.variableList = null;\n this.load({\n id: null,\n level: 0,\n responseType: 'text',\n type: PlaylistContextType.MANIFEST,\n url: url,\n deliveryDirectives: null\n });\n };\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n var id = data.id,\n level = data.level,\n pathwayId = data.pathwayId,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n level: level,\n pathwayId: pathwayId,\n responseType: 'text',\n type: PlaylistContextType.LEVEL,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n _proto.onAudioTrackLoading = function onAudioTrackLoading(event, data) {\n var id = data.id,\n groupId = data.groupId,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: groupId,\n level: null,\n responseType: 'text',\n type: PlaylistContextType.AUDIO_TRACK,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n _proto.onSubtitleTrackLoading = function onSubtitleTrackLoading(event, data) {\n var id = data.id,\n groupId = data.groupId,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: groupId,\n level: null,\n responseType: 'text',\n type: PlaylistContextType.SUBTITLE_TRACK,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n _proto.load = function load(context) {\n var _context$deliveryDire,\n _this = this;\n var config = this.hls.config;\n\n // logger.debug(`[playlist-loader]: Loading playlist of type ${context.type}, level: ${context.level}, id: ${context.id}`);\n\n // Check if a loader for this context already exists\n var loader = this.getInternalLoader(context);\n if (loader) {\n var loaderContext = loader.context;\n if (loaderContext && loaderContext.url === context.url && loaderContext.level === context.level) {\n // same URL can't overlap\n logger.trace('[playlist-loader]: playlist request ongoing');\n return;\n }\n logger.log(\"[playlist-loader]: aborting previous loader for type: \" + context.type);\n loader.abort();\n }\n\n // apply different configs for retries depending on\n // context (manifest, level, audio/subs playlist)\n var loadPolicy;\n if (context.type === PlaylistContextType.MANIFEST) {\n loadPolicy = config.manifestLoadPolicy.default;\n } else {\n loadPolicy = _extends({}, config.playlistLoadPolicy.default, {\n timeoutRetry: null,\n errorRetry: null\n });\n }\n loader = this.createInternalLoader(context);\n\n // Override level/track timeout for LL-HLS requests\n // (the default of 10000ms is counter productive to blocking playlist reload requests)\n if (isFiniteNumber((_context$deliveryDire = context.deliveryDirectives) == null ? void 0 : _context$deliveryDire.part)) {\n var levelDetails;\n if (context.type === PlaylistContextType.LEVEL && context.level !== null) {\n levelDetails = this.hls.levels[context.level].details;\n } else if (context.type === PlaylistContextType.AUDIO_TRACK && context.id !== null) {\n levelDetails = this.hls.audioTracks[context.id].details;\n } else if (context.type === PlaylistContextType.SUBTITLE_TRACK && context.id !== null) {\n levelDetails = this.hls.subtitleTracks[context.id].details;\n }\n if (levelDetails) {\n var partTarget = levelDetails.partTarget;\n var targetDuration = levelDetails.targetduration;\n if (partTarget && targetDuration) {\n var maxLowLatencyPlaylistRefresh = Math.max(partTarget * 3, targetDuration * 0.8) * 1000;\n loadPolicy = _extends({}, loadPolicy, {\n maxTimeToFirstByteMs: Math.min(maxLowLatencyPlaylistRefresh, loadPolicy.maxTimeToFirstByteMs),\n maxLoadTimeMs: Math.min(maxLowLatencyPlaylistRefresh, loadPolicy.maxTimeToFirstByteMs)\n });\n }\n }\n }\n var legacyRetryCompatibility = loadPolicy.errorRetry || loadPolicy.timeoutRetry || {};\n var loaderConfig = {\n loadPolicy: loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: legacyRetryCompatibility.maxNumRetry || 0,\n retryDelay: legacyRetryCompatibility.retryDelayMs || 0,\n maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0\n };\n var loaderCallbacks = {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n var loader = _this.getInternalLoader(context);\n _this.resetInternalLoader(context.type);\n var string = response.data;\n\n // Validate if it is an M3U8 at all\n if (string.indexOf('#EXTM3U') !== 0) {\n _this.handleManifestParsingError(response, context, new Error('no EXTM3U delimiter'), networkDetails || null, stats);\n return;\n }\n stats.parsing.start = performance.now();\n if (M3U8Parser.isMediaPlaylist(string)) {\n _this.handleTrackOrLevelPlaylist(response, stats, context, networkDetails || null, loader);\n } else {\n _this.handleMasterPlaylist(response, stats, context, networkDetails);\n }\n },\n onError: function onError(response, context, networkDetails, stats) {\n _this.handleNetworkError(context, networkDetails, false, response, stats);\n },\n onTimeout: function onTimeout(stats, context, networkDetails) {\n _this.handleNetworkError(context, networkDetails, true, undefined, stats);\n }\n };\n\n // logger.debug(`[playlist-loader]: Calling internal loader delegate for URL: ${context.url}`);\n\n loader.load(context, loaderConfig, loaderCallbacks);\n };\n _proto.handleMasterPlaylist = function handleMasterPlaylist(response, stats, context, networkDetails) {\n var hls = this.hls;\n var string = response.data;\n var url = getResponseUrl(response, context);\n var parsedResult = M3U8Parser.parseMasterPlaylist(string, url);\n if (parsedResult.playlistParsingError) {\n this.handleManifestParsingError(response, context, parsedResult.playlistParsingError, networkDetails, stats);\n return;\n }\n var contentSteering = parsedResult.contentSteering,\n levels = parsedResult.levels,\n sessionData = parsedResult.sessionData,\n sessionKeys = parsedResult.sessionKeys,\n startTimeOffset = parsedResult.startTimeOffset,\n variableList = parsedResult.variableList;\n this.variableList = variableList;\n var _M3U8Parser$parseMast = M3U8Parser.parseMasterPlaylistMedia(string, url, parsedResult),\n _M3U8Parser$parseMast2 = _M3U8Parser$parseMast.AUDIO,\n audioTracks = _M3U8Parser$parseMast2 === void 0 ? [] : _M3U8Parser$parseMast2,\n subtitles = _M3U8Parser$parseMast.SUBTITLES,\n captions = _M3U8Parser$parseMast['CLOSED-CAPTIONS'];\n if (audioTracks.length) {\n // check if we have found an audio track embedded in main playlist (audio track without URI attribute)\n var embeddedAudioFound = audioTracks.some(function (audioTrack) {\n return !audioTrack.url;\n });\n\n // if no embedded audio track defined, but audio codec signaled in quality level,\n // we need to signal this main audio track this could happen with playlists with\n // alt audio rendition in which quality levels (main)\n // contains both audio+video. but with mixed audio track not signaled\n if (!embeddedAudioFound && levels[0].audioCodec && !levels[0].attrs.AUDIO) {\n logger.log('[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one');\n audioTracks.unshift({\n type: 'main',\n name: 'main',\n groupId: 'main',\n default: false,\n autoselect: false,\n forced: false,\n id: -1,\n attrs: new AttrList({}),\n bitrate: 0,\n url: ''\n });\n }\n }\n hls.trigger(Events.MANIFEST_LOADED, {\n levels: levels,\n audioTracks: audioTracks,\n subtitles: subtitles,\n captions: captions,\n contentSteering: contentSteering,\n url: url,\n stats: stats,\n networkDetails: networkDetails,\n sessionData: sessionData,\n sessionKeys: sessionKeys,\n startTimeOffset: startTimeOffset,\n variableList: variableList\n });\n };\n _proto.handleTrackOrLevelPlaylist = function handleTrackOrLevelPlaylist(response, stats, context, networkDetails, loader) {\n var hls = this.hls;\n var id = context.id,\n level = context.level,\n type = context.type;\n var url = getResponseUrl(response, context);\n var levelUrlId = 0;\n var levelId = isFiniteNumber(level) ? level : isFiniteNumber(id) ? id : 0;\n var levelType = mapContextToLevelType(context);\n var levelDetails = M3U8Parser.parseLevelPlaylist(response.data, url, levelId, levelType, levelUrlId, this.variableList);\n\n // We have done our first request (Manifest-type) and receive\n // not a master playlist but a chunk-list (track/level)\n // We fire the manifest-loaded event anyway with the parsed level-details\n // by creating a single-level structure for it.\n if (type === PlaylistContextType.MANIFEST) {\n var singleLevel = {\n attrs: new AttrList({}),\n bitrate: 0,\n details: levelDetails,\n name: '',\n url: url\n };\n hls.trigger(Events.MANIFEST_LOADED, {\n levels: [singleLevel],\n audioTracks: [],\n url: url,\n stats: stats,\n networkDetails: networkDetails,\n sessionData: null,\n sessionKeys: null,\n contentSteering: null,\n startTimeOffset: null,\n variableList: null\n });\n }\n\n // save parsing time\n stats.parsing.end = performance.now();\n\n // extend the context with the new levelDetails property\n context.levelDetails = levelDetails;\n this.handlePlaylistLoaded(levelDetails, response, stats, context, networkDetails, loader);\n };\n _proto.handleManifestParsingError = function handleManifestParsingError(response, context, error, networkDetails, stats) {\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.MANIFEST_PARSING_ERROR,\n fatal: context.type === PlaylistContextType.MANIFEST,\n url: response.url,\n err: error,\n error: error,\n reason: error.message,\n response: response,\n context: context,\n networkDetails: networkDetails,\n stats: stats\n });\n };\n _proto.handleNetworkError = function handleNetworkError(context, networkDetails, timeout, response, stats) {\n if (timeout === void 0) {\n timeout = false;\n }\n var message = \"A network \" + (timeout ? 'timeout' : 'error' + (response ? ' (status ' + response.code + ')' : '')) + \" occurred while loading \" + context.type;\n if (context.type === PlaylistContextType.LEVEL) {\n message += \": \" + context.level + \" id: \" + context.id;\n } else if (context.type === PlaylistContextType.AUDIO_TRACK || context.type === PlaylistContextType.SUBTITLE_TRACK) {\n message += \" id: \" + context.id + \" group-id: \\\"\" + context.groupId + \"\\\"\";\n }\n var error = new Error(message);\n logger.warn(\"[playlist-loader]: \" + message);\n var details = ErrorDetails.UNKNOWN;\n var fatal = false;\n var loader = this.getInternalLoader(context);\n switch (context.type) {\n case PlaylistContextType.MANIFEST:\n details = timeout ? ErrorDetails.MANIFEST_LOAD_TIMEOUT : ErrorDetails.MANIFEST_LOAD_ERROR;\n fatal = true;\n break;\n case PlaylistContextType.LEVEL:\n details = timeout ? ErrorDetails.LEVEL_LOAD_TIMEOUT : ErrorDetails.LEVEL_LOAD_ERROR;\n fatal = false;\n break;\n case PlaylistContextType.AUDIO_TRACK:\n details = timeout ? ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT : ErrorDetails.AUDIO_TRACK_LOAD_ERROR;\n fatal = false;\n break;\n case PlaylistContextType.SUBTITLE_TRACK:\n details = timeout ? ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT : ErrorDetails.SUBTITLE_LOAD_ERROR;\n fatal = false;\n break;\n }\n if (loader) {\n this.resetInternalLoader(context.type);\n }\n var errorData = {\n type: ErrorTypes.NETWORK_ERROR,\n details: details,\n fatal: fatal,\n url: context.url,\n loader: loader,\n context: context,\n error: error,\n networkDetails: networkDetails,\n stats: stats\n };\n if (response) {\n var url = (networkDetails == null ? void 0 : networkDetails.url) || context.url;\n errorData.response = _objectSpread2({\n url: url,\n data: undefined\n }, response);\n }\n this.hls.trigger(Events.ERROR, errorData);\n };\n _proto.handlePlaylistLoaded = function handlePlaylistLoaded(levelDetails, response, stats, context, networkDetails, loader) {\n var hls = this.hls;\n var type = context.type,\n level = context.level,\n id = context.id,\n groupId = context.groupId,\n deliveryDirectives = context.deliveryDirectives;\n var url = getResponseUrl(response, context);\n var parent = mapContextToLevelType(context);\n var levelIndex = typeof context.level === 'number' && parent === PlaylistLevelType.MAIN ? level : undefined;\n if (!levelDetails.fragments.length) {\n var _error = new Error('No Segments found in Playlist');\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.LEVEL_EMPTY_ERROR,\n fatal: false,\n url: url,\n error: _error,\n reason: _error.message,\n response: response,\n context: context,\n level: levelIndex,\n parent: parent,\n networkDetails: networkDetails,\n stats: stats\n });\n return;\n }\n if (!levelDetails.targetduration) {\n levelDetails.playlistParsingError = new Error('Missing Target Duration');\n }\n var error = levelDetails.playlistParsingError;\n if (error) {\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.LEVEL_PARSING_ERROR,\n fatal: false,\n url: url,\n error: error,\n reason: error.message,\n response: response,\n context: context,\n level: levelIndex,\n parent: parent,\n networkDetails: networkDetails,\n stats: stats\n });\n return;\n }\n if (levelDetails.live && loader) {\n if (loader.getCacheAge) {\n levelDetails.ageHeader = loader.getCacheAge() || 0;\n }\n if (!loader.getCacheAge || isNaN(levelDetails.ageHeader)) {\n levelDetails.ageHeader = 0;\n }\n }\n switch (type) {\n case PlaylistContextType.MANIFEST:\n case PlaylistContextType.LEVEL:\n hls.trigger(Events.LEVEL_LOADED, {\n details: levelDetails,\n level: levelIndex || 0,\n id: id || 0,\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n case PlaylistContextType.AUDIO_TRACK:\n hls.trigger(Events.AUDIO_TRACK_LOADED, {\n details: levelDetails,\n id: id || 0,\n groupId: groupId || '',\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n case PlaylistContextType.SUBTITLE_TRACK:\n hls.trigger(Events.SUBTITLE_TRACK_LOADED, {\n details: levelDetails,\n id: id || 0,\n groupId: groupId || '',\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n }\n };\n return PlaylistLoader;\n }();\n\n function sendAddTrackEvent(track, videoEl) {\n var event;\n try {\n event = new Event('addtrack');\n } catch (err) {\n // for IE11\n event = document.createEvent('Event');\n event.initEvent('addtrack', false, false);\n }\n event.track = track;\n videoEl.dispatchEvent(event);\n }\n function addCueToTrack(track, cue) {\n // Sometimes there are cue overlaps on segmented vtts so the same\n // cue can appear more than once in different vtt files.\n // This avoid showing duplicated cues with same timecode and text.\n var mode = track.mode;\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n if (track.cues && !track.cues.getCueById(cue.id)) {\n try {\n track.addCue(cue);\n if (!track.cues.getCueById(cue.id)) {\n throw new Error(\"addCue is failed for: \" + cue);\n }\n } catch (err) {\n logger.debug(\"[texttrack-utils]: \" + err);\n try {\n var textTrackCue = new self.TextTrackCue(cue.startTime, cue.endTime, cue.text);\n textTrackCue.id = cue.id;\n track.addCue(textTrackCue);\n } catch (err2) {\n logger.debug(\"[texttrack-utils]: Legacy TextTrackCue fallback failed: \" + err2);\n }\n }\n }\n if (mode === 'disabled') {\n track.mode = mode;\n }\n }\n function clearCurrentCues(track) {\n // When track.mode is disabled, track.cues will be null.\n // To guarantee the removal of cues, we need to temporarily\n // change the mode to hidden\n var mode = track.mode;\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n if (track.cues) {\n for (var i = track.cues.length; i--;) {\n track.removeCue(track.cues[i]);\n }\n }\n if (mode === 'disabled') {\n track.mode = mode;\n }\n }\n function removeCuesInRange(track, start, end, predicate) {\n var mode = track.mode;\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n if (track.cues && track.cues.length > 0) {\n var cues = getCuesInRange(track.cues, start, end);\n for (var i = 0; i < cues.length; i++) {\n if (!predicate || predicate(cues[i])) {\n track.removeCue(cues[i]);\n }\n }\n }\n if (mode === 'disabled') {\n track.mode = mode;\n }\n }\n\n // Find first cue starting after given time.\n // Modified version of binary search O(log(n)).\n function getFirstCueIndexAfterTime(cues, time) {\n // If first cue starts after time, start there\n if (time < cues[0].startTime) {\n return 0;\n }\n // If the last cue ends before time there is no overlap\n var len = cues.length - 1;\n if (time > cues[len].endTime) {\n return -1;\n }\n var left = 0;\n var right = len;\n while (left <= right) {\n var mid = Math.floor((right + left) / 2);\n if (time < cues[mid].startTime) {\n right = mid - 1;\n } else if (time > cues[mid].startTime && left < len) {\n left = mid + 1;\n } else {\n // If it's not lower or higher, it must be equal.\n return mid;\n }\n }\n // At this point, left and right have swapped.\n // No direct match was found, left or right element must be the closest. Check which one has the smallest diff.\n return cues[left].startTime - time < time - cues[right].startTime ? left : right;\n }\n function getCuesInRange(cues, start, end) {\n var cuesFound = [];\n var firstCueInRange = getFirstCueIndexAfterTime(cues, start);\n if (firstCueInRange > -1) {\n for (var i = firstCueInRange, len = cues.length; i < len; i++) {\n var _cue = cues[i];\n if (_cue.startTime >= start && _cue.endTime <= end) {\n cuesFound.push(_cue);\n } else if (_cue.startTime > end) {\n return cuesFound;\n }\n }\n }\n return cuesFound;\n }\n function filterSubtitleTracks(textTrackList) {\n var tracks = [];\n for (var i = 0; i < textTrackList.length; i++) {\n var track = textTrackList[i];\n // Edge adds a track without a label; we don't want to use it\n if ((track.kind === 'subtitles' || track.kind === 'captions') && track.label) {\n tracks.push(textTrackList[i]);\n }\n }\n return tracks;\n }\n\n var MetadataSchema = {\n audioId3: \"org.id3\",\n dateRange: \"com.apple.quicktime.HLS\",\n emsg: \"https://aomedia.org/emsg/ID3\"\n };\n\n var MIN_CUE_DURATION = 0.25;\n function getCueClass() {\n if (typeof self === 'undefined') return undefined;\n return self.VTTCue || self.TextTrackCue;\n }\n function createCueWithDataFields(Cue, startTime, endTime, data, type) {\n var cue = new Cue(startTime, endTime, '');\n try {\n cue.value = data;\n if (type) {\n cue.type = type;\n }\n } catch (e) {\n cue = new Cue(startTime, endTime, JSON.stringify(type ? _objectSpread2({\n type: type\n }, data) : data));\n }\n return cue;\n }\n\n // VTTCue latest draft allows an infinite duration, fallback\n // to MAX_VALUE if necessary\n var MAX_CUE_ENDTIME = function () {\n var Cue = getCueClass();\n try {\n Cue && new Cue(0, Number.POSITIVE_INFINITY, '');\n } catch (e) {\n return Number.MAX_VALUE;\n }\n return Number.POSITIVE_INFINITY;\n }();\n function dateRangeDateToTimelineSeconds(date, offset) {\n return date.getTime() / 1000 - offset;\n }\n function hexToArrayBuffer(str) {\n return Uint8Array.from(str.replace(/^0x/, '').replace(/([\\da-fA-F]{2}) ?/g, '0x$1 ').replace(/ +$/, '').split(' ')).buffer;\n }\n var ID3TrackController = /*#__PURE__*/function () {\n function ID3TrackController(hls) {\n this.hls = void 0;\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {};\n this.hls = hls;\n this._registerListeners();\n }\n var _proto = ID3TrackController.prototype;\n _proto.destroy = function destroy() {\n this._unregisterListeners();\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {};\n // @ts-ignore\n this.hls = null;\n };\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n };\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n }\n\n // Add ID3 metatadata text track.\n ;\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n };\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (!this.id3Track) {\n return;\n }\n clearCurrentCues(this.id3Track);\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {};\n };\n _proto.onManifestLoading = function onManifestLoading() {\n this.dateRangeCuesAppended = {};\n };\n _proto.createTrack = function createTrack(media) {\n var track = this.getID3Track(media.textTracks);\n track.mode = 'hidden';\n return track;\n };\n _proto.getID3Track = function getID3Track(textTracks) {\n if (!this.media) {\n return;\n }\n for (var i = 0; i < textTracks.length; i++) {\n var textTrack = textTracks[i];\n if (textTrack.kind === 'metadata' && textTrack.label === 'id3') {\n // send 'addtrack' when reusing the textTrack for metadata,\n // same as what we do for captions\n sendAddTrackEvent(textTrack, this.media);\n return textTrack;\n }\n }\n return this.media.addTextTrack('metadata', 'id3');\n };\n _proto.onFragParsingMetadata = function onFragParsingMetadata(event, data) {\n if (!this.media) {\n return;\n }\n var _this$hls$config = this.hls.config,\n enableEmsgMetadataCues = _this$hls$config.enableEmsgMetadataCues,\n enableID3MetadataCues = _this$hls$config.enableID3MetadataCues;\n if (!enableEmsgMetadataCues && !enableID3MetadataCues) {\n return;\n }\n var samples = data.samples;\n\n // create track dynamically\n if (!this.id3Track) {\n this.id3Track = this.createTrack(this.media);\n }\n var Cue = getCueClass();\n if (!Cue) {\n return;\n }\n for (var i = 0; i < samples.length; i++) {\n var type = samples[i].type;\n if (type === MetadataSchema.emsg && !enableEmsgMetadataCues || !enableID3MetadataCues) {\n continue;\n }\n var frames = getID3Frames(samples[i].data);\n if (frames) {\n var startTime = samples[i].pts;\n var endTime = startTime + samples[i].duration;\n if (endTime > MAX_CUE_ENDTIME) {\n endTime = MAX_CUE_ENDTIME;\n }\n var timeDiff = endTime - startTime;\n if (timeDiff <= 0) {\n endTime = startTime + MIN_CUE_DURATION;\n }\n for (var j = 0; j < frames.length; j++) {\n var frame = frames[j];\n // Safari doesn't put the timestamp frame in the TextTrack\n if (!isTimeStampFrame(frame)) {\n // add a bounds to any unbounded cues\n this.updateId3CueEnds(startTime, type);\n var cue = createCueWithDataFields(Cue, startTime, endTime, frame, type);\n if (cue) {\n this.id3Track.addCue(cue);\n }\n }\n }\n }\n }\n };\n _proto.updateId3CueEnds = function updateId3CueEnds(startTime, type) {\n var _this$id3Track;\n var cues = (_this$id3Track = this.id3Track) == null ? void 0 : _this$id3Track.cues;\n if (cues) {\n for (var i = cues.length; i--;) {\n var cue = cues[i];\n if (cue.type === type && cue.startTime < startTime && cue.endTime === MAX_CUE_ENDTIME) {\n cue.endTime = startTime;\n }\n }\n }\n };\n _proto.onBufferFlushing = function onBufferFlushing(event, _ref) {\n var startOffset = _ref.startOffset,\n endOffset = _ref.endOffset,\n type = _ref.type;\n var id3Track = this.id3Track,\n hls = this.hls;\n if (!hls) {\n return;\n }\n var _hls$config = hls.config,\n enableEmsgMetadataCues = _hls$config.enableEmsgMetadataCues,\n enableID3MetadataCues = _hls$config.enableID3MetadataCues;\n if (id3Track && (enableEmsgMetadataCues || enableID3MetadataCues)) {\n var predicate;\n if (type === 'audio') {\n predicate = function predicate(cue) {\n return cue.type === MetadataSchema.audioId3 && enableID3MetadataCues;\n };\n } else if (type === 'video') {\n predicate = function predicate(cue) {\n return cue.type === MetadataSchema.emsg && enableEmsgMetadataCues;\n };\n } else {\n predicate = function predicate(cue) {\n return cue.type === MetadataSchema.audioId3 && enableID3MetadataCues || cue.type === MetadataSchema.emsg && enableEmsgMetadataCues;\n };\n }\n removeCuesInRange(id3Track, startOffset, endOffset, predicate);\n }\n };\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref2) {\n var _this = this;\n var details = _ref2.details;\n if (!this.media || !details.hasProgramDateTime || !this.hls.config.enableDateRangeMetadataCues) {\n return;\n }\n var dateRangeCuesAppended = this.dateRangeCuesAppended,\n id3Track = this.id3Track;\n var dateRanges = details.dateRanges;\n var ids = Object.keys(dateRanges);\n // Remove cues from track not found in details.dateRanges\n if (id3Track) {\n var idsToRemove = Object.keys(dateRangeCuesAppended).filter(function (id) {\n return !ids.includes(id);\n });\n var _loop = function _loop() {\n var id = idsToRemove[i];\n Object.keys(dateRangeCuesAppended[id].cues).forEach(function (key) {\n id3Track.removeCue(dateRangeCuesAppended[id].cues[key]);\n });\n delete dateRangeCuesAppended[id];\n };\n for (var i = idsToRemove.length; i--;) {\n _loop();\n }\n }\n // Exit if the playlist does not have Date Ranges or does not have Program Date Time\n var lastFragment = details.fragments[details.fragments.length - 1];\n if (ids.length === 0 || !isFiniteNumber(lastFragment == null ? void 0 : lastFragment.programDateTime)) {\n return;\n }\n if (!this.id3Track) {\n this.id3Track = this.createTrack(this.media);\n }\n var dateTimeOffset = lastFragment.programDateTime / 1000 - lastFragment.start;\n var Cue = getCueClass();\n var _loop2 = function _loop2() {\n var id = ids[_i];\n var dateRange = dateRanges[id];\n var startTime = dateRangeDateToTimelineSeconds(dateRange.startDate, dateTimeOffset);\n\n // Process DateRanges to determine end-time (known DURATION, END-DATE, or END-ON-NEXT)\n var appendedDateRangeCues = dateRangeCuesAppended[id];\n var cues = (appendedDateRangeCues == null ? void 0 : appendedDateRangeCues.cues) || {};\n var durationKnown = (appendedDateRangeCues == null ? void 0 : appendedDateRangeCues.durationKnown) || false;\n var endTime = MAX_CUE_ENDTIME;\n var endDate = dateRange.endDate;\n if (endDate) {\n endTime = dateRangeDateToTimelineSeconds(endDate, dateTimeOffset);\n durationKnown = true;\n } else if (dateRange.endOnNext && !durationKnown) {\n var nextDateRangeWithSameClass = ids.reduce(function (candidateDateRange, id) {\n if (id !== dateRange.id) {\n var otherDateRange = dateRanges[id];\n if (otherDateRange.class === dateRange.class && otherDateRange.startDate > dateRange.startDate && (!candidateDateRange || dateRange.startDate < candidateDateRange.startDate)) {\n return otherDateRange;\n }\n }\n return candidateDateRange;\n }, null);\n if (nextDateRangeWithSameClass) {\n endTime = dateRangeDateToTimelineSeconds(nextDateRangeWithSameClass.startDate, dateTimeOffset);\n durationKnown = true;\n }\n }\n\n // Create TextTrack Cues for each MetadataGroup Item (select DateRange attribute)\n // This is to emulate Safari HLS playback handling of DateRange tags\n var attributes = Object.keys(dateRange.attr);\n for (var j = 0; j < attributes.length; j++) {\n var key = attributes[j];\n if (!isDateRangeCueAttribute(key)) {\n continue;\n }\n var cue = cues[key];\n if (cue) {\n if (durationKnown && !appendedDateRangeCues.durationKnown) {\n cue.endTime = endTime;\n }\n } else if (Cue) {\n var data = dateRange.attr[key];\n if (isSCTE35Attribute(key)) {\n data = hexToArrayBuffer(data);\n }\n var _cue = createCueWithDataFields(Cue, startTime, endTime, {\n key: key,\n data: data\n }, MetadataSchema.dateRange);\n if (_cue) {\n _cue.id = id;\n _this.id3Track.addCue(_cue);\n cues[key] = _cue;\n }\n }\n }\n\n // Keep track of processed DateRanges by ID for updating cues with new DateRange tag attributes\n dateRangeCuesAppended[id] = {\n cues: cues,\n dateRange: dateRange,\n durationKnown: durationKnown\n };\n };\n for (var _i = 0; _i < ids.length; _i++) {\n _loop2();\n }\n };\n return ID3TrackController;\n }();\n\n var LatencyController = /*#__PURE__*/function () {\n function LatencyController(hls) {\n var _this = this;\n this.hls = void 0;\n this.config = void 0;\n this.media = null;\n this.levelDetails = null;\n this.currentTime = 0;\n this.stallCount = 0;\n this._latency = null;\n this.timeupdateHandler = function () {\n return _this.timeupdate();\n };\n this.hls = hls;\n this.config = hls.config;\n this.registerListeners();\n }\n var _proto = LatencyController.prototype;\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.onMediaDetaching();\n this.levelDetails = null;\n // @ts-ignore\n this.hls = this.timeupdateHandler = null;\n };\n _proto.registerListeners = function registerListeners() {\n this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n this.hls.on(Events.ERROR, this.onError, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n this.hls.off(Events.ERROR, this.onError, this);\n };\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n this.media.addEventListener('timeupdate', this.timeupdateHandler);\n };\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (this.media) {\n this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n this.media = null;\n }\n };\n _proto.onManifestLoading = function onManifestLoading() {\n this.levelDetails = null;\n this._latency = null;\n this.stallCount = 0;\n };\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref) {\n var details = _ref.details;\n this.levelDetails = details;\n if (details.advanced) {\n this.timeupdate();\n }\n if (!details.live && this.media) {\n this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n }\n };\n _proto.onError = function onError(event, data) {\n var _this$levelDetails;\n if (data.details !== ErrorDetails.BUFFER_STALLED_ERROR) {\n return;\n }\n this.stallCount++;\n if ((_this$levelDetails = this.levelDetails) != null && _this$levelDetails.live) {\n logger.warn('[playback-rate-controller]: Stall detected, adjusting target latency');\n }\n };\n _proto.timeupdate = function timeupdate() {\n var media = this.media,\n levelDetails = this.levelDetails;\n if (!media || !levelDetails) {\n return;\n }\n this.currentTime = media.currentTime;\n var latency = this.computeLatency();\n if (latency === null) {\n return;\n }\n this._latency = latency;\n\n // Adapt playbackRate to meet target latency in low-latency mode\n var _this$config = this.config,\n lowLatencyMode = _this$config.lowLatencyMode,\n maxLiveSyncPlaybackRate = _this$config.maxLiveSyncPlaybackRate;\n if (!lowLatencyMode || maxLiveSyncPlaybackRate === 1 || !levelDetails.live) {\n return;\n }\n var targetLatency = this.targetLatency;\n if (targetLatency === null) {\n return;\n }\n var distanceFromTarget = latency - targetLatency;\n // Only adjust playbackRate when within one target duration of targetLatency\n // and more than one second from under-buffering.\n // Playback further than one target duration from target can be considered DVR playback.\n var liveMinLatencyDuration = Math.min(this.maxLatency, targetLatency + levelDetails.targetduration);\n var inLiveRange = distanceFromTarget < liveMinLatencyDuration;\n if (inLiveRange && distanceFromTarget > 0.05 && this.forwardBufferLength > 1) {\n var max = Math.min(2, Math.max(1.0, maxLiveSyncPlaybackRate));\n var rate = Math.round(2 / (1 + Math.exp(-0.75 * distanceFromTarget - this.edgeStalled)) * 20) / 20;\n media.playbackRate = Math.min(max, Math.max(1, rate));\n } else if (media.playbackRate !== 1 && media.playbackRate !== 0) {\n media.playbackRate = 1;\n }\n };\n _proto.estimateLiveEdge = function estimateLiveEdge() {\n var levelDetails = this.levelDetails;\n if (levelDetails === null) {\n return null;\n }\n return levelDetails.edge + levelDetails.age;\n };\n _proto.computeLatency = function computeLatency() {\n var liveEdge = this.estimateLiveEdge();\n if (liveEdge === null) {\n return null;\n }\n return liveEdge - this.currentTime;\n };\n _createClass(LatencyController, [{\n key: \"latency\",\n get: function get() {\n return this._latency || 0;\n }\n }, {\n key: \"maxLatency\",\n get: function get() {\n var config = this.config,\n levelDetails = this.levelDetails;\n if (config.liveMaxLatencyDuration !== undefined) {\n return config.liveMaxLatencyDuration;\n }\n return levelDetails ? config.liveMaxLatencyDurationCount * levelDetails.targetduration : 0;\n }\n }, {\n key: \"targetLatency\",\n get: function get() {\n var levelDetails = this.levelDetails;\n if (levelDetails === null) {\n return null;\n }\n var holdBack = levelDetails.holdBack,\n partHoldBack = levelDetails.partHoldBack,\n targetduration = levelDetails.targetduration;\n var _this$config2 = this.config,\n liveSyncDuration = _this$config2.liveSyncDuration,\n liveSyncDurationCount = _this$config2.liveSyncDurationCount,\n lowLatencyMode = _this$config2.lowLatencyMode;\n var userConfig = this.hls.userConfig;\n var targetLatency = lowLatencyMode ? partHoldBack || holdBack : holdBack;\n if (userConfig.liveSyncDuration || userConfig.liveSyncDurationCount || targetLatency === 0) {\n targetLatency = liveSyncDuration !== undefined ? liveSyncDuration : liveSyncDurationCount * targetduration;\n }\n var maxLiveSyncOnStallIncrease = targetduration;\n var liveSyncOnStallIncrease = 1.0;\n return targetLatency + Math.min(this.stallCount * liveSyncOnStallIncrease, maxLiveSyncOnStallIncrease);\n }\n }, {\n key: \"liveSyncPosition\",\n get: function get() {\n var liveEdge = this.estimateLiveEdge();\n var targetLatency = this.targetLatency;\n var levelDetails = this.levelDetails;\n if (liveEdge === null || targetLatency === null || levelDetails === null) {\n return null;\n }\n var edge = levelDetails.edge;\n var syncPosition = liveEdge - targetLatency - this.edgeStalled;\n var min = edge - levelDetails.totalduration;\n var max = edge - (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration);\n return Math.min(Math.max(min, syncPosition), max);\n }\n }, {\n key: \"drift\",\n get: function get() {\n var levelDetails = this.levelDetails;\n if (levelDetails === null) {\n return 1;\n }\n return levelDetails.drift;\n }\n }, {\n key: \"edgeStalled\",\n get: function get() {\n var levelDetails = this.levelDetails;\n if (levelDetails === null) {\n return 0;\n }\n var maxLevelUpdateAge = (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration) * 3;\n return Math.max(levelDetails.age - maxLevelUpdateAge, 0);\n }\n }, {\n key: \"forwardBufferLength\",\n get: function get() {\n var media = this.media,\n levelDetails = this.levelDetails;\n if (!media || !levelDetails) {\n return 0;\n }\n var bufferedRanges = media.buffered.length;\n return (bufferedRanges ? media.buffered.end(bufferedRanges - 1) : levelDetails.edge) - this.currentTime;\n }\n }]);\n return LatencyController;\n }();\n\n var HdcpLevels = ['NONE', 'TYPE-0', 'TYPE-1', null];\n function isHdcpLevel(value) {\n return HdcpLevels.indexOf(value) > -1;\n }\n var VideoRangeValues = ['SDR', 'PQ', 'HLG'];\n function isVideoRange(value) {\n return !!value && VideoRangeValues.indexOf(value) > -1;\n }\n var HlsSkip = {\n No: \"\",\n Yes: \"YES\",\n v2: \"v2\"\n };\n function getSkipValue(details) {\n var canSkipUntil = details.canSkipUntil,\n canSkipDateRanges = details.canSkipDateRanges,\n age = details.age;\n // A Client SHOULD NOT request a Playlist Delta Update unless it already\n // has a version of the Playlist that is no older than one-half of the Skip Boundary.\n // @see: https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-6.3.7\n var playlistRecentEnough = age < canSkipUntil / 2;\n if (canSkipUntil && playlistRecentEnough) {\n if (canSkipDateRanges) {\n return HlsSkip.v2;\n }\n return HlsSkip.Yes;\n }\n return HlsSkip.No;\n }\n var HlsUrlParameters = /*#__PURE__*/function () {\n function HlsUrlParameters(msn, part, skip) {\n this.msn = void 0;\n this.part = void 0;\n this.skip = void 0;\n this.msn = msn;\n this.part = part;\n this.skip = skip;\n }\n var _proto = HlsUrlParameters.prototype;\n _proto.addDirectives = function addDirectives(uri) {\n var url = new self.URL(uri);\n if (this.msn !== undefined) {\n url.searchParams.set('_HLS_msn', this.msn.toString());\n }\n if (this.part !== undefined) {\n url.searchParams.set('_HLS_part', this.part.toString());\n }\n if (this.skip) {\n url.searchParams.set('_HLS_skip', this.skip);\n }\n return url.href;\n };\n return HlsUrlParameters;\n }();\n var Level = /*#__PURE__*/function () {\n function Level(data) {\n this._attrs = void 0;\n this.audioCodec = void 0;\n this.bitrate = void 0;\n this.codecSet = void 0;\n this.url = void 0;\n this.frameRate = void 0;\n this.height = void 0;\n this.id = void 0;\n this.name = void 0;\n this.videoCodec = void 0;\n this.width = void 0;\n this.details = void 0;\n this.fragmentError = 0;\n this.loadError = 0;\n this.loaded = void 0;\n this.realBitrate = 0;\n this.supportedPromise = void 0;\n this.supportedResult = void 0;\n this._avgBitrate = 0;\n this._audioGroups = void 0;\n this._subtitleGroups = void 0;\n // Deprecated (retained for backwards compatibility)\n this._urlId = 0;\n this.url = [data.url];\n this._attrs = [data.attrs];\n this.bitrate = data.bitrate;\n if (data.details) {\n this.details = data.details;\n }\n this.id = data.id || 0;\n this.name = data.name;\n this.width = data.width || 0;\n this.height = data.height || 0;\n this.frameRate = data.attrs.optionalFloat('FRAME-RATE', 0);\n this._avgBitrate = data.attrs.decimalInteger('AVERAGE-BANDWIDTH');\n this.audioCodec = data.audioCodec;\n this.videoCodec = data.videoCodec;\n this.codecSet = [data.videoCodec, data.audioCodec].filter(function (c) {\n return !!c;\n }).map(function (s) {\n return s.substring(0, 4);\n }).join(',');\n this.addGroupId('audio', data.attrs.AUDIO);\n this.addGroupId('text', data.attrs.SUBTITLES);\n }\n var _proto2 = Level.prototype;\n _proto2.hasAudioGroup = function hasAudioGroup(groupId) {\n return hasGroup(this._audioGroups, groupId);\n };\n _proto2.hasSubtitleGroup = function hasSubtitleGroup(groupId) {\n return hasGroup(this._subtitleGroups, groupId);\n };\n _proto2.addGroupId = function addGroupId(type, groupId) {\n if (!groupId) {\n return;\n }\n if (type === 'audio') {\n var audioGroups = this._audioGroups;\n if (!audioGroups) {\n audioGroups = this._audioGroups = [];\n }\n if (audioGroups.indexOf(groupId) === -1) {\n audioGroups.push(groupId);\n }\n } else if (type === 'text') {\n var subtitleGroups = this._subtitleGroups;\n if (!subtitleGroups) {\n subtitleGroups = this._subtitleGroups = [];\n }\n if (subtitleGroups.indexOf(groupId) === -1) {\n subtitleGroups.push(groupId);\n }\n }\n }\n\n // Deprecated methods (retained for backwards compatibility)\n ;\n _proto2.addFallback = function addFallback() {};\n _createClass(Level, [{\n key: \"maxBitrate\",\n get: function get() {\n return Math.max(this.realBitrate, this.bitrate);\n }\n }, {\n key: \"averageBitrate\",\n get: function get() {\n return this._avgBitrate || this.realBitrate || this.bitrate;\n }\n }, {\n key: \"attrs\",\n get: function get() {\n return this._attrs[0];\n }\n }, {\n key: \"codecs\",\n get: function get() {\n return this.attrs.CODECS || '';\n }\n }, {\n key: \"pathwayId\",\n get: function get() {\n return this.attrs['PATHWAY-ID'] || '.';\n }\n }, {\n key: \"videoRange\",\n get: function get() {\n return this.attrs['VIDEO-RANGE'] || 'SDR';\n }\n }, {\n key: \"score\",\n get: function get() {\n return this.attrs.optionalFloat('SCORE', 0);\n }\n }, {\n key: \"uri\",\n get: function get() {\n return this.url[0] || '';\n }\n }, {\n key: \"audioGroups\",\n get: function get() {\n return this._audioGroups;\n }\n }, {\n key: \"subtitleGroups\",\n get: function get() {\n return this._subtitleGroups;\n }\n }, {\n key: \"urlId\",\n get: function get() {\n return 0;\n },\n set: function set(value) {}\n }, {\n key: \"audioGroupIds\",\n get: function get() {\n return this.audioGroups ? [this.audioGroupId] : undefined;\n }\n }, {\n key: \"textGroupIds\",\n get: function get() {\n return this.subtitleGroups ? [this.textGroupId] : undefined;\n }\n }, {\n key: \"audioGroupId\",\n get: function get() {\n var _this$audioGroups;\n return (_this$audioGroups = this.audioGroups) == null ? void 0 : _this$audioGroups[0];\n }\n }, {\n key: \"textGroupId\",\n get: function get() {\n var _this$subtitleGroups;\n return (_this$subtitleGroups = this.subtitleGroups) == null ? void 0 : _this$subtitleGroups[0];\n }\n }]);\n return Level;\n }();\n function hasGroup(groups, groupId) {\n if (!groupId || !groups) {\n return false;\n }\n return groups.indexOf(groupId) !== -1;\n }\n\n function updateFromToPTS(fragFrom, fragTo) {\n var fragToPTS = fragTo.startPTS;\n // if we know startPTS[toIdx]\n if (isFiniteNumber(fragToPTS)) {\n // update fragment duration.\n // it helps to fix drifts between playlist reported duration and fragment real duration\n var duration = 0;\n var frag;\n if (fragTo.sn > fragFrom.sn) {\n duration = fragToPTS - fragFrom.start;\n frag = fragFrom;\n } else {\n duration = fragFrom.start - fragToPTS;\n frag = fragTo;\n }\n if (frag.duration !== duration) {\n frag.duration = duration;\n }\n // we dont know startPTS[toIdx]\n } else if (fragTo.sn > fragFrom.sn) {\n var contiguous = fragFrom.cc === fragTo.cc;\n // TODO: With part-loading end/durations we need to confirm the whole fragment is loaded before using (or setting) minEndPTS\n if (contiguous && fragFrom.minEndPTS) {\n fragTo.start = fragFrom.start + (fragFrom.minEndPTS - fragFrom.start);\n } else {\n fragTo.start = fragFrom.start + fragFrom.duration;\n }\n } else {\n fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0);\n }\n }\n function updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) {\n var parsedMediaDuration = endPTS - startPTS;\n if (parsedMediaDuration <= 0) {\n logger.warn('Fragment should have a positive duration', frag);\n endPTS = startPTS + frag.duration;\n endDTS = startDTS + frag.duration;\n }\n var maxStartPTS = startPTS;\n var minEndPTS = endPTS;\n var fragStartPts = frag.startPTS;\n var fragEndPts = frag.endPTS;\n if (isFiniteNumber(fragStartPts)) {\n // delta PTS between audio and video\n var deltaPTS = Math.abs(fragStartPts - startPTS);\n if (!isFiniteNumber(frag.deltaPTS)) {\n frag.deltaPTS = deltaPTS;\n } else {\n frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS);\n }\n maxStartPTS = Math.max(startPTS, fragStartPts);\n startPTS = Math.min(startPTS, fragStartPts);\n startDTS = Math.min(startDTS, frag.startDTS);\n minEndPTS = Math.min(endPTS, fragEndPts);\n endPTS = Math.max(endPTS, fragEndPts);\n endDTS = Math.max(endDTS, frag.endDTS);\n }\n var drift = startPTS - frag.start;\n if (frag.start !== 0) {\n frag.start = startPTS;\n }\n frag.duration = endPTS - frag.start;\n frag.startPTS = startPTS;\n frag.maxStartPTS = maxStartPTS;\n frag.startDTS = startDTS;\n frag.endPTS = endPTS;\n frag.minEndPTS = minEndPTS;\n frag.endDTS = endDTS;\n var sn = frag.sn; // 'initSegment'\n // exit if sn out of range\n if (!details || sn < details.startSN || sn > details.endSN) {\n return 0;\n }\n var i;\n var fragIdx = sn - details.startSN;\n var fragments = details.fragments;\n // update frag reference in fragments array\n // rationale is that fragments array might not contain this frag object.\n // this will happen if playlist has been refreshed between frag loading and call to updateFragPTSDTS()\n // if we don't update frag, we won't be able to propagate PTS info on the playlist\n // resulting in invalid sliding computation\n fragments[fragIdx] = frag;\n // adjust fragment PTS/duration from seqnum-1 to frag 0\n for (i = fragIdx; i > 0; i--) {\n updateFromToPTS(fragments[i], fragments[i - 1]);\n }\n\n // adjust fragment PTS/duration from seqnum to last frag\n for (i = fragIdx; i < fragments.length - 1; i++) {\n updateFromToPTS(fragments[i], fragments[i + 1]);\n }\n if (details.fragmentHint) {\n updateFromToPTS(fragments[fragments.length - 1], details.fragmentHint);\n }\n details.PTSKnown = details.alignedSliding = true;\n return drift;\n }\n function mergeDetails(oldDetails, newDetails) {\n // Track the last initSegment processed. Initialize it to the last one on the timeline.\n var currentInitSegment = null;\n var oldFragments = oldDetails.fragments;\n for (var i = oldFragments.length - 1; i >= 0; i--) {\n var oldInit = oldFragments[i].initSegment;\n if (oldInit) {\n currentInitSegment = oldInit;\n break;\n }\n }\n if (oldDetails.fragmentHint) {\n // prevent PTS and duration from being adjusted on the next hint\n delete oldDetails.fragmentHint.endPTS;\n }\n // check if old/new playlists have fragments in common\n // loop through overlapping SN and update startPTS , cc, and duration if any found\n var ccOffset = 0;\n var PTSFrag;\n mapFragmentIntersection(oldDetails, newDetails, function (oldFrag, newFrag) {\n if (oldFrag.relurl) {\n // Do not compare CC if the old fragment has no url. This is a level.fragmentHint used by LL-HLS parts.\n // It maybe be off by 1 if it was created before any parts or discontinuity tags were appended to the end\n // of the playlist.\n ccOffset = oldFrag.cc - newFrag.cc;\n }\n if (isFiniteNumber(oldFrag.startPTS) && isFiniteNumber(oldFrag.endPTS)) {\n newFrag.start = newFrag.startPTS = oldFrag.startPTS;\n newFrag.startDTS = oldFrag.startDTS;\n newFrag.maxStartPTS = oldFrag.maxStartPTS;\n newFrag.endPTS = oldFrag.endPTS;\n newFrag.endDTS = oldFrag.endDTS;\n newFrag.minEndPTS = oldFrag.minEndPTS;\n newFrag.duration = oldFrag.endPTS - oldFrag.startPTS;\n if (newFrag.duration) {\n PTSFrag = newFrag;\n }\n\n // PTS is known when any segment has startPTS and endPTS\n newDetails.PTSKnown = newDetails.alignedSliding = true;\n }\n newFrag.elementaryStreams = oldFrag.elementaryStreams;\n newFrag.loader = oldFrag.loader;\n newFrag.stats = oldFrag.stats;\n if (oldFrag.initSegment) {\n newFrag.initSegment = oldFrag.initSegment;\n currentInitSegment = oldFrag.initSegment;\n }\n });\n if (currentInitSegment) {\n var fragmentsToCheck = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n fragmentsToCheck.forEach(function (frag) {\n var _currentInitSegment;\n if (frag && (!frag.initSegment || frag.initSegment.relurl === ((_currentInitSegment = currentInitSegment) == null ? void 0 : _currentInitSegment.relurl))) {\n frag.initSegment = currentInitSegment;\n }\n });\n }\n if (newDetails.skippedSegments) {\n newDetails.deltaUpdateFailed = newDetails.fragments.some(function (frag) {\n return !frag;\n });\n if (newDetails.deltaUpdateFailed) {\n logger.warn('[level-helper] Previous playlist missing segments skipped in delta playlist');\n for (var _i = newDetails.skippedSegments; _i--;) {\n newDetails.fragments.shift();\n }\n newDetails.startSN = newDetails.fragments[0].sn;\n newDetails.startCC = newDetails.fragments[0].cc;\n } else if (newDetails.canSkipDateRanges) {\n newDetails.dateRanges = mergeDateRanges(oldDetails.dateRanges, newDetails.dateRanges, newDetails.recentlyRemovedDateranges);\n }\n }\n var newFragments = newDetails.fragments;\n if (ccOffset) {\n logger.warn('discontinuity sliding from playlist, take drift into account');\n for (var _i2 = 0; _i2 < newFragments.length; _i2++) {\n newFragments[_i2].cc += ccOffset;\n }\n }\n if (newDetails.skippedSegments) {\n newDetails.startCC = newDetails.fragments[0].cc;\n }\n\n // Merge parts\n mapPartIntersection(oldDetails.partList, newDetails.partList, function (oldPart, newPart) {\n newPart.elementaryStreams = oldPart.elementaryStreams;\n newPart.stats = oldPart.stats;\n });\n\n // if at least one fragment contains PTS info, recompute PTS information for all fragments\n if (PTSFrag) {\n updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS);\n } else {\n // ensure that delta is within oldFragments range\n // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61])\n // in that case we also need to adjust start offset of all fragments\n adjustSliding(oldDetails, newDetails);\n }\n if (newFragments.length) {\n newDetails.totalduration = newDetails.edge - newFragments[0].start;\n }\n newDetails.driftStartTime = oldDetails.driftStartTime;\n newDetails.driftStart = oldDetails.driftStart;\n var advancedDateTime = newDetails.advancedDateTime;\n if (newDetails.advanced && advancedDateTime) {\n var edge = newDetails.edge;\n if (!newDetails.driftStart) {\n newDetails.driftStartTime = advancedDateTime;\n newDetails.driftStart = edge;\n }\n newDetails.driftEndTime = advancedDateTime;\n newDetails.driftEnd = edge;\n } else {\n newDetails.driftEndTime = oldDetails.driftEndTime;\n newDetails.driftEnd = oldDetails.driftEnd;\n newDetails.advancedDateTime = oldDetails.advancedDateTime;\n }\n }\n function mergeDateRanges(oldDateRanges, deltaDateRanges, recentlyRemovedDateranges) {\n var dateRanges = _extends({}, oldDateRanges);\n if (recentlyRemovedDateranges) {\n recentlyRemovedDateranges.forEach(function (id) {\n delete dateRanges[id];\n });\n }\n Object.keys(deltaDateRanges).forEach(function (id) {\n var dateRange = new DateRange(deltaDateRanges[id].attr, dateRanges[id]);\n if (dateRange.isValid) {\n dateRanges[id] = dateRange;\n } else {\n logger.warn(\"Ignoring invalid Playlist Delta Update DATERANGE tag: \\\"\" + JSON.stringify(deltaDateRanges[id].attr) + \"\\\"\");\n }\n });\n return dateRanges;\n }\n function mapPartIntersection(oldParts, newParts, intersectionFn) {\n if (oldParts && newParts) {\n var delta = 0;\n for (var i = 0, len = oldParts.length; i <= len; i++) {\n var _oldPart = oldParts[i];\n var _newPart = newParts[i + delta];\n if (_oldPart && _newPart && _oldPart.index === _newPart.index && _oldPart.fragment.sn === _newPart.fragment.sn) {\n intersectionFn(_oldPart, _newPart);\n } else {\n delta--;\n }\n }\n }\n }\n function mapFragmentIntersection(oldDetails, newDetails, intersectionFn) {\n var skippedSegments = newDetails.skippedSegments;\n var start = Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN;\n var end = (oldDetails.fragmentHint ? 1 : 0) + (skippedSegments ? newDetails.endSN : Math.min(oldDetails.endSN, newDetails.endSN)) - newDetails.startSN;\n var delta = newDetails.startSN - oldDetails.startSN;\n var newFrags = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n var oldFrags = oldDetails.fragmentHint ? oldDetails.fragments.concat(oldDetails.fragmentHint) : oldDetails.fragments;\n for (var i = start; i <= end; i++) {\n var _oldFrag = oldFrags[delta + i];\n var _newFrag = newFrags[i];\n if (skippedSegments && !_newFrag && i < skippedSegments) {\n // Fill in skipped segments in delta playlist\n _newFrag = newDetails.fragments[i] = _oldFrag;\n }\n if (_oldFrag && _newFrag) {\n intersectionFn(_oldFrag, _newFrag);\n }\n }\n }\n function adjustSliding(oldDetails, newDetails) {\n var delta = newDetails.startSN + newDetails.skippedSegments - oldDetails.startSN;\n var oldFragments = oldDetails.fragments;\n if (delta < 0 || delta >= oldFragments.length) {\n return;\n }\n addSliding(newDetails, oldFragments[delta].start);\n }\n function addSliding(details, start) {\n if (start) {\n var fragments = details.fragments;\n for (var i = details.skippedSegments; i < fragments.length; i++) {\n fragments[i].start += start;\n }\n if (details.fragmentHint) {\n details.fragmentHint.start += start;\n }\n }\n }\n function computeReloadInterval(newDetails, distanceToLiveEdgeMs) {\n if (distanceToLiveEdgeMs === void 0) {\n distanceToLiveEdgeMs = Infinity;\n }\n var reloadInterval = 1000 * newDetails.targetduration;\n if (newDetails.updated) {\n // Use last segment duration when shorter than target duration and near live edge\n var fragments = newDetails.fragments;\n var liveEdgeMaxTargetDurations = 4;\n if (fragments.length && reloadInterval * liveEdgeMaxTargetDurations > distanceToLiveEdgeMs) {\n var lastSegmentDuration = fragments[fragments.length - 1].duration * 1000;\n if (lastSegmentDuration < reloadInterval) {\n reloadInterval = lastSegmentDuration;\n }\n }\n } else {\n // estimate = 'miss half average';\n // follow HLS Spec, If the client reloads a Playlist file and finds that it has not\n // changed then it MUST wait for a period of one-half the target\n // duration before retrying.\n reloadInterval /= 2;\n }\n return Math.round(reloadInterval);\n }\n function getFragmentWithSN(level, sn, fragCurrent) {\n if (!(level != null && level.details)) {\n return null;\n }\n var levelDetails = level.details;\n var fragment = levelDetails.fragments[sn - levelDetails.startSN];\n if (fragment) {\n return fragment;\n }\n fragment = levelDetails.fragmentHint;\n if (fragment && fragment.sn === sn) {\n return fragment;\n }\n if (sn < levelDetails.startSN && fragCurrent && fragCurrent.sn === sn) {\n return fragCurrent;\n }\n return null;\n }\n function getPartWith(level, sn, partIndex) {\n var _level$details;\n if (!(level != null && level.details)) {\n return null;\n }\n return findPart((_level$details = level.details) == null ? void 0 : _level$details.partList, sn, partIndex);\n }\n function findPart(partList, sn, partIndex) {\n if (partList) {\n for (var i = partList.length; i--;) {\n var part = partList[i];\n if (part.index === partIndex && part.fragment.sn === sn) {\n return part;\n }\n }\n }\n return null;\n }\n function reassignFragmentLevelIndexes(levels) {\n levels.forEach(function (level, index) {\n var details = level.details;\n if (details != null && details.fragments) {\n details.fragments.forEach(function (fragment) {\n fragment.level = index;\n });\n }\n });\n }\n\n function isTimeoutError(error) {\n switch (error.details) {\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n case ErrorDetails.MANIFEST_LOAD_TIMEOUT:\n return true;\n }\n return false;\n }\n function getRetryConfig(loadPolicy, error) {\n var isTimeout = isTimeoutError(error);\n return loadPolicy.default[(isTimeout ? 'timeout' : 'error') + \"Retry\"];\n }\n function getRetryDelay(retryConfig, retryCount) {\n // exponential backoff capped to max retry delay\n var backoffFactor = retryConfig.backoff === 'linear' ? 1 : Math.pow(2, retryCount);\n return Math.min(backoffFactor * retryConfig.retryDelayMs, retryConfig.maxRetryDelayMs);\n }\n function getLoaderConfigWithoutReties(loderConfig) {\n return _objectSpread2(_objectSpread2({}, loderConfig), {\n errorRetry: null,\n timeoutRetry: null\n });\n }\n function shouldRetry(retryConfig, retryCount, isTimeout, loaderResponse) {\n if (!retryConfig) {\n return false;\n }\n var httpStatus = loaderResponse == null ? void 0 : loaderResponse.code;\n var retry = retryCount < retryConfig.maxNumRetry && (retryForHttpStatus(httpStatus) || !!isTimeout);\n return retryConfig.shouldRetry ? retryConfig.shouldRetry(retryConfig, retryCount, isTimeout, loaderResponse, retry) : retry;\n }\n function retryForHttpStatus(httpStatus) {\n // Do not retry on status 4xx, status 0 (CORS error), or undefined (decrypt/gap/parse error)\n return httpStatus === 0 && navigator.onLine === false || !!httpStatus && (httpStatus < 400 || httpStatus > 499);\n }\n\n var BinarySearch = {\n /**\n * Searches for an item in an array which matches a certain condition.\n * This requires the condition to only match one item in the array,\n * and for the array to be ordered.\n *\n * @param list The array to search.\n * @param comparisonFn\n * Called and provided a candidate item as the first argument.\n * Should return:\n * > -1 if the item should be located at a lower index than the provided item.\n * > 1 if the item should be located at a higher index than the provided item.\n * > 0 if the item is the item you're looking for.\n *\n * @returns the object if found, otherwise returns null\n */\n search: function search(list, comparisonFn) {\n var minIndex = 0;\n var maxIndex = list.length - 1;\n var currentIndex = null;\n var currentElement = null;\n while (minIndex <= maxIndex) {\n currentIndex = (minIndex + maxIndex) / 2 | 0;\n currentElement = list[currentIndex];\n var comparisonResult = comparisonFn(currentElement);\n if (comparisonResult > 0) {\n minIndex = currentIndex + 1;\n } else if (comparisonResult < 0) {\n maxIndex = currentIndex - 1;\n } else {\n return currentElement;\n }\n }\n return null;\n }\n };\n\n /**\n * Returns first fragment whose endPdt value exceeds the given PDT, or null.\n * @param fragments - The array of candidate fragments\n * @param PDTValue - The PDT value which must be exceeded\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n */\n function findFragmentByPDT(fragments, PDTValue, maxFragLookUpTolerance) {\n if (PDTValue === null || !Array.isArray(fragments) || !fragments.length || !isFiniteNumber(PDTValue)) {\n return null;\n }\n\n // if less than start\n var startPDT = fragments[0].programDateTime;\n if (PDTValue < (startPDT || 0)) {\n return null;\n }\n var endPDT = fragments[fragments.length - 1].endProgramDateTime;\n if (PDTValue >= (endPDT || 0)) {\n return null;\n }\n maxFragLookUpTolerance = maxFragLookUpTolerance || 0;\n for (var seg = 0; seg < fragments.length; ++seg) {\n var frag = fragments[seg];\n if (pdtWithinToleranceTest(PDTValue, maxFragLookUpTolerance, frag)) {\n return frag;\n }\n }\n return null;\n }\n\n /**\n * Finds a fragment based on the SN of the previous fragment; or based on the needs of the current buffer.\n * This method compensates for small buffer gaps by applying a tolerance to the start of any candidate fragment, thus\n * breaking any traps which would cause the same fragment to be continuously selected within a small range.\n * @param fragPrevious - The last frag successfully appended\n * @param fragments - The array of candidate fragments\n * @param bufferEnd - The end of the contiguous buffered range the playhead is currently within\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n * @returns a matching fragment or null\n */\n function findFragmentByPTS(fragPrevious, fragments, bufferEnd, maxFragLookUpTolerance, nextFragLookupTolerance) {\n if (bufferEnd === void 0) {\n bufferEnd = 0;\n }\n if (maxFragLookUpTolerance === void 0) {\n maxFragLookUpTolerance = 0;\n }\n if (nextFragLookupTolerance === void 0) {\n nextFragLookupTolerance = 0.005;\n }\n var fragNext = null;\n if (fragPrevious) {\n fragNext = fragments[fragPrevious.sn - fragments[0].sn + 1] || null;\n // check for buffer-end rounding error\n var bufferEdgeError = fragPrevious.endDTS - bufferEnd;\n if (bufferEdgeError > 0 && bufferEdgeError < 0.0000015) {\n bufferEnd += 0.0000015;\n }\n } else if (bufferEnd === 0 && fragments[0].start === 0) {\n fragNext = fragments[0];\n }\n // Prefer the next fragment if it's within tolerance\n if (fragNext && ((!fragPrevious || fragPrevious.level === fragNext.level) && fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext) === 0 || fragmentWithinFastStartSwitch(fragNext, fragPrevious, Math.min(nextFragLookupTolerance, maxFragLookUpTolerance)))) {\n return fragNext;\n }\n // We might be seeking past the tolerance so find the best match\n var foundFragment = BinarySearch.search(fragments, fragmentWithinToleranceTest.bind(null, bufferEnd, maxFragLookUpTolerance));\n if (foundFragment && (foundFragment !== fragPrevious || !fragNext)) {\n return foundFragment;\n }\n // If no match was found return the next fragment after fragPrevious, or null\n return fragNext;\n }\n function fragmentWithinFastStartSwitch(fragNext, fragPrevious, nextFragLookupTolerance) {\n if (fragPrevious && fragPrevious.start === 0 && fragPrevious.level < fragNext.level && (fragPrevious.endPTS || 0) > 0) {\n var firstDuration = fragPrevious.tagList.reduce(function (duration, tag) {\n if (tag[0] === 'INF') {\n duration += parseFloat(tag[1]);\n }\n return duration;\n }, nextFragLookupTolerance);\n return fragNext.start <= firstDuration;\n }\n return false;\n }\n\n /**\n * The test function used by the findFragmentBySn's BinarySearch to look for the best match to the current buffer conditions.\n * @param candidate - The fragment to test\n * @param bufferEnd - The end of the current buffered range the playhead is currently within\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns 0 if it matches, 1 if too low, -1 if too high\n */\n function fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, candidate) {\n if (bufferEnd === void 0) {\n bufferEnd = 0;\n }\n if (maxFragLookUpTolerance === void 0) {\n maxFragLookUpTolerance = 0;\n }\n // eagerly accept an accurate match (no tolerance)\n if (candidate.start <= bufferEnd && candidate.start + candidate.duration > bufferEnd) {\n return 0;\n }\n // offset should be within fragment boundary - config.maxFragLookUpTolerance\n // this is to cope with situations like\n // bufferEnd = 9.991\n // frag[Ø] : [0,10]\n // frag[1] : [10,20]\n // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here\n // frag start frag start+duration\n // |-----------------------------|\n // <---> <--->\n // ...--------><-----------------------------><---------....\n // previous frag matching fragment next frag\n // return -1 return 0 return 1\n // logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments\n var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0));\n if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) {\n return 1;\n } else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) {\n // if maxFragLookUpTolerance will have negative value then don't return -1 for first element\n return -1;\n }\n return 0;\n }\n\n /**\n * The test function used by the findFragmentByPdt's BinarySearch to look for the best match to the current buffer conditions.\n * This function tests the candidate's program date time values, as represented in Unix time\n * @param candidate - The fragment to test\n * @param pdtBufferEnd - The Unix time representing the end of the current buffered range\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns true if contiguous, false otherwise\n */\n function pdtWithinToleranceTest(pdtBufferEnd, maxFragLookUpTolerance, candidate) {\n var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)) * 1000;\n\n // endProgramDateTime can be null, default to zero\n var endProgramDateTime = candidate.endProgramDateTime || 0;\n return endProgramDateTime - candidateLookupTolerance > pdtBufferEnd;\n }\n function findFragWithCC(fragments, cc) {\n return BinarySearch.search(fragments, function (candidate) {\n if (candidate.cc < cc) {\n return 1;\n } else if (candidate.cc > cc) {\n return -1;\n } else {\n return 0;\n }\n });\n }\n\n var NetworkErrorAction = {\n DoNothing: 0,\n SendEndCallback: 1,\n SendAlternateToPenaltyBox: 2,\n RemoveAlternatePermanently: 3,\n InsertDiscontinuity: 4,\n RetryRequest: 5\n };\n var ErrorActionFlags = {\n None: 0,\n MoveAllAlternatesMatchingHost: 1,\n MoveAllAlternatesMatchingHDCP: 2,\n SwitchToSDR: 4\n }; // Reserved for future use\n var ErrorController = /*#__PURE__*/function () {\n function ErrorController(hls) {\n this.hls = void 0;\n this.playlistError = 0;\n this.penalizedRenditions = {};\n this.log = void 0;\n this.warn = void 0;\n this.error = void 0;\n this.hls = hls;\n this.log = logger.log.bind(logger, \"[info]:\");\n this.warn = logger.warn.bind(logger, \"[warning]:\");\n this.error = logger.error.bind(logger, \"[error]:\");\n this.registerListeners();\n }\n var _proto = ErrorController.prototype;\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(Events.ERROR, this.onError, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n if (!hls) {\n return;\n }\n hls.off(Events.ERROR, this.onError, this);\n hls.off(Events.ERROR, this.onErrorOut, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n };\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n // @ts-ignore\n this.hls = null;\n this.penalizedRenditions = {};\n };\n _proto.startLoad = function startLoad(startPosition) {};\n _proto.stopLoad = function stopLoad() {\n this.playlistError = 0;\n };\n _proto.getVariantLevelIndex = function getVariantLevelIndex(frag) {\n return (frag == null ? void 0 : frag.type) === PlaylistLevelType.MAIN ? frag.level : this.hls.loadLevel;\n };\n _proto.onManifestLoading = function onManifestLoading() {\n this.playlistError = 0;\n this.penalizedRenditions = {};\n };\n _proto.onLevelUpdated = function onLevelUpdated() {\n this.playlistError = 0;\n };\n _proto.onError = function onError(event, data) {\n var _data$frag, _data$level;\n if (data.fatal) {\n return;\n }\n var hls = this.hls;\n var context = data.context;\n switch (data.details) {\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n data.errorAction = this.getFragRetryOrSwitchAction(data);\n return;\n case ErrorDetails.FRAG_PARSING_ERROR:\n // ignore empty segment errors marked as gap\n if ((_data$frag = data.frag) != null && _data$frag.gap) {\n data.errorAction = {\n action: NetworkErrorAction.DoNothing,\n flags: ErrorActionFlags.None\n };\n return;\n }\n // falls through\n case ErrorDetails.FRAG_GAP:\n case ErrorDetails.FRAG_DECRYPT_ERROR:\n {\n // Switch level if possible, otherwise allow retry count to reach max error retries\n data.errorAction = this.getFragRetryOrSwitchAction(data);\n data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox;\n return;\n }\n case ErrorDetails.LEVEL_EMPTY_ERROR:\n case ErrorDetails.LEVEL_PARSING_ERROR:\n {\n var _data$context, _data$context$levelDe;\n // Only retry when empty and live\n var levelIndex = data.parent === PlaylistLevelType.MAIN ? data.level : hls.loadLevel;\n if (data.details === ErrorDetails.LEVEL_EMPTY_ERROR && !!((_data$context = data.context) != null && (_data$context$levelDe = _data$context.levelDetails) != null && _data$context$levelDe.live)) {\n data.errorAction = this.getPlaylistRetryOrSwitchAction(data, levelIndex);\n } else {\n // Escalate to fatal if not retrying or switching\n data.levelRetry = false;\n data.errorAction = this.getLevelSwitchAction(data, levelIndex);\n }\n }\n return;\n case ErrorDetails.LEVEL_LOAD_ERROR:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n if (typeof (context == null ? void 0 : context.level) === 'number') {\n data.errorAction = this.getPlaylistRetryOrSwitchAction(data, context.level);\n }\n return;\n case ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n case ErrorDetails.SUBTITLE_LOAD_ERROR:\n case ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:\n if (context) {\n var level = hls.levels[hls.loadLevel];\n if (level && (context.type === PlaylistContextType.AUDIO_TRACK && level.hasAudioGroup(context.groupId) || context.type === PlaylistContextType.SUBTITLE_TRACK && level.hasSubtitleGroup(context.groupId))) {\n // Perform Pathway switch or Redundant failover if possible for fastest recovery\n // otherwise allow playlist retry count to reach max error retries\n data.errorAction = this.getPlaylistRetryOrSwitchAction(data, hls.loadLevel);\n data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox;\n data.errorAction.flags = ErrorActionFlags.MoveAllAlternatesMatchingHost;\n return;\n }\n }\n return;\n case ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:\n {\n var _level = hls.levels[hls.loadLevel];\n var restrictedHdcpLevel = _level == null ? void 0 : _level.attrs['HDCP-LEVEL'];\n if (restrictedHdcpLevel) {\n data.errorAction = {\n action: NetworkErrorAction.SendAlternateToPenaltyBox,\n flags: ErrorActionFlags.MoveAllAlternatesMatchingHDCP,\n hdcpLevel: restrictedHdcpLevel\n };\n } else {\n this.keySystemError(data);\n }\n }\n return;\n case ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n case ErrorDetails.REMUX_ALLOC_ERROR:\n case ErrorDetails.BUFFER_APPEND_ERROR:\n data.errorAction = this.getLevelSwitchAction(data, (_data$level = data.level) != null ? _data$level : hls.loadLevel);\n return;\n case ErrorDetails.INTERNAL_EXCEPTION:\n case ErrorDetails.BUFFER_APPENDING_ERROR:\n case ErrorDetails.BUFFER_FULL_ERROR:\n case ErrorDetails.LEVEL_SWITCH_ERROR:\n case ErrorDetails.BUFFER_STALLED_ERROR:\n case ErrorDetails.BUFFER_SEEK_OVER_HOLE:\n case ErrorDetails.BUFFER_NUDGE_ON_STALL:\n data.errorAction = {\n action: NetworkErrorAction.DoNothing,\n flags: ErrorActionFlags.None\n };\n return;\n }\n if (data.type === ErrorTypes.KEY_SYSTEM_ERROR) {\n this.keySystemError(data);\n }\n };\n _proto.keySystemError = function keySystemError(data) {\n var levelIndex = this.getVariantLevelIndex(data.frag);\n // Do not retry level. Escalate to fatal if switching levels fails.\n data.levelRetry = false;\n data.errorAction = this.getLevelSwitchAction(data, levelIndex);\n };\n _proto.getPlaylistRetryOrSwitchAction = function getPlaylistRetryOrSwitchAction(data, levelIndex) {\n var hls = this.hls;\n var retryConfig = getRetryConfig(hls.config.playlistLoadPolicy, data);\n var retryCount = this.playlistError++;\n var retry = shouldRetry(retryConfig, retryCount, isTimeoutError(data), data.response);\n if (retry) {\n return {\n action: NetworkErrorAction.RetryRequest,\n flags: ErrorActionFlags.None,\n retryConfig: retryConfig,\n retryCount: retryCount\n };\n }\n var errorAction = this.getLevelSwitchAction(data, levelIndex);\n if (retryConfig) {\n errorAction.retryConfig = retryConfig;\n errorAction.retryCount = retryCount;\n }\n return errorAction;\n };\n _proto.getFragRetryOrSwitchAction = function getFragRetryOrSwitchAction(data) {\n var hls = this.hls;\n // Share fragment error count accross media options (main, audio, subs)\n // This allows for level based rendition switching when media option assets fail\n var variantLevelIndex = this.getVariantLevelIndex(data.frag);\n var level = hls.levels[variantLevelIndex];\n var _hls$config = hls.config,\n fragLoadPolicy = _hls$config.fragLoadPolicy,\n keyLoadPolicy = _hls$config.keyLoadPolicy;\n var retryConfig = getRetryConfig(data.details.startsWith('key') ? keyLoadPolicy : fragLoadPolicy, data);\n var fragmentErrors = hls.levels.reduce(function (acc, level) {\n return acc + level.fragmentError;\n }, 0);\n // Switch levels when out of retried or level index out of bounds\n if (level) {\n if (data.details !== ErrorDetails.FRAG_GAP) {\n level.fragmentError++;\n }\n var retry = shouldRetry(retryConfig, fragmentErrors, isTimeoutError(data), data.response);\n if (retry) {\n return {\n action: NetworkErrorAction.RetryRequest,\n flags: ErrorActionFlags.None,\n retryConfig: retryConfig,\n retryCount: fragmentErrors\n };\n }\n }\n // Reach max retry count, or Missing level reference\n // Switch to valid index\n var errorAction = this.getLevelSwitchAction(data, variantLevelIndex);\n // Add retry details to allow skipping of FRAG_PARSING_ERROR\n if (retryConfig) {\n errorAction.retryConfig = retryConfig;\n errorAction.retryCount = fragmentErrors;\n }\n return errorAction;\n };\n _proto.getLevelSwitchAction = function getLevelSwitchAction(data, levelIndex) {\n var hls = this.hls;\n if (levelIndex === null || levelIndex === undefined) {\n levelIndex = hls.loadLevel;\n }\n var level = this.hls.levels[levelIndex];\n if (level) {\n var _data$frag2, _data$context2;\n var errorDetails = data.details;\n level.loadError++;\n if (errorDetails === ErrorDetails.BUFFER_APPEND_ERROR) {\n level.fragmentError++;\n }\n // Search for next level to retry\n var nextLevel = -1;\n var levels = hls.levels,\n loadLevel = hls.loadLevel,\n minAutoLevel = hls.minAutoLevel,\n maxAutoLevel = hls.maxAutoLevel;\n if (!hls.autoLevelEnabled) {\n hls.loadLevel = -1;\n }\n var fragErrorType = (_data$frag2 = data.frag) == null ? void 0 : _data$frag2.type;\n // Find alternate audio codec if available on audio codec error\n var isAudioCodecError = fragErrorType === PlaylistLevelType.AUDIO && errorDetails === ErrorDetails.FRAG_PARSING_ERROR || data.sourceBufferName === 'audio' && (errorDetails === ErrorDetails.BUFFER_ADD_CODEC_ERROR || errorDetails === ErrorDetails.BUFFER_APPEND_ERROR);\n var findAudioCodecAlternate = isAudioCodecError && levels.some(function (_ref) {\n var audioCodec = _ref.audioCodec;\n return level.audioCodec !== audioCodec;\n });\n // Find alternate video codec if available on video codec error\n var isVideoCodecError = data.sourceBufferName === 'video' && (errorDetails === ErrorDetails.BUFFER_ADD_CODEC_ERROR || errorDetails === ErrorDetails.BUFFER_APPEND_ERROR);\n var findVideoCodecAlternate = isVideoCodecError && levels.some(function (_ref2) {\n var codecSet = _ref2.codecSet,\n audioCodec = _ref2.audioCodec;\n return level.codecSet !== codecSet && level.audioCodec === audioCodec;\n });\n var _ref3 = (_data$context2 = data.context) != null ? _data$context2 : {},\n playlistErrorType = _ref3.type,\n playlistErrorGroupId = _ref3.groupId;\n var _loop = function _loop() {\n var candidate = (i + loadLevel) % levels.length;\n if (candidate !== loadLevel && candidate >= minAutoLevel && candidate <= maxAutoLevel && levels[candidate].loadError === 0) {\n var _level$audioGroups, _level$subtitleGroups;\n var levelCandidate = levels[candidate];\n // Skip level switch if GAP tag is found in next level at same position\n if (errorDetails === ErrorDetails.FRAG_GAP && fragErrorType === PlaylistLevelType.MAIN && data.frag) {\n var levelDetails = levels[candidate].details;\n if (levelDetails) {\n var fragCandidate = findFragmentByPTS(data.frag, levelDetails.fragments, data.frag.start);\n if (fragCandidate != null && fragCandidate.gap) {\n return 0; // continue\n }\n }\n } else if (playlistErrorType === PlaylistContextType.AUDIO_TRACK && levelCandidate.hasAudioGroup(playlistErrorGroupId) || playlistErrorType === PlaylistContextType.SUBTITLE_TRACK && levelCandidate.hasSubtitleGroup(playlistErrorGroupId)) {\n // For audio/subs playlist errors find another group ID or fallthrough to redundant fail-over\n return 0; // continue\n } else if (fragErrorType === PlaylistLevelType.AUDIO && (_level$audioGroups = level.audioGroups) != null && _level$audioGroups.some(function (groupId) {\n return levelCandidate.hasAudioGroup(groupId);\n }) || fragErrorType === PlaylistLevelType.SUBTITLE && (_level$subtitleGroups = level.subtitleGroups) != null && _level$subtitleGroups.some(function (groupId) {\n return levelCandidate.hasSubtitleGroup(groupId);\n }) || findAudioCodecAlternate && level.audioCodec === levelCandidate.audioCodec || !findAudioCodecAlternate && level.audioCodec !== levelCandidate.audioCodec || findVideoCodecAlternate && level.codecSet === levelCandidate.codecSet) {\n // For video/audio/subs frag errors find another group ID or fallthrough to redundant fail-over\n return 0; // continue\n }\n nextLevel = candidate;\n return 1; // break\n }\n },\n _ret;\n for (var i = levels.length; i--;) {\n _ret = _loop();\n if (_ret === 0) continue;\n if (_ret === 1) break;\n }\n if (nextLevel > -1 && hls.loadLevel !== nextLevel) {\n data.levelRetry = true;\n this.playlistError = 0;\n return {\n action: NetworkErrorAction.SendAlternateToPenaltyBox,\n flags: ErrorActionFlags.None,\n nextAutoLevel: nextLevel\n };\n }\n }\n // No levels to switch / Manual level selection / Level not found\n // Resolve with Pathway switch, Redundant fail-over, or stay on lowest Level\n return {\n action: NetworkErrorAction.SendAlternateToPenaltyBox,\n flags: ErrorActionFlags.MoveAllAlternatesMatchingHost\n };\n };\n _proto.onErrorOut = function onErrorOut(event, data) {\n var _data$errorAction;\n switch ((_data$errorAction = data.errorAction) == null ? void 0 : _data$errorAction.action) {\n case NetworkErrorAction.DoNothing:\n break;\n case NetworkErrorAction.SendAlternateToPenaltyBox:\n this.sendAlternateToPenaltyBox(data);\n if (!data.errorAction.resolved && data.details !== ErrorDetails.FRAG_GAP) {\n data.fatal = true;\n } else if (/MediaSource readyState: ended/.test(data.error.message)) {\n this.warn(\"MediaSource ended after \\\"\" + data.sourceBufferName + \"\\\" sourceBuffer append error. Attempting to recover from media error.\");\n this.hls.recoverMediaError();\n }\n break;\n }\n if (data.fatal) {\n this.hls.stopLoad();\n return;\n }\n };\n _proto.sendAlternateToPenaltyBox = function sendAlternateToPenaltyBox(data) {\n var hls = this.hls;\n var errorAction = data.errorAction;\n if (!errorAction) {\n return;\n }\n var flags = errorAction.flags,\n hdcpLevel = errorAction.hdcpLevel,\n nextAutoLevel = errorAction.nextAutoLevel;\n switch (flags) {\n case ErrorActionFlags.None:\n this.switchLevel(data, nextAutoLevel);\n break;\n case ErrorActionFlags.MoveAllAlternatesMatchingHDCP:\n if (hdcpLevel) {\n hls.maxHdcpLevel = HdcpLevels[HdcpLevels.indexOf(hdcpLevel) - 1];\n errorAction.resolved = true;\n }\n this.warn(\"Restricting playback to HDCP-LEVEL of \\\"\" + hls.maxHdcpLevel + \"\\\" or lower\");\n break;\n }\n // If not resolved by previous actions try to switch to next level\n if (!errorAction.resolved) {\n this.switchLevel(data, nextAutoLevel);\n }\n };\n _proto.switchLevel = function switchLevel(data, levelIndex) {\n if (levelIndex !== undefined && data.errorAction) {\n this.warn(\"switching to level \" + levelIndex + \" after \" + data.details);\n this.hls.nextAutoLevel = levelIndex;\n data.errorAction.resolved = true;\n // Stream controller is responsible for this but won't switch on false start\n this.hls.nextLoadLevel = this.hls.nextAutoLevel;\n }\n };\n return ErrorController;\n }();\n\n var BasePlaylistController = /*#__PURE__*/function () {\n function BasePlaylistController(hls, logPrefix) {\n this.hls = void 0;\n this.timer = -1;\n this.requestScheduled = -1;\n this.canLoad = false;\n this.log = void 0;\n this.warn = void 0;\n this.log = logger.log.bind(logger, logPrefix + \":\");\n this.warn = logger.warn.bind(logger, logPrefix + \":\");\n this.hls = hls;\n }\n var _proto = BasePlaylistController.prototype;\n _proto.destroy = function destroy() {\n this.clearTimer();\n // @ts-ignore\n this.hls = this.log = this.warn = null;\n };\n _proto.clearTimer = function clearTimer() {\n if (this.timer !== -1) {\n self.clearTimeout(this.timer);\n this.timer = -1;\n }\n };\n _proto.startLoad = function startLoad() {\n this.canLoad = true;\n this.requestScheduled = -1;\n this.loadPlaylist();\n };\n _proto.stopLoad = function stopLoad() {\n this.canLoad = false;\n this.clearTimer();\n };\n _proto.switchParams = function switchParams(playlistUri, previous, current) {\n var renditionReports = previous == null ? void 0 : previous.renditionReports;\n if (renditionReports) {\n var foundIndex = -1;\n for (var i = 0; i < renditionReports.length; i++) {\n var attr = renditionReports[i];\n var uri = void 0;\n try {\n uri = new self.URL(attr.URI, previous.url).href;\n } catch (error) {\n logger.warn(\"Could not construct new URL for Rendition Report: \" + error);\n uri = attr.URI || '';\n }\n // Use exact match. Otherwise, the last partial match, if any, will be used\n // (Playlist URI includes a query string that the Rendition Report does not)\n if (uri === playlistUri) {\n foundIndex = i;\n break;\n } else if (uri === playlistUri.substring(0, uri.length)) {\n foundIndex = i;\n }\n }\n if (foundIndex !== -1) {\n var _attr = renditionReports[foundIndex];\n var msn = parseInt(_attr['LAST-MSN']) || (previous == null ? void 0 : previous.lastPartSn);\n var part = parseInt(_attr['LAST-PART']) || (previous == null ? void 0 : previous.lastPartIndex);\n if (this.hls.config.lowLatencyMode) {\n var currentGoal = Math.min(previous.age - previous.partTarget, previous.targetduration);\n if (part >= 0 && currentGoal > previous.partTarget) {\n part += 1;\n }\n }\n var skip = current && getSkipValue(current);\n return new HlsUrlParameters(msn, part >= 0 ? part : undefined, skip);\n }\n }\n };\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n if (this.requestScheduled === -1) {\n this.requestScheduled = self.performance.now();\n }\n // Loading is handled by the subclasses\n };\n _proto.shouldLoadPlaylist = function shouldLoadPlaylist(playlist) {\n return this.canLoad && !!playlist && !!playlist.url && (!playlist.details || playlist.details.live);\n };\n _proto.shouldReloadPlaylist = function shouldReloadPlaylist(playlist) {\n return this.timer === -1 && this.requestScheduled === -1 && this.shouldLoadPlaylist(playlist);\n };\n _proto.playlistLoaded = function playlistLoaded(index, data, previousDetails) {\n var _this = this;\n var details = data.details,\n stats = data.stats;\n\n // Set last updated date-time\n var now = self.performance.now();\n var elapsed = stats.loading.first ? Math.max(0, now - stats.loading.first) : 0;\n details.advancedDateTime = Date.now() - elapsed;\n\n // if current playlist is a live playlist, arm a timer to reload it\n if (details.live || previousDetails != null && previousDetails.live) {\n details.reloaded(previousDetails);\n if (previousDetails) {\n this.log(\"live playlist \" + index + \" \" + (details.advanced ? 'REFRESHED ' + details.lastPartSn + '-' + details.lastPartIndex : details.updated ? 'UPDATED' : 'MISSED'));\n }\n // Merge live playlists to adjust fragment starts and fill in delta playlist skipped segments\n if (previousDetails && details.fragments.length > 0) {\n mergeDetails(previousDetails, details);\n }\n if (!this.canLoad || !details.live) {\n return;\n }\n var deliveryDirectives;\n var msn = undefined;\n var part = undefined;\n if (details.canBlockReload && details.endSN && details.advanced) {\n // Load level with LL-HLS delivery directives\n var lowLatencyMode = this.hls.config.lowLatencyMode;\n var lastPartSn = details.lastPartSn;\n var endSn = details.endSN;\n var lastPartIndex = details.lastPartIndex;\n var hasParts = lastPartIndex !== -1;\n var lastPart = lastPartSn === endSn;\n // When low latency mode is disabled, we'll skip part requests once the last part index is found\n var nextSnStartIndex = lowLatencyMode ? 0 : lastPartIndex;\n if (hasParts) {\n msn = lastPart ? endSn + 1 : lastPartSn;\n part = lastPart ? nextSnStartIndex : lastPartIndex + 1;\n } else {\n msn = endSn + 1;\n }\n // Low-Latency CDN Tune-in: \"age\" header and time since load indicates we're behind by more than one part\n // Update directives to obtain the Playlist that has the estimated additional duration of media\n var lastAdvanced = details.age;\n var cdnAge = lastAdvanced + details.ageHeader;\n var currentGoal = Math.min(cdnAge - details.partTarget, details.targetduration * 1.5);\n if (currentGoal > 0) {\n if (previousDetails && currentGoal > previousDetails.tuneInGoal) {\n // If we attempted to get the next or latest playlist update, but currentGoal increased,\n // then we either can't catchup, or the \"age\" header cannot be trusted.\n this.warn(\"CDN Tune-in goal increased from: \" + previousDetails.tuneInGoal + \" to: \" + currentGoal + \" with playlist age: \" + details.age);\n currentGoal = 0;\n } else {\n var segments = Math.floor(currentGoal / details.targetduration);\n msn += segments;\n if (part !== undefined) {\n var parts = Math.round(currentGoal % details.targetduration / details.partTarget);\n part += parts;\n }\n this.log(\"CDN Tune-in age: \" + details.ageHeader + \"s last advanced \" + lastAdvanced.toFixed(2) + \"s goal: \" + currentGoal + \" skip sn \" + segments + \" to part \" + part);\n }\n details.tuneInGoal = currentGoal;\n }\n deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n if (lowLatencyMode || !lastPart) {\n this.loadPlaylist(deliveryDirectives);\n return;\n }\n } else if (details.canBlockReload || details.canSkipUntil) {\n deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n }\n var bufferInfo = this.hls.mainForwardBufferInfo;\n var position = bufferInfo ? bufferInfo.end - bufferInfo.len : 0;\n var distanceToLiveEdgeMs = (details.edge - position) * 1000;\n var reloadInterval = computeReloadInterval(details, distanceToLiveEdgeMs);\n if (details.updated && now > this.requestScheduled + reloadInterval) {\n this.requestScheduled = stats.loading.start;\n }\n if (msn !== undefined && details.canBlockReload) {\n this.requestScheduled = stats.loading.first + reloadInterval - (details.partTarget * 1000 || 1000);\n } else if (this.requestScheduled === -1 || this.requestScheduled + reloadInterval < now) {\n this.requestScheduled = now;\n } else if (this.requestScheduled - now <= 0) {\n this.requestScheduled += reloadInterval;\n }\n var estimatedTimeUntilUpdate = this.requestScheduled - now;\n estimatedTimeUntilUpdate = Math.max(0, estimatedTimeUntilUpdate);\n this.log(\"reload live playlist \" + index + \" in \" + Math.round(estimatedTimeUntilUpdate) + \" ms\");\n // this.log(\n // `live reload ${details.updated ? 'REFRESHED' : 'MISSED'}\n // reload in ${estimatedTimeUntilUpdate / 1000}\n // round trip ${(stats.loading.end - stats.loading.start) / 1000}\n // diff ${\n // (reloadInterval -\n // (estimatedTimeUntilUpdate +\n // stats.loading.end -\n // stats.loading.start)) /\n // 1000\n // }\n // reload interval ${reloadInterval / 1000}\n // target duration ${details.targetduration}\n // distance to edge ${distanceToLiveEdgeMs / 1000}`\n // );\n\n this.timer = self.setTimeout(function () {\n return _this.loadPlaylist(deliveryDirectives);\n }, estimatedTimeUntilUpdate);\n } else {\n this.clearTimer();\n }\n };\n _proto.getDeliveryDirectives = function getDeliveryDirectives(details, previousDeliveryDirectives, msn, part) {\n var skip = getSkipValue(details);\n if (previousDeliveryDirectives != null && previousDeliveryDirectives.skip && details.deltaUpdateFailed) {\n msn = previousDeliveryDirectives.msn;\n part = previousDeliveryDirectives.part;\n skip = HlsSkip.No;\n }\n return new HlsUrlParameters(msn, part, skip);\n };\n _proto.checkRetry = function checkRetry(errorEvent) {\n var _this2 = this;\n var errorDetails = errorEvent.details;\n var isTimeout = isTimeoutError(errorEvent);\n var errorAction = errorEvent.errorAction;\n var _ref = errorAction || {},\n action = _ref.action,\n _ref$retryCount = _ref.retryCount,\n retryCount = _ref$retryCount === void 0 ? 0 : _ref$retryCount,\n retryConfig = _ref.retryConfig;\n var retry = !!errorAction && !!retryConfig && (action === NetworkErrorAction.RetryRequest || !errorAction.resolved && action === NetworkErrorAction.SendAlternateToPenaltyBox);\n if (retry) {\n var _errorEvent$context;\n this.requestScheduled = -1;\n if (retryCount >= retryConfig.maxNumRetry) {\n return false;\n }\n if (isTimeout && (_errorEvent$context = errorEvent.context) != null && _errorEvent$context.deliveryDirectives) {\n // The LL-HLS request already timed out so retry immediately\n this.warn(\"Retrying playlist loading \" + (retryCount + 1) + \"/\" + retryConfig.maxNumRetry + \" after \\\"\" + errorDetails + \"\\\" without delivery-directives\");\n this.loadPlaylist();\n } else {\n var delay = getRetryDelay(retryConfig, retryCount);\n // Schedule level/track reload\n this.timer = self.setTimeout(function () {\n return _this2.loadPlaylist();\n }, delay);\n this.warn(\"Retrying playlist loading \" + (retryCount + 1) + \"/\" + retryConfig.maxNumRetry + \" after \\\"\" + errorDetails + \"\\\" in \" + delay + \"ms\");\n }\n // `levelRetry = true` used to inform other controllers that a retry is happening\n errorEvent.levelRetry = true;\n errorAction.resolved = true;\n }\n return retry;\n };\n return BasePlaylistController;\n }();\n\n /*\n * compute an Exponential Weighted moving average\n * - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average\n * - heavily inspired from shaka-player\n */\n var EWMA = /*#__PURE__*/function () {\n // About half of the estimated value will be from the last |halfLife| samples by weight.\n function EWMA(halfLife, estimate, weight) {\n if (estimate === void 0) {\n estimate = 0;\n }\n if (weight === void 0) {\n weight = 0;\n }\n this.halfLife = void 0;\n this.alpha_ = void 0;\n this.estimate_ = void 0;\n this.totalWeight_ = void 0;\n this.halfLife = halfLife;\n // Larger values of alpha expire historical data more slowly.\n this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0;\n this.estimate_ = estimate;\n this.totalWeight_ = weight;\n }\n var _proto = EWMA.prototype;\n _proto.sample = function sample(weight, value) {\n var adjAlpha = Math.pow(this.alpha_, weight);\n this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_;\n this.totalWeight_ += weight;\n };\n _proto.getTotalWeight = function getTotalWeight() {\n return this.totalWeight_;\n };\n _proto.getEstimate = function getEstimate() {\n if (this.alpha_) {\n var zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_);\n if (zeroFactor) {\n return this.estimate_ / zeroFactor;\n }\n }\n return this.estimate_;\n };\n return EWMA;\n }();\n\n /*\n * EWMA Bandwidth Estimator\n * - heavily inspired from shaka-player\n * Tracks bandwidth samples and estimates available bandwidth.\n * Based on the minimum of two exponentially-weighted moving averages with\n * different half-lives.\n */\n\n var EwmaBandWidthEstimator = /*#__PURE__*/function () {\n function EwmaBandWidthEstimator(slow, fast, defaultEstimate, defaultTTFB) {\n if (defaultTTFB === void 0) {\n defaultTTFB = 100;\n }\n this.defaultEstimate_ = void 0;\n this.minWeight_ = void 0;\n this.minDelayMs_ = void 0;\n this.slow_ = void 0;\n this.fast_ = void 0;\n this.defaultTTFB_ = void 0;\n this.ttfb_ = void 0;\n this.defaultEstimate_ = defaultEstimate;\n this.minWeight_ = 0.001;\n this.minDelayMs_ = 50;\n this.slow_ = new EWMA(slow);\n this.fast_ = new EWMA(fast);\n this.defaultTTFB_ = defaultTTFB;\n this.ttfb_ = new EWMA(slow);\n }\n var _proto = EwmaBandWidthEstimator.prototype;\n _proto.update = function update(slow, fast) {\n var slow_ = this.slow_,\n fast_ = this.fast_,\n ttfb_ = this.ttfb_;\n if (slow_.halfLife !== slow) {\n this.slow_ = new EWMA(slow, slow_.getEstimate(), slow_.getTotalWeight());\n }\n if (fast_.halfLife !== fast) {\n this.fast_ = new EWMA(fast, fast_.getEstimate(), fast_.getTotalWeight());\n }\n if (ttfb_.halfLife !== slow) {\n this.ttfb_ = new EWMA(slow, ttfb_.getEstimate(), ttfb_.getTotalWeight());\n }\n };\n _proto.sample = function sample(durationMs, numBytes) {\n durationMs = Math.max(durationMs, this.minDelayMs_);\n var numBits = 8 * numBytes;\n // weight is duration in seconds\n var durationS = durationMs / 1000;\n // value is bandwidth in bits/s\n var bandwidthInBps = numBits / durationS;\n this.fast_.sample(durationS, bandwidthInBps);\n this.slow_.sample(durationS, bandwidthInBps);\n };\n _proto.sampleTTFB = function sampleTTFB(ttfb) {\n // weight is frequency curve applied to TTFB in seconds\n // (longer times have less weight with expected input under 1 second)\n var seconds = ttfb / 1000;\n var weight = Math.sqrt(2) * Math.exp(-Math.pow(seconds, 2) / 2);\n this.ttfb_.sample(weight, Math.max(ttfb, 5));\n };\n _proto.canEstimate = function canEstimate() {\n return this.fast_.getTotalWeight() >= this.minWeight_;\n };\n _proto.getEstimate = function getEstimate() {\n if (this.canEstimate()) {\n // console.log('slow estimate:'+ Math.round(this.slow_.getEstimate()));\n // console.log('fast estimate:'+ Math.round(this.fast_.getEstimate()));\n // Take the minimum of these two estimates. This should have the effect of\n // adapting down quickly, but up more slowly.\n return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate());\n } else {\n return this.defaultEstimate_;\n }\n };\n _proto.getEstimateTTFB = function getEstimateTTFB() {\n if (this.ttfb_.getTotalWeight() >= this.minWeight_) {\n return this.ttfb_.getEstimate();\n } else {\n return this.defaultTTFB_;\n }\n };\n _proto.destroy = function destroy() {};\n return EwmaBandWidthEstimator;\n }();\n\n var SUPPORTED_INFO_DEFAULT = {\n supported: true,\n configurations: [],\n decodingInfoResults: [{\n supported: true,\n powerEfficient: true,\n smooth: true\n }]\n };\n var SUPPORTED_INFO_CACHE = {};\n function requiresMediaCapabilitiesDecodingInfo(level, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference) {\n // Only test support when configuration is exceeds minimum options\n var audioGroups = level.audioCodec ? level.audioGroups : null;\n var audioCodecPreference = audioPreference == null ? void 0 : audioPreference.audioCodec;\n var channelsPreference = audioPreference == null ? void 0 : audioPreference.channels;\n var maxChannels = channelsPreference ? parseInt(channelsPreference) : audioCodecPreference ? Infinity : 2;\n var audioChannels = null;\n if (audioGroups != null && audioGroups.length) {\n try {\n if (audioGroups.length === 1 && audioGroups[0]) {\n audioChannels = audioTracksByGroup.groups[audioGroups[0]].channels;\n } else {\n audioChannels = audioGroups.reduce(function (acc, groupId) {\n if (groupId) {\n var audioTrackGroup = audioTracksByGroup.groups[groupId];\n if (!audioTrackGroup) {\n throw new Error(\"Audio track group \" + groupId + \" not found\");\n }\n // Sum all channel key values\n Object.keys(audioTrackGroup.channels).forEach(function (key) {\n acc[key] = (acc[key] || 0) + audioTrackGroup.channels[key];\n });\n }\n return acc;\n }, {\n 2: 0\n });\n }\n } catch (error) {\n return true;\n }\n }\n return level.videoCodec !== undefined && (level.width > 1920 && level.height > 1088 || level.height > 1920 && level.width > 1088 || level.frameRate > Math.max(currentFrameRate, 30) || level.videoRange !== 'SDR' && level.videoRange !== currentVideoRange || level.bitrate > Math.max(currentBw, 8e6)) || !!audioChannels && isFiniteNumber(maxChannels) && Object.keys(audioChannels).some(function (channels) {\n return parseInt(channels) > maxChannels;\n });\n }\n function getMediaDecodingInfoPromise(level, audioTracksByGroup, mediaCapabilities) {\n var videoCodecs = level.videoCodec;\n var audioCodecs = level.audioCodec;\n if (!videoCodecs || !audioCodecs || !mediaCapabilities) {\n return Promise.resolve(SUPPORTED_INFO_DEFAULT);\n }\n var baseVideoConfiguration = {\n width: level.width,\n height: level.height,\n bitrate: Math.ceil(Math.max(level.bitrate * 0.9, level.averageBitrate)),\n // Assume a framerate of 30fps since MediaCapabilities will not accept Level default of 0.\n framerate: level.frameRate || 30\n };\n var videoRange = level.videoRange;\n if (videoRange !== 'SDR') {\n baseVideoConfiguration.transferFunction = videoRange.toLowerCase();\n }\n var configurations = videoCodecs.split(',').map(function (videoCodec) {\n return {\n type: 'media-source',\n video: _objectSpread2(_objectSpread2({}, baseVideoConfiguration), {}, {\n contentType: mimeTypeForCodec(videoCodec, 'video')\n })\n };\n });\n if (audioCodecs && level.audioGroups) {\n level.audioGroups.forEach(function (audioGroupId) {\n var _audioTracksByGroup$g;\n if (!audioGroupId) {\n return;\n }\n (_audioTracksByGroup$g = audioTracksByGroup.groups[audioGroupId]) == null ? void 0 : _audioTracksByGroup$g.tracks.forEach(function (audioTrack) {\n if (audioTrack.groupId === audioGroupId) {\n var channels = audioTrack.channels || '';\n var channelsNumber = parseFloat(channels);\n if (isFiniteNumber(channelsNumber) && channelsNumber > 2) {\n configurations.push.apply(configurations, audioCodecs.split(',').map(function (audioCodec) {\n return {\n type: 'media-source',\n audio: {\n contentType: mimeTypeForCodec(audioCodec, 'audio'),\n channels: '' + channelsNumber\n // spatialRendering:\n // audioCodec === 'ec-3' && channels.indexOf('JOC'),\n }\n };\n }));\n }\n }\n });\n });\n }\n return Promise.all(configurations.map(function (configuration) {\n // Cache MediaCapabilities promises\n var decodingInfoKey = getMediaDecodingInfoKey(configuration);\n return SUPPORTED_INFO_CACHE[decodingInfoKey] || (SUPPORTED_INFO_CACHE[decodingInfoKey] = mediaCapabilities.decodingInfo(configuration));\n })).then(function (decodingInfoResults) {\n return {\n supported: !decodingInfoResults.some(function (info) {\n return !info.supported;\n }),\n configurations: configurations,\n decodingInfoResults: decodingInfoResults\n };\n }).catch(function (error) {\n return {\n supported: false,\n configurations: configurations,\n decodingInfoResults: [],\n error: error\n };\n });\n }\n function getMediaDecodingInfoKey(config) {\n var audio = config.audio,\n video = config.video;\n var mediaConfig = video || audio;\n if (mediaConfig) {\n var codec = mediaConfig.contentType.split('\"')[1];\n if (video) {\n return \"r\" + video.height + \"x\" + video.width + \"f\" + Math.ceil(video.framerate) + (video.transferFunction || 'sd') + \"_\" + codec + \"_\" + Math.ceil(video.bitrate / 1e5);\n }\n if (audio) {\n return \"c\" + audio.channels + (audio.spatialRendering ? 's' : 'n') + \"_\" + codec;\n }\n }\n return '';\n }\n\n /**\n * @returns Whether we can detect and validate HDR capability within the window context\n */\n function isHdrSupported() {\n if (typeof matchMedia === 'function') {\n var mediaQueryList = matchMedia('(dynamic-range: high)');\n var badQuery = matchMedia('bad query');\n if (mediaQueryList.media !== badQuery.media) {\n return mediaQueryList.matches === true;\n }\n }\n return false;\n }\n\n /**\n * Sanitizes inputs to return the active video selection options for HDR/SDR.\n * When both inputs are null:\n *\n * `{ preferHDR: false, allowedVideoRanges: [] }`\n *\n * When `currentVideoRange` non-null, maintain the active range:\n *\n * `{ preferHDR: currentVideoRange !== 'SDR', allowedVideoRanges: [currentVideoRange] }`\n *\n * When VideoSelectionOption non-null:\n *\n * - Allow all video ranges if `allowedVideoRanges` unspecified.\n * - If `preferHDR` is non-null use the value to filter `allowedVideoRanges`.\n * - Else check window for HDR support and set `preferHDR` to the result.\n *\n * @param currentVideoRange\n * @param videoPreference\n */\n function getVideoSelectionOptions(currentVideoRange, videoPreference) {\n var preferHDR = false;\n var allowedVideoRanges = [];\n if (currentVideoRange) {\n preferHDR = currentVideoRange !== 'SDR';\n allowedVideoRanges = [currentVideoRange];\n }\n if (videoPreference) {\n allowedVideoRanges = videoPreference.allowedVideoRanges || VideoRangeValues.slice(0);\n preferHDR = videoPreference.preferHDR !== undefined ? videoPreference.preferHDR : isHdrSupported();\n if (preferHDR) {\n allowedVideoRanges = allowedVideoRanges.filter(function (range) {\n return range !== 'SDR';\n });\n } else {\n allowedVideoRanges = ['SDR'];\n }\n }\n return {\n preferHDR: preferHDR,\n allowedVideoRanges: allowedVideoRanges\n };\n }\n\n function getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference) {\n var codecSets = Object.keys(codecTiers);\n var channelsPreference = audioPreference == null ? void 0 : audioPreference.channels;\n var audioCodecPreference = audioPreference == null ? void 0 : audioPreference.audioCodec;\n var preferStereo = channelsPreference && parseInt(channelsPreference) === 2;\n // Use first level set to determine stereo, and minimum resolution and framerate\n var hasStereo = true;\n var hasCurrentVideoRange = false;\n var minHeight = Infinity;\n var minFramerate = Infinity;\n var minBitrate = Infinity;\n var selectedScore = 0;\n var videoRanges = [];\n var _getVideoSelectionOpt = getVideoSelectionOptions(currentVideoRange, videoPreference),\n preferHDR = _getVideoSelectionOpt.preferHDR,\n allowedVideoRanges = _getVideoSelectionOpt.allowedVideoRanges;\n var _loop = function _loop() {\n var tier = codecTiers[codecSets[i]];\n hasStereo = tier.channels[2] > 0;\n minHeight = Math.min(minHeight, tier.minHeight);\n minFramerate = Math.min(minFramerate, tier.minFramerate);\n minBitrate = Math.min(minBitrate, tier.minBitrate);\n var matchingVideoRanges = allowedVideoRanges.filter(function (range) {\n return tier.videoRanges[range] > 0;\n });\n if (matchingVideoRanges.length > 0) {\n hasCurrentVideoRange = true;\n videoRanges = matchingVideoRanges;\n }\n };\n for (var i = codecSets.length; i--;) {\n _loop();\n }\n minHeight = isFiniteNumber(minHeight) ? minHeight : 0;\n minFramerate = isFiniteNumber(minFramerate) ? minFramerate : 0;\n var maxHeight = Math.max(1080, minHeight);\n var maxFramerate = Math.max(30, minFramerate);\n minBitrate = isFiniteNumber(minBitrate) ? minBitrate : currentBw;\n currentBw = Math.max(minBitrate, currentBw);\n // If there are no variants with matching preference, set currentVideoRange to undefined\n if (!hasCurrentVideoRange) {\n currentVideoRange = undefined;\n videoRanges = [];\n }\n var codecSet = codecSets.reduce(function (selected, candidate) {\n // Remove candiates which do not meet bitrate, default audio, stereo or channels preference, 1080p or lower, 30fps or lower, or SDR/HDR selection if present\n var candidateTier = codecTiers[candidate];\n if (candidate === selected) {\n return selected;\n }\n if (candidateTier.minBitrate > currentBw) {\n logStartCodecCandidateIgnored(candidate, \"min bitrate of \" + candidateTier.minBitrate + \" > current estimate of \" + currentBw);\n return selected;\n }\n if (!candidateTier.hasDefaultAudio) {\n logStartCodecCandidateIgnored(candidate, \"no renditions with default or auto-select sound found\");\n return selected;\n }\n if (audioCodecPreference && candidate.indexOf(audioCodecPreference.substring(0, 4)) % 5 !== 0) {\n logStartCodecCandidateIgnored(candidate, \"audio codec preference \\\"\" + audioCodecPreference + \"\\\" not found\");\n return selected;\n }\n if (channelsPreference && !preferStereo) {\n if (!candidateTier.channels[channelsPreference]) {\n logStartCodecCandidateIgnored(candidate, \"no renditions with \" + channelsPreference + \" channel sound found (channels options: \" + Object.keys(candidateTier.channels) + \")\");\n return selected;\n }\n } else if ((!audioCodecPreference || preferStereo) && hasStereo && candidateTier.channels['2'] === 0) {\n logStartCodecCandidateIgnored(candidate, \"no renditions with stereo sound found\");\n return selected;\n }\n if (candidateTier.minHeight > maxHeight) {\n logStartCodecCandidateIgnored(candidate, \"min resolution of \" + candidateTier.minHeight + \" > maximum of \" + maxHeight);\n return selected;\n }\n if (candidateTier.minFramerate > maxFramerate) {\n logStartCodecCandidateIgnored(candidate, \"min framerate of \" + candidateTier.minFramerate + \" > maximum of \" + maxFramerate);\n return selected;\n }\n if (!videoRanges.some(function (range) {\n return candidateTier.videoRanges[range] > 0;\n })) {\n logStartCodecCandidateIgnored(candidate, \"no variants with VIDEO-RANGE of \" + JSON.stringify(videoRanges) + \" found\");\n return selected;\n }\n if (candidateTier.maxScore < selectedScore) {\n logStartCodecCandidateIgnored(candidate, \"max score of \" + candidateTier.maxScore + \" < selected max of \" + selectedScore);\n return selected;\n }\n // Remove candiates with less preferred codecs or more errors\n if (selected && (codecsSetSelectionPreferenceValue(candidate) >= codecsSetSelectionPreferenceValue(selected) || candidateTier.fragmentError > codecTiers[selected].fragmentError)) {\n return selected;\n }\n selectedScore = candidateTier.maxScore;\n return candidate;\n }, undefined);\n return {\n codecSet: codecSet,\n videoRanges: videoRanges,\n preferHDR: preferHDR,\n minFramerate: minFramerate,\n minBitrate: minBitrate\n };\n }\n function logStartCodecCandidateIgnored(codeSet, reason) {\n logger.log(\"[abr] start candidates with \\\"\" + codeSet + \"\\\" ignored because \" + reason);\n }\n function getAudioTracksByGroup(allAudioTracks) {\n return allAudioTracks.reduce(function (audioTracksByGroup, track) {\n var trackGroup = audioTracksByGroup.groups[track.groupId];\n if (!trackGroup) {\n trackGroup = audioTracksByGroup.groups[track.groupId] = {\n tracks: [],\n channels: {\n 2: 0\n },\n hasDefault: false,\n hasAutoSelect: false\n };\n }\n trackGroup.tracks.push(track);\n var channelsKey = track.channels || '2';\n trackGroup.channels[channelsKey] = (trackGroup.channels[channelsKey] || 0) + 1;\n trackGroup.hasDefault = trackGroup.hasDefault || track.default;\n trackGroup.hasAutoSelect = trackGroup.hasAutoSelect || track.autoselect;\n if (trackGroup.hasDefault) {\n audioTracksByGroup.hasDefaultAudio = true;\n }\n if (trackGroup.hasAutoSelect) {\n audioTracksByGroup.hasAutoSelectAudio = true;\n }\n return audioTracksByGroup;\n }, {\n hasDefaultAudio: false,\n hasAutoSelectAudio: false,\n groups: {}\n });\n }\n function getCodecTiers(levels, audioTracksByGroup, minAutoLevel, maxAutoLevel) {\n return levels.slice(minAutoLevel, maxAutoLevel + 1).reduce(function (tiers, level) {\n if (!level.codecSet) {\n return tiers;\n }\n var audioGroups = level.audioGroups;\n var tier = tiers[level.codecSet];\n if (!tier) {\n tiers[level.codecSet] = tier = {\n minBitrate: Infinity,\n minHeight: Infinity,\n minFramerate: Infinity,\n maxScore: 0,\n videoRanges: {\n SDR: 0\n },\n channels: {\n '2': 0\n },\n hasDefaultAudio: !audioGroups,\n fragmentError: 0\n };\n }\n tier.minBitrate = Math.min(tier.minBitrate, level.bitrate);\n var lesserWidthOrHeight = Math.min(level.height, level.width);\n tier.minHeight = Math.min(tier.minHeight, lesserWidthOrHeight);\n tier.minFramerate = Math.min(tier.minFramerate, level.frameRate);\n tier.maxScore = Math.max(tier.maxScore, level.score);\n tier.fragmentError += level.fragmentError;\n tier.videoRanges[level.videoRange] = (tier.videoRanges[level.videoRange] || 0) + 1;\n if (audioGroups) {\n audioGroups.forEach(function (audioGroupId) {\n if (!audioGroupId) {\n return;\n }\n var audioGroup = audioTracksByGroup.groups[audioGroupId];\n if (!audioGroup) {\n return;\n }\n // Default audio is any group with DEFAULT=YES, or if missing then any group with AUTOSELECT=YES, or all variants\n tier.hasDefaultAudio = tier.hasDefaultAudio || audioTracksByGroup.hasDefaultAudio ? audioGroup.hasDefault : audioGroup.hasAutoSelect || !audioTracksByGroup.hasDefaultAudio && !audioTracksByGroup.hasAutoSelectAudio;\n Object.keys(audioGroup.channels).forEach(function (channels) {\n tier.channels[channels] = (tier.channels[channels] || 0) + audioGroup.channels[channels];\n });\n });\n }\n return tiers;\n }, {});\n }\n function findMatchingOption(option, tracks, matchPredicate) {\n if ('attrs' in option) {\n var index = tracks.indexOf(option);\n if (index !== -1) {\n return index;\n }\n }\n for (var i = 0; i < tracks.length; i++) {\n var _track = tracks[i];\n if (matchesOption(option, _track, matchPredicate)) {\n return i;\n }\n }\n return -1;\n }\n function matchesOption(option, track, matchPredicate) {\n var groupId = option.groupId,\n name = option.name,\n lang = option.lang,\n assocLang = option.assocLang,\n characteristics = option.characteristics,\n isDefault = option.default;\n var forced = option.forced;\n return (groupId === undefined || track.groupId === groupId) && (name === undefined || track.name === name) && (lang === undefined || track.lang === lang) && (lang === undefined || track.assocLang === assocLang) && (isDefault === undefined || track.default === isDefault) && (forced === undefined || track.forced === forced) && (characteristics === undefined || characteristicsMatch(characteristics, track.characteristics)) && (matchPredicate === undefined || matchPredicate(option, track));\n }\n function characteristicsMatch(characteristicsA, characteristicsB) {\n if (characteristicsB === void 0) {\n characteristicsB = '';\n }\n var arrA = characteristicsA.split(',');\n var arrB = characteristicsB.split(',');\n // Expects each item to be unique:\n return arrA.length === arrB.length && !arrA.some(function (el) {\n return arrB.indexOf(el) === -1;\n });\n }\n function audioMatchPredicate(option, track) {\n var audioCodec = option.audioCodec,\n channels = option.channels;\n return (audioCodec === undefined || (track.audioCodec || '').substring(0, 4) === audioCodec.substring(0, 4)) && (channels === undefined || channels === (track.channels || '2'));\n }\n function findClosestLevelWithAudioGroup(option, levels, allAudioTracks, searchIndex, matchPredicate) {\n var currentLevel = levels[searchIndex];\n // Are there variants with same URI as current level?\n // If so, find a match that does not require any level URI change\n var variants = levels.reduce(function (variantMap, level, index) {\n var uri = level.uri;\n var renditions = variantMap[uri] || (variantMap[uri] = []);\n renditions.push(index);\n return variantMap;\n }, {});\n var renditions = variants[currentLevel.uri];\n if (renditions.length > 1) {\n searchIndex = Math.max.apply(Math, renditions);\n }\n // Find best match\n var currentVideoRange = currentLevel.videoRange;\n var currentFrameRate = currentLevel.frameRate;\n var currentVideoCodec = currentLevel.codecSet.substring(0, 4);\n var matchingVideo = searchDownAndUpList(levels, searchIndex, function (level) {\n if (level.videoRange !== currentVideoRange || level.frameRate !== currentFrameRate || level.codecSet.substring(0, 4) !== currentVideoCodec) {\n return false;\n }\n var audioGroups = level.audioGroups;\n var tracks = allAudioTracks.filter(function (track) {\n return !audioGroups || audioGroups.indexOf(track.groupId) !== -1;\n });\n return findMatchingOption(option, tracks, matchPredicate) > -1;\n });\n if (matchingVideo > -1) {\n return matchingVideo;\n }\n return searchDownAndUpList(levels, searchIndex, function (level) {\n var audioGroups = level.audioGroups;\n var tracks = allAudioTracks.filter(function (track) {\n return !audioGroups || audioGroups.indexOf(track.groupId) !== -1;\n });\n return findMatchingOption(option, tracks, matchPredicate) > -1;\n });\n }\n function searchDownAndUpList(arr, searchIndex, predicate) {\n for (var i = searchIndex; i; i--) {\n if (predicate(arr[i])) {\n return i;\n }\n }\n for (var _i = searchIndex + 1; _i < arr.length; _i++) {\n if (predicate(arr[_i])) {\n return _i;\n }\n }\n return -1;\n }\n\n var AbrController = /*#__PURE__*/function () {\n function AbrController(_hls) {\n var _this = this;\n this.hls = void 0;\n this.lastLevelLoadSec = 0;\n this.lastLoadedFragLevel = -1;\n this.firstSelection = -1;\n this._nextAutoLevel = -1;\n this.nextAutoLevelKey = '';\n this.audioTracksByGroup = null;\n this.codecTiers = null;\n this.timer = -1;\n this.fragCurrent = null;\n this.partCurrent = null;\n this.bitrateTestDelay = 0;\n this.bwEstimator = void 0;\n /*\n This method monitors the download rate of the current fragment, and will downswitch if that fragment will not load\n quickly enough to prevent underbuffering\n */\n this._abandonRulesCheck = function () {\n var frag = _this.fragCurrent,\n part = _this.partCurrent,\n hls = _this.hls;\n var autoLevelEnabled = hls.autoLevelEnabled,\n media = hls.media;\n if (!frag || !media) {\n return;\n }\n var now = performance.now();\n var stats = part ? part.stats : frag.stats;\n var duration = part ? part.duration : frag.duration;\n var timeLoading = now - stats.loading.start;\n var minAutoLevel = hls.minAutoLevel;\n // If frag loading is aborted, complete, or from lowest level, stop timer and return\n if (stats.aborted || stats.loaded && stats.loaded === stats.total || frag.level <= minAutoLevel) {\n _this.clearTimer();\n // reset forced auto level value so that next level will be selected\n _this._nextAutoLevel = -1;\n return;\n }\n\n // This check only runs if we're in ABR mode and actually playing\n if (!autoLevelEnabled || media.paused || !media.playbackRate || !media.readyState) {\n return;\n }\n var bufferInfo = hls.mainForwardBufferInfo;\n if (bufferInfo === null) {\n return;\n }\n var ttfbEstimate = _this.bwEstimator.getEstimateTTFB();\n var playbackRate = Math.abs(media.playbackRate);\n // To maintain stable adaptive playback, only begin monitoring frag loading after half or more of its playback duration has passed\n if (timeLoading <= Math.max(ttfbEstimate, 1000 * (duration / (playbackRate * 2)))) {\n return;\n }\n\n // bufferStarvationDelay is an estimate of the amount time (in seconds) it will take to exhaust the buffer\n var bufferStarvationDelay = bufferInfo.len / playbackRate;\n var ttfb = stats.loading.first ? stats.loading.first - stats.loading.start : -1;\n var loadedFirstByte = stats.loaded && ttfb > -1;\n var bwEstimate = _this.getBwEstimate();\n var levels = hls.levels;\n var level = levels[frag.level];\n var expectedLen = stats.total || Math.max(stats.loaded, Math.round(duration * level.averageBitrate / 8));\n var timeStreaming = loadedFirstByte ? timeLoading - ttfb : timeLoading;\n if (timeStreaming < 1 && loadedFirstByte) {\n timeStreaming = Math.min(timeLoading, stats.loaded * 8 / bwEstimate);\n }\n var loadRate = loadedFirstByte ? stats.loaded * 1000 / timeStreaming : 0;\n // fragLoadDelay is an estimate of the time (in seconds) it will take to buffer the remainder of the fragment\n var fragLoadedDelay = loadRate ? (expectedLen - stats.loaded) / loadRate : expectedLen * 8 / bwEstimate + ttfbEstimate / 1000;\n // Only downswitch if the time to finish loading the current fragment is greater than the amount of buffer left\n if (fragLoadedDelay <= bufferStarvationDelay) {\n return;\n }\n var bwe = loadRate ? loadRate * 8 : bwEstimate;\n var fragLevelNextLoadedDelay = Number.POSITIVE_INFINITY;\n var nextLoadLevel;\n // Iterate through lower level and try to find the largest one that avoids rebuffering\n for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) {\n // compute time to load next fragment at lower level\n // 8 = bits per byte (bps/Bps)\n var levelNextBitrate = levels[nextLoadLevel].maxBitrate;\n fragLevelNextLoadedDelay = _this.getTimeToLoadFrag(ttfbEstimate / 1000, bwe, duration * levelNextBitrate, !levels[nextLoadLevel].details);\n if (fragLevelNextLoadedDelay < bufferStarvationDelay) {\n break;\n }\n }\n // Only emergency switch down if it takes less time to load a new fragment at lowest level instead of continuing\n // to load the current one\n if (fragLevelNextLoadedDelay >= fragLoadedDelay) {\n return;\n }\n\n // if estimated load time of new segment is completely unreasonable, ignore and do not emergency switch down\n if (fragLevelNextLoadedDelay > duration * 10) {\n return;\n }\n hls.nextLoadLevel = hls.nextAutoLevel = nextLoadLevel;\n if (loadedFirstByte) {\n // If there has been loading progress, sample bandwidth using loading time offset by minimum TTFB time\n _this.bwEstimator.sample(timeLoading - Math.min(ttfbEstimate, ttfb), stats.loaded);\n } else {\n // If there has been no loading progress, sample TTFB\n _this.bwEstimator.sampleTTFB(timeLoading);\n }\n var nextLoadLevelBitrate = levels[nextLoadLevel].maxBitrate;\n if (_this.getBwEstimate() * _this.hls.config.abrBandWidthUpFactor > nextLoadLevelBitrate) {\n _this.resetEstimator(nextLoadLevelBitrate);\n }\n _this.clearTimer();\n logger.warn(\"[abr] Fragment \" + frag.sn + (part ? ' part ' + part.index : '') + \" of level \" + frag.level + \" is loading too slowly;\\n Time to underbuffer: \" + bufferStarvationDelay.toFixed(3) + \" s\\n Estimated load time for current fragment: \" + fragLoadedDelay.toFixed(3) + \" s\\n Estimated load time for down switch fragment: \" + fragLevelNextLoadedDelay.toFixed(3) + \" s\\n TTFB estimate: \" + (ttfb | 0) + \" ms\\n Current BW estimate: \" + (isFiniteNumber(bwEstimate) ? bwEstimate | 0 : 'Unknown') + \" bps\\n New BW estimate: \" + (_this.getBwEstimate() | 0) + \" bps\\n Switching to level \" + nextLoadLevel + \" @ \" + (nextLoadLevelBitrate | 0) + \" bps\");\n hls.trigger(Events.FRAG_LOAD_EMERGENCY_ABORTED, {\n frag: frag,\n part: part,\n stats: stats\n });\n };\n this.hls = _hls;\n this.bwEstimator = this.initEstimator();\n this.registerListeners();\n }\n var _proto = AbrController.prototype;\n _proto.resetEstimator = function resetEstimator(abrEwmaDefaultEstimate) {\n if (abrEwmaDefaultEstimate) {\n logger.log(\"setting initial bwe to \" + abrEwmaDefaultEstimate);\n this.hls.config.abrEwmaDefaultEstimate = abrEwmaDefaultEstimate;\n }\n this.firstSelection = -1;\n this.bwEstimator = this.initEstimator();\n };\n _proto.initEstimator = function initEstimator() {\n var config = this.hls.config;\n return new EwmaBandWidthEstimator(config.abrEwmaSlowVoD, config.abrEwmaFastVoD, config.abrEwmaDefaultEstimate);\n };\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.FRAG_LOADING, this.onFragLoading, this);\n hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(Events.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this);\n hls.on(Events.ERROR, this.onError, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n if (!hls) {\n return;\n }\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.FRAG_LOADING, this.onFragLoading, this);\n hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(Events.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this);\n hls.off(Events.ERROR, this.onError, this);\n };\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.clearTimer();\n // @ts-ignore\n this.hls = this._abandonRulesCheck = null;\n this.fragCurrent = this.partCurrent = null;\n };\n _proto.onManifestLoading = function onManifestLoading(event, data) {\n this.lastLoadedFragLevel = -1;\n this.firstSelection = -1;\n this.lastLevelLoadSec = 0;\n this.fragCurrent = this.partCurrent = null;\n this.onLevelsUpdated();\n this.clearTimer();\n };\n _proto.onLevelsUpdated = function onLevelsUpdated() {\n if (this.lastLoadedFragLevel > -1 && this.fragCurrent) {\n this.lastLoadedFragLevel = this.fragCurrent.level;\n }\n this._nextAutoLevel = -1;\n this.onMaxAutoLevelUpdated();\n this.codecTiers = null;\n this.audioTracksByGroup = null;\n };\n _proto.onMaxAutoLevelUpdated = function onMaxAutoLevelUpdated() {\n this.firstSelection = -1;\n this.nextAutoLevelKey = '';\n };\n _proto.onFragLoading = function onFragLoading(event, data) {\n var frag = data.frag;\n if (this.ignoreFragment(frag)) {\n return;\n }\n if (!frag.bitrateTest) {\n var _data$part;\n this.fragCurrent = frag;\n this.partCurrent = (_data$part = data.part) != null ? _data$part : null;\n }\n this.clearTimer();\n this.timer = self.setInterval(this._abandonRulesCheck, 100);\n };\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.clearTimer();\n };\n _proto.onError = function onError(event, data) {\n if (data.fatal) {\n return;\n }\n switch (data.details) {\n case ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n case ErrorDetails.BUFFER_APPEND_ERROR:\n // Reset last loaded level so that a new selection can be made after calling recoverMediaError\n this.lastLoadedFragLevel = -1;\n this.firstSelection = -1;\n break;\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n {\n var frag = data.frag;\n var fragCurrent = this.fragCurrent,\n part = this.partCurrent;\n if (frag && fragCurrent && frag.sn === fragCurrent.sn && frag.level === fragCurrent.level) {\n var now = performance.now();\n var stats = part ? part.stats : frag.stats;\n var timeLoading = now - stats.loading.start;\n var ttfb = stats.loading.first ? stats.loading.first - stats.loading.start : -1;\n var loadedFirstByte = stats.loaded && ttfb > -1;\n if (loadedFirstByte) {\n var ttfbEstimate = this.bwEstimator.getEstimateTTFB();\n this.bwEstimator.sample(timeLoading - Math.min(ttfbEstimate, ttfb), stats.loaded);\n } else {\n this.bwEstimator.sampleTTFB(timeLoading);\n }\n }\n break;\n }\n }\n };\n _proto.getTimeToLoadFrag = function getTimeToLoadFrag(timeToFirstByteSec, bandwidth, fragSizeBits, isSwitch) {\n var fragLoadSec = timeToFirstByteSec + fragSizeBits / bandwidth;\n var playlistLoadSec = isSwitch ? this.lastLevelLoadSec : 0;\n return fragLoadSec + playlistLoadSec;\n };\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var config = this.hls.config;\n var loading = data.stats.loading;\n var timeLoadingMs = loading.end - loading.start;\n if (isFiniteNumber(timeLoadingMs)) {\n this.lastLevelLoadSec = timeLoadingMs / 1000;\n }\n if (data.details.live) {\n this.bwEstimator.update(config.abrEwmaSlowLive, config.abrEwmaFastLive);\n } else {\n this.bwEstimator.update(config.abrEwmaSlowVoD, config.abrEwmaFastVoD);\n }\n };\n _proto.onFragLoaded = function onFragLoaded(event, _ref) {\n var frag = _ref.frag,\n part = _ref.part;\n var stats = part ? part.stats : frag.stats;\n if (frag.type === PlaylistLevelType.MAIN) {\n this.bwEstimator.sampleTTFB(stats.loading.first - stats.loading.start);\n }\n if (this.ignoreFragment(frag)) {\n return;\n }\n // stop monitoring bw once frag loaded\n this.clearTimer();\n // reset forced auto level value so that next level will be selected\n if (frag.level === this._nextAutoLevel) {\n this._nextAutoLevel = -1;\n }\n this.firstSelection = -1;\n\n // compute level average bitrate\n if (this.hls.config.abrMaxWithRealBitrate) {\n var duration = part ? part.duration : frag.duration;\n var level = this.hls.levels[frag.level];\n var loadedBytes = (level.loaded ? level.loaded.bytes : 0) + stats.loaded;\n var loadedDuration = (level.loaded ? level.loaded.duration : 0) + duration;\n level.loaded = {\n bytes: loadedBytes,\n duration: loadedDuration\n };\n level.realBitrate = Math.round(8 * loadedBytes / loadedDuration);\n }\n if (frag.bitrateTest) {\n var fragBufferedData = {\n stats: stats,\n frag: frag,\n part: part,\n id: frag.type\n };\n this.onFragBuffered(Events.FRAG_BUFFERED, fragBufferedData);\n frag.bitrateTest = false;\n } else {\n // store level id after successful fragment load for playback\n this.lastLoadedFragLevel = frag.level;\n }\n };\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n var stats = part != null && part.stats.loaded ? part.stats : frag.stats;\n if (stats.aborted) {\n return;\n }\n if (this.ignoreFragment(frag)) {\n return;\n }\n // Use the difference between parsing and request instead of buffering and request to compute fragLoadingProcessing;\n // rationale is that buffer appending only happens once media is attached. This can happen when config.startFragPrefetch\n // is used. If we used buffering in that case, our BW estimate sample will be very large.\n var processingMs = stats.parsing.end - stats.loading.start - Math.min(stats.loading.first - stats.loading.start, this.bwEstimator.getEstimateTTFB());\n this.bwEstimator.sample(processingMs, stats.loaded);\n stats.bwEstimate = this.getBwEstimate();\n if (frag.bitrateTest) {\n this.bitrateTestDelay = processingMs / 1000;\n } else {\n this.bitrateTestDelay = 0;\n }\n };\n _proto.ignoreFragment = function ignoreFragment(frag) {\n // Only count non-alt-audio frags which were actually buffered in our BW calculations\n return frag.type !== PlaylistLevelType.MAIN || frag.sn === 'initSegment';\n };\n _proto.clearTimer = function clearTimer() {\n if (this.timer > -1) {\n self.clearInterval(this.timer);\n this.timer = -1;\n }\n };\n _proto.getAutoLevelKey = function getAutoLevelKey() {\n return this.getBwEstimate() + \"_\" + this.getStarvationDelay().toFixed(2);\n };\n _proto.getNextABRAutoLevel = function getNextABRAutoLevel() {\n var fragCurrent = this.fragCurrent,\n partCurrent = this.partCurrent,\n hls = this.hls;\n var maxAutoLevel = hls.maxAutoLevel,\n config = hls.config,\n minAutoLevel = hls.minAutoLevel;\n var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n var avgbw = this.getBwEstimate();\n // bufferStarvationDelay is the wall-clock time left until the playback buffer is exhausted.\n var bufferStarvationDelay = this.getStarvationDelay();\n var bwFactor = config.abrBandWidthFactor;\n var bwUpFactor = config.abrBandWidthUpFactor;\n\n // First, look to see if we can find a level matching with our avg bandwidth AND that could also guarantee no rebuffering at all\n if (bufferStarvationDelay) {\n var _bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, 0, bwFactor, bwUpFactor);\n if (_bestLevel >= 0) {\n return _bestLevel;\n }\n }\n // not possible to get rid of rebuffering... try to find level that will guarantee less than maxStarvationDelay of rebuffering\n var maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay;\n if (!bufferStarvationDelay) {\n // in case buffer is empty, let's check if previous fragment was loaded to perform a bitrate test\n var bitrateTestDelay = this.bitrateTestDelay;\n if (bitrateTestDelay) {\n // if it is the case, then we need to adjust our max starvation delay using maxLoadingDelay config value\n // max video loading delay used in automatic start level selection :\n // in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level +\n // the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` )\n // cap maxLoadingDelay and ensure it is not bigger 'than bitrate test' frag duration\n var maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay;\n maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;\n logger.info(\"[abr] bitrate test took \" + Math.round(1000 * bitrateTestDelay) + \"ms, set first fragment max fetchDuration to \" + Math.round(1000 * maxStarvationDelay) + \" ms\");\n // don't use conservative factor on bitrate test\n bwFactor = bwUpFactor = 1;\n }\n }\n var bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor);\n logger.info(\"[abr] \" + (bufferStarvationDelay ? 'rebuffering expected' : 'buffer is empty') + \", optimal quality level \" + bestLevel);\n if (bestLevel > -1) {\n return bestLevel;\n }\n // If no matching level found, see if min auto level would be a better option\n var minLevel = hls.levels[minAutoLevel];\n var autoLevel = hls.levels[hls.loadLevel];\n if ((minLevel == null ? void 0 : minLevel.bitrate) < (autoLevel == null ? void 0 : autoLevel.bitrate)) {\n return minAutoLevel;\n }\n // or if bitrate is not lower, continue to use loadLevel\n return hls.loadLevel;\n };\n _proto.getStarvationDelay = function getStarvationDelay() {\n var hls = this.hls;\n var media = hls.media;\n if (!media) {\n return Infinity;\n }\n // playbackRate is the absolute value of the playback rate; if media.playbackRate is 0, we use 1 to load as\n // if we're playing back at the normal rate.\n var playbackRate = media && media.playbackRate !== 0 ? Math.abs(media.playbackRate) : 1.0;\n var bufferInfo = hls.mainForwardBufferInfo;\n return (bufferInfo ? bufferInfo.len : 0) / playbackRate;\n };\n _proto.getBwEstimate = function getBwEstimate() {\n return this.bwEstimator.canEstimate() ? this.bwEstimator.getEstimate() : this.hls.config.abrEwmaDefaultEstimate;\n };\n _proto.findBestLevel = function findBestLevel(currentBw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor) {\n var _level$details,\n _this2 = this;\n var maxFetchDuration = bufferStarvationDelay + maxStarvationDelay;\n var lastLoadedFragLevel = this.lastLoadedFragLevel;\n var selectionBaseLevel = lastLoadedFragLevel === -1 ? this.hls.firstLevel : lastLoadedFragLevel;\n var fragCurrent = this.fragCurrent,\n partCurrent = this.partCurrent;\n var _this$hls = this.hls,\n levels = _this$hls.levels,\n allAudioTracks = _this$hls.allAudioTracks,\n loadLevel = _this$hls.loadLevel,\n config = _this$hls.config;\n if (levels.length === 1) {\n return 0;\n }\n var level = levels[selectionBaseLevel];\n var live = !!(level != null && (_level$details = level.details) != null && _level$details.live);\n var firstSelection = loadLevel === -1 || lastLoadedFragLevel === -1;\n var currentCodecSet;\n var currentVideoRange = 'SDR';\n var currentFrameRate = (level == null ? void 0 : level.frameRate) || 0;\n var audioPreference = config.audioPreference,\n videoPreference = config.videoPreference;\n var audioTracksByGroup = this.audioTracksByGroup || (this.audioTracksByGroup = getAudioTracksByGroup(allAudioTracks));\n if (firstSelection) {\n if (this.firstSelection !== -1) {\n return this.firstSelection;\n }\n var codecTiers = this.codecTiers || (this.codecTiers = getCodecTiers(levels, audioTracksByGroup, minAutoLevel, maxAutoLevel));\n var startTier = getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference);\n var codecSet = startTier.codecSet,\n videoRanges = startTier.videoRanges,\n minFramerate = startTier.minFramerate,\n minBitrate = startTier.minBitrate,\n preferHDR = startTier.preferHDR;\n currentCodecSet = codecSet;\n currentVideoRange = preferHDR ? videoRanges[videoRanges.length - 1] : videoRanges[0];\n currentFrameRate = minFramerate;\n currentBw = Math.max(currentBw, minBitrate);\n logger.log(\"[abr] picked start tier \" + JSON.stringify(startTier));\n } else {\n currentCodecSet = level == null ? void 0 : level.codecSet;\n currentVideoRange = level == null ? void 0 : level.videoRange;\n }\n var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n var ttfbEstimateSec = this.bwEstimator.getEstimateTTFB() / 1000;\n var levelsSkipped = [];\n var _loop = function _loop() {\n var _levelInfo$supportedR;\n var levelInfo = levels[i];\n var upSwitch = i > selectionBaseLevel;\n if (!levelInfo) {\n return 0; // continue\n }\n if (config.useMediaCapabilities && !levelInfo.supportedResult && !levelInfo.supportedPromise) {\n var mediaCapabilities = navigator.mediaCapabilities;\n if (typeof (mediaCapabilities == null ? void 0 : mediaCapabilities.decodingInfo) === 'function' && requiresMediaCapabilitiesDecodingInfo(levelInfo, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference)) {\n levelInfo.supportedPromise = getMediaDecodingInfoPromise(levelInfo, audioTracksByGroup, mediaCapabilities);\n levelInfo.supportedPromise.then(function (decodingInfo) {\n if (!_this2.hls) {\n return;\n }\n levelInfo.supportedResult = decodingInfo;\n var levels = _this2.hls.levels;\n var index = levels.indexOf(levelInfo);\n if (decodingInfo.error) {\n logger.warn(\"[abr] MediaCapabilities decodingInfo error: \\\"\" + decodingInfo.error + \"\\\" for level \" + index + \" \" + JSON.stringify(decodingInfo));\n } else if (!decodingInfo.supported) {\n logger.warn(\"[abr] Unsupported MediaCapabilities decodingInfo result for level \" + index + \" \" + JSON.stringify(decodingInfo));\n if (index > -1 && levels.length > 1) {\n logger.log(\"[abr] Removing unsupported level \" + index);\n _this2.hls.removeLevel(index);\n }\n }\n });\n } else {\n levelInfo.supportedResult = SUPPORTED_INFO_DEFAULT;\n }\n }\n\n // skip candidates which change codec-family or video-range,\n // and which decrease or increase frame-rate for up and down-switch respectfully\n if (currentCodecSet && levelInfo.codecSet !== currentCodecSet || currentVideoRange && levelInfo.videoRange !== currentVideoRange || upSwitch && currentFrameRate > levelInfo.frameRate || !upSwitch && currentFrameRate > 0 && currentFrameRate < levelInfo.frameRate || levelInfo.supportedResult && !((_levelInfo$supportedR = levelInfo.supportedResult.decodingInfoResults) != null && _levelInfo$supportedR[0].smooth)) {\n levelsSkipped.push(i);\n return 0; // continue\n }\n var levelDetails = levelInfo.details;\n var avgDuration = (partCurrent ? levelDetails == null ? void 0 : levelDetails.partTarget : levelDetails == null ? void 0 : levelDetails.averagetargetduration) || currentFragDuration;\n var adjustedbw;\n // follow algorithm captured from stagefright :\n // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp\n // Pick the highest bandwidth stream below or equal to estimated bandwidth.\n // consider only 80% of the available bandwidth, but if we are switching up,\n // be even more conservative (70%) to avoid overestimating and immediately\n // switching back.\n if (!upSwitch) {\n adjustedbw = bwFactor * currentBw;\n } else {\n adjustedbw = bwUpFactor * currentBw;\n }\n\n // Use average bitrate when starvation delay (buffer length) is gt or eq two segment durations and rebuffering is not expected (maxStarvationDelay > 0)\n var bitrate = currentFragDuration && bufferStarvationDelay >= currentFragDuration * 2 && maxStarvationDelay === 0 ? levels[i].averageBitrate : levels[i].maxBitrate;\n var fetchDuration = _this2.getTimeToLoadFrag(ttfbEstimateSec, adjustedbw, bitrate * avgDuration, levelDetails === undefined);\n var canSwitchWithinTolerance =\n // if adjusted bw is greater than level bitrate AND\n adjustedbw >= bitrate && (\n // no level change, or new level has no error history\n i === lastLoadedFragLevel || levelInfo.loadError === 0 && levelInfo.fragmentError === 0) && (\n // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches\n // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...\n // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1\n fetchDuration <= ttfbEstimateSec || !isFiniteNumber(fetchDuration) || live && !_this2.bitrateTestDelay || fetchDuration < maxFetchDuration);\n if (canSwitchWithinTolerance) {\n var forcedAutoLevel = _this2.forcedAutoLevel;\n if (i !== loadLevel && (forcedAutoLevel === -1 || forcedAutoLevel !== loadLevel)) {\n if (levelsSkipped.length) {\n logger.trace(\"[abr] Skipped level(s) \" + levelsSkipped.join(',') + \" of \" + maxAutoLevel + \" max with CODECS and VIDEO-RANGE:\\\"\" + levels[levelsSkipped[0]].codecs + \"\\\" \" + levels[levelsSkipped[0]].videoRange + \"; not compatible with \\\"\" + level.codecs + \"\\\" \" + currentVideoRange);\n }\n logger.info(\"[abr] switch candidate:\" + selectionBaseLevel + \"->\" + i + \" adjustedbw(\" + Math.round(adjustedbw) + \")-bitrate=\" + Math.round(adjustedbw - bitrate) + \" ttfb:\" + ttfbEstimateSec.toFixed(1) + \" avgDuration:\" + avgDuration.toFixed(1) + \" maxFetchDuration:\" + maxFetchDuration.toFixed(1) + \" fetchDuration:\" + fetchDuration.toFixed(1) + \" firstSelection:\" + firstSelection + \" codecSet:\" + currentCodecSet + \" videoRange:\" + currentVideoRange + \" hls.loadLevel:\" + loadLevel);\n }\n if (firstSelection) {\n _this2.firstSelection = i;\n }\n // as we are looping from highest to lowest, this will return the best achievable quality level\n return {\n v: i\n };\n }\n },\n _ret;\n for (var i = maxAutoLevel; i >= minAutoLevel; i--) {\n _ret = _loop();\n if (_ret === 0) continue;\n if (_ret) return _ret.v;\n }\n // not enough time budget even with quality level 0 ... rebuffering might happen\n return -1;\n };\n _createClass(AbrController, [{\n key: \"firstAutoLevel\",\n get: function get() {\n var _this$hls2 = this.hls,\n maxAutoLevel = _this$hls2.maxAutoLevel,\n minAutoLevel = _this$hls2.minAutoLevel;\n var bwEstimate = this.getBwEstimate();\n var maxStartDelay = this.hls.config.maxStarvationDelay;\n var abrAutoLevel = this.findBestLevel(bwEstimate, minAutoLevel, maxAutoLevel, 0, maxStartDelay, 1, 1);\n if (abrAutoLevel > -1) {\n return abrAutoLevel;\n }\n var firstLevel = this.hls.firstLevel;\n var clamped = Math.min(Math.max(firstLevel, minAutoLevel), maxAutoLevel);\n logger.warn(\"[abr] Could not find best starting auto level. Defaulting to first in playlist \" + firstLevel + \" clamped to \" + clamped);\n return clamped;\n }\n }, {\n key: \"forcedAutoLevel\",\n get: function get() {\n if (this.nextAutoLevelKey) {\n return -1;\n }\n return this._nextAutoLevel;\n }\n\n // return next auto level\n }, {\n key: \"nextAutoLevel\",\n get: function get() {\n var forcedAutoLevel = this.forcedAutoLevel;\n var bwEstimator = this.bwEstimator;\n var useEstimate = bwEstimator.canEstimate();\n var loadedFirstFrag = this.lastLoadedFragLevel > -1;\n // in case next auto level has been forced, and bw not available or not reliable, return forced value\n if (forcedAutoLevel !== -1 && (!useEstimate || !loadedFirstFrag || this.nextAutoLevelKey === this.getAutoLevelKey())) {\n return forcedAutoLevel;\n }\n\n // compute next level using ABR logic\n var nextABRAutoLevel = useEstimate && loadedFirstFrag ? this.getNextABRAutoLevel() : this.firstAutoLevel;\n\n // use forced auto level while it hasn't errored more than ABR selection\n if (forcedAutoLevel !== -1) {\n var levels = this.hls.levels;\n if (levels.length > Math.max(forcedAutoLevel, nextABRAutoLevel) && levels[forcedAutoLevel].loadError <= levels[nextABRAutoLevel].loadError) {\n return forcedAutoLevel;\n }\n }\n\n // save result until state has changed\n this._nextAutoLevel = nextABRAutoLevel;\n this.nextAutoLevelKey = this.getAutoLevelKey();\n return nextABRAutoLevel;\n },\n set: function set(nextLevel) {\n var _this$hls3 = this.hls,\n maxAutoLevel = _this$hls3.maxAutoLevel,\n minAutoLevel = _this$hls3.minAutoLevel;\n var value = Math.min(Math.max(nextLevel, minAutoLevel), maxAutoLevel);\n if (this._nextAutoLevel !== value) {\n this.nextAutoLevelKey = '';\n this._nextAutoLevel = value;\n }\n }\n }]);\n return AbrController;\n }();\n\n /**\n * @ignore\n * Sub-class specialization of EventHandler base class.\n *\n * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop,\n * scheduled asynchroneously, avoiding recursive calls in the same tick.\n *\n * The task itself is implemented in `doTick`. It can be requested and called for single execution\n * using the `tick` method.\n *\n * It will be assured that the task execution method (`tick`) only gets called once per main loop \"tick\",\n * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly.\n *\n * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`,\n * and cancelled with `clearNextTick`.\n *\n * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`).\n *\n * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine.\n *\n * Further explanations:\n *\n * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously\n * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks.\n *\n * When the task execution (`tick` method) is called in re-entrant way this is detected and\n * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further\n * task processing on the next main loop iteration (also known as \"next tick\" in the Node/JS runtime lingo).\n */\n var TaskLoop = /*#__PURE__*/function () {\n function TaskLoop() {\n this._boundTick = void 0;\n this._tickTimer = null;\n this._tickInterval = null;\n this._tickCallCount = 0;\n this._boundTick = this.tick.bind(this);\n }\n var _proto = TaskLoop.prototype;\n _proto.destroy = function destroy() {\n this.onHandlerDestroying();\n this.onHandlerDestroyed();\n };\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n // clear all timers before unregistering from event bus\n this.clearNextTick();\n this.clearInterval();\n };\n _proto.onHandlerDestroyed = function onHandlerDestroyed() {};\n _proto.hasInterval = function hasInterval() {\n return !!this._tickInterval;\n };\n _proto.hasNextTick = function hasNextTick() {\n return !!this._tickTimer;\n }\n\n /**\n * @param millis - Interval time (ms)\n * @eturns True when interval has been scheduled, false when already scheduled (no effect)\n */;\n _proto.setInterval = function setInterval(millis) {\n if (!this._tickInterval) {\n this._tickCallCount = 0;\n this._tickInterval = self.setInterval(this._boundTick, millis);\n return true;\n }\n return false;\n }\n\n /**\n * @returns True when interval was cleared, false when none was set (no effect)\n */;\n _proto.clearInterval = function clearInterval() {\n if (this._tickInterval) {\n self.clearInterval(this._tickInterval);\n this._tickInterval = null;\n return true;\n }\n return false;\n }\n\n /**\n * @returns True when timeout was cleared, false when none was set (no effect)\n */;\n _proto.clearNextTick = function clearNextTick() {\n if (this._tickTimer) {\n self.clearTimeout(this._tickTimer);\n this._tickTimer = null;\n return true;\n }\n return false;\n }\n\n /**\n * Will call the subclass doTick implementation in this main loop tick\n * or in the next one (via setTimeout(,0)) in case it has already been called\n * in this tick (in case this is a re-entrant call).\n */;\n _proto.tick = function tick() {\n this._tickCallCount++;\n if (this._tickCallCount === 1) {\n this.doTick();\n // re-entrant call to tick from previous doTick call stack\n // -> schedule a call on the next main loop iteration to process this task processing request\n if (this._tickCallCount > 1) {\n // make sure only one timer exists at any time at max\n this.tickImmediate();\n }\n this._tickCallCount = 0;\n }\n };\n _proto.tickImmediate = function tickImmediate() {\n this.clearNextTick();\n this._tickTimer = self.setTimeout(this._boundTick, 0);\n }\n\n /**\n * For subclass to implement task logic\n * @abstract\n */;\n _proto.doTick = function doTick() {};\n return TaskLoop;\n }();\n\n var FragmentState = {\n NOT_LOADED: \"NOT_LOADED\",\n APPENDING: \"APPENDING\",\n PARTIAL: \"PARTIAL\",\n OK: \"OK\"\n };\n var FragmentTracker = /*#__PURE__*/function () {\n function FragmentTracker(hls) {\n this.activePartLists = Object.create(null);\n this.endListFragments = Object.create(null);\n this.fragments = Object.create(null);\n this.timeRanges = Object.create(null);\n this.bufferPadding = 0.2;\n this.hls = void 0;\n this.hasGaps = false;\n this.hls = hls;\n this._registerListeners();\n }\n var _proto = FragmentTracker.prototype;\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(Events.BUFFER_APPENDED, this.onBufferAppended, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n };\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.BUFFER_APPENDED, this.onBufferAppended, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n };\n _proto.destroy = function destroy() {\n this._unregisterListeners();\n // @ts-ignore\n this.fragments =\n // @ts-ignore\n this.activePartLists =\n // @ts-ignore\n this.endListFragments = this.timeRanges = null;\n }\n\n /**\n * Return a Fragment or Part with an appended range that matches the position and levelType\n * Otherwise, return null\n */;\n _proto.getAppendedFrag = function getAppendedFrag(position, levelType) {\n var activeParts = this.activePartLists[levelType];\n if (activeParts) {\n for (var i = activeParts.length; i--;) {\n var activePart = activeParts[i];\n if (!activePart) {\n break;\n }\n var appendedPTS = activePart.end;\n if (activePart.start <= position && appendedPTS !== null && position <= appendedPTS) {\n return activePart;\n }\n }\n }\n return this.getBufferedFrag(position, levelType);\n }\n\n /**\n * Return a buffered Fragment that matches the position and levelType.\n * A buffered Fragment is one whose loading, parsing and appending is done (completed or \"partial\" meaning aborted).\n * If not found any Fragment, return null\n */;\n _proto.getBufferedFrag = function getBufferedFrag(position, levelType) {\n var fragments = this.fragments;\n var keys = Object.keys(fragments);\n for (var i = keys.length; i--;) {\n var fragmentEntity = fragments[keys[i]];\n if ((fragmentEntity == null ? void 0 : fragmentEntity.body.type) === levelType && fragmentEntity.buffered) {\n var frag = fragmentEntity.body;\n if (frag.start <= position && position <= frag.end) {\n return frag;\n }\n }\n }\n return null;\n }\n\n /**\n * Partial fragments effected by coded frame eviction will be removed\n * The browser will unload parts of the buffer to free up memory for new buffer data\n * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)\n */;\n _proto.detectEvictedFragments = function detectEvictedFragments(elementaryStream, timeRange, playlistType, appendedPart) {\n var _this = this;\n if (this.timeRanges) {\n this.timeRanges[elementaryStream] = timeRange;\n }\n // Check if any flagged fragments have been unloaded\n // excluding anything newer than appendedPartSn\n var appendedPartSn = (appendedPart == null ? void 0 : appendedPart.fragment.sn) || -1;\n Object.keys(this.fragments).forEach(function (key) {\n var fragmentEntity = _this.fragments[key];\n if (!fragmentEntity) {\n return;\n }\n if (appendedPartSn >= fragmentEntity.body.sn) {\n return;\n }\n if (!fragmentEntity.buffered && !fragmentEntity.loaded) {\n if (fragmentEntity.body.type === playlistType) {\n _this.removeFragment(fragmentEntity.body);\n }\n return;\n }\n var esData = fragmentEntity.range[elementaryStream];\n if (!esData) {\n return;\n }\n esData.time.some(function (time) {\n var isNotBuffered = !_this.isTimeBuffered(time.startPTS, time.endPTS, timeRange);\n if (isNotBuffered) {\n // Unregister partial fragment as it needs to load again to be reused\n _this.removeFragment(fragmentEntity.body);\n }\n return isNotBuffered;\n });\n });\n }\n\n /**\n * Checks if the fragment passed in is loaded in the buffer properly\n * Partially loaded fragments will be registered as a partial fragment\n */;\n _proto.detectPartialFragments = function detectPartialFragments(data) {\n var _this2 = this;\n var timeRanges = this.timeRanges;\n var frag = data.frag,\n part = data.part;\n if (!timeRanges || frag.sn === 'initSegment') {\n return;\n }\n var fragKey = getFragmentKey(frag);\n var fragmentEntity = this.fragments[fragKey];\n if (!fragmentEntity || fragmentEntity.buffered && frag.gap) {\n return;\n }\n var isFragHint = !frag.relurl;\n Object.keys(timeRanges).forEach(function (elementaryStream) {\n var streamInfo = frag.elementaryStreams[elementaryStream];\n if (!streamInfo) {\n return;\n }\n var timeRange = timeRanges[elementaryStream];\n var partial = isFragHint || streamInfo.partial === true;\n fragmentEntity.range[elementaryStream] = _this2.getBufferedTimes(frag, part, partial, timeRange);\n });\n fragmentEntity.loaded = null;\n if (Object.keys(fragmentEntity.range).length) {\n fragmentEntity.buffered = true;\n var endList = fragmentEntity.body.endList = frag.endList || fragmentEntity.body.endList;\n if (endList) {\n this.endListFragments[fragmentEntity.body.type] = fragmentEntity;\n }\n if (!isPartial(fragmentEntity)) {\n // Remove older fragment parts from lookup after frag is tracked as buffered\n this.removeParts(frag.sn - 1, frag.type);\n }\n } else {\n // remove fragment if nothing was appended\n this.removeFragment(fragmentEntity.body);\n }\n };\n _proto.removeParts = function removeParts(snToKeep, levelType) {\n var activeParts = this.activePartLists[levelType];\n if (!activeParts) {\n return;\n }\n this.activePartLists[levelType] = activeParts.filter(function (part) {\n return part.fragment.sn >= snToKeep;\n });\n };\n _proto.fragBuffered = function fragBuffered(frag, force) {\n var fragKey = getFragmentKey(frag);\n var fragmentEntity = this.fragments[fragKey];\n if (!fragmentEntity && force) {\n fragmentEntity = this.fragments[fragKey] = {\n body: frag,\n appendedPTS: null,\n loaded: null,\n buffered: false,\n range: Object.create(null)\n };\n if (frag.gap) {\n this.hasGaps = true;\n }\n }\n if (fragmentEntity) {\n fragmentEntity.loaded = null;\n fragmentEntity.buffered = true;\n }\n };\n _proto.getBufferedTimes = function getBufferedTimes(fragment, part, partial, timeRange) {\n var buffered = {\n time: [],\n partial: partial\n };\n var startPTS = fragment.start;\n var endPTS = fragment.end;\n var minEndPTS = fragment.minEndPTS || endPTS;\n var maxStartPTS = fragment.maxStartPTS || startPTS;\n for (var i = 0; i < timeRange.length; i++) {\n var startTime = timeRange.start(i) - this.bufferPadding;\n var endTime = timeRange.end(i) + this.bufferPadding;\n if (maxStartPTS >= startTime && minEndPTS <= endTime) {\n // Fragment is entirely contained in buffer\n // No need to check the other timeRange times since it's completely playable\n buffered.time.push({\n startPTS: Math.max(startPTS, timeRange.start(i)),\n endPTS: Math.min(endPTS, timeRange.end(i))\n });\n break;\n } else if (startPTS < endTime && endPTS > startTime) {\n var start = Math.max(startPTS, timeRange.start(i));\n var end = Math.min(endPTS, timeRange.end(i));\n if (end > start) {\n buffered.partial = true;\n // Check for intersection with buffer\n // Get playable sections of the fragment\n buffered.time.push({\n startPTS: start,\n endPTS: end\n });\n }\n } else if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n break;\n }\n }\n return buffered;\n }\n\n /**\n * Gets the partial fragment for a certain time\n */;\n _proto.getPartialFragment = function getPartialFragment(time) {\n var bestFragment = null;\n var timePadding;\n var startTime;\n var endTime;\n var bestOverlap = 0;\n var bufferPadding = this.bufferPadding,\n fragments = this.fragments;\n Object.keys(fragments).forEach(function (key) {\n var fragmentEntity = fragments[key];\n if (!fragmentEntity) {\n return;\n }\n if (isPartial(fragmentEntity)) {\n startTime = fragmentEntity.body.start - bufferPadding;\n endTime = fragmentEntity.body.end + bufferPadding;\n if (time >= startTime && time <= endTime) {\n // Use the fragment that has the most padding from start and end time\n timePadding = Math.min(time - startTime, endTime - time);\n if (bestOverlap <= timePadding) {\n bestFragment = fragmentEntity.body;\n bestOverlap = timePadding;\n }\n }\n }\n });\n return bestFragment;\n };\n _proto.isEndListAppended = function isEndListAppended(type) {\n var lastFragmentEntity = this.endListFragments[type];\n return lastFragmentEntity !== undefined && (lastFragmentEntity.buffered || isPartial(lastFragmentEntity));\n };\n _proto.getState = function getState(fragment) {\n var fragKey = getFragmentKey(fragment);\n var fragmentEntity = this.fragments[fragKey];\n if (fragmentEntity) {\n if (!fragmentEntity.buffered) {\n return FragmentState.APPENDING;\n } else if (isPartial(fragmentEntity)) {\n return FragmentState.PARTIAL;\n } else {\n return FragmentState.OK;\n }\n }\n return FragmentState.NOT_LOADED;\n };\n _proto.isTimeBuffered = function isTimeBuffered(startPTS, endPTS, timeRange) {\n var startTime;\n var endTime;\n for (var i = 0; i < timeRange.length; i++) {\n startTime = timeRange.start(i) - this.bufferPadding;\n endTime = timeRange.end(i) + this.bufferPadding;\n if (startPTS >= startTime && endPTS <= endTime) {\n return true;\n }\n if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n return false;\n }\n }\n return false;\n };\n _proto.onFragLoaded = function onFragLoaded(event, data) {\n var frag = data.frag,\n part = data.part;\n // don't track initsegment (for which sn is not a number)\n // don't track frags used for bitrateTest, they're irrelevant.\n if (frag.sn === 'initSegment' || frag.bitrateTest) {\n return;\n }\n\n // Fragment entity `loaded` FragLoadedData is null when loading parts\n var loaded = part ? null : data;\n var fragKey = getFragmentKey(frag);\n this.fragments[fragKey] = {\n body: frag,\n appendedPTS: null,\n loaded: loaded,\n buffered: false,\n range: Object.create(null)\n };\n };\n _proto.onBufferAppended = function onBufferAppended(event, data) {\n var _this3 = this;\n var frag = data.frag,\n part = data.part,\n timeRanges = data.timeRanges;\n if (frag.sn === 'initSegment') {\n return;\n }\n var playlistType = frag.type;\n if (part) {\n var activeParts = this.activePartLists[playlistType];\n if (!activeParts) {\n this.activePartLists[playlistType] = activeParts = [];\n }\n activeParts.push(part);\n }\n // Store the latest timeRanges loaded in the buffer\n this.timeRanges = timeRanges;\n Object.keys(timeRanges).forEach(function (elementaryStream) {\n var timeRange = timeRanges[elementaryStream];\n _this3.detectEvictedFragments(elementaryStream, timeRange, playlistType, part);\n });\n };\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n this.detectPartialFragments(data);\n };\n _proto.hasFragment = function hasFragment(fragment) {\n var fragKey = getFragmentKey(fragment);\n return !!this.fragments[fragKey];\n };\n _proto.hasParts = function hasParts(type) {\n var _this$activePartLists;\n return !!((_this$activePartLists = this.activePartLists[type]) != null && _this$activePartLists.length);\n };\n _proto.removeFragmentsInRange = function removeFragmentsInRange(start, end, playlistType, withGapOnly, unbufferedOnly) {\n var _this4 = this;\n if (withGapOnly && !this.hasGaps) {\n return;\n }\n Object.keys(this.fragments).forEach(function (key) {\n var fragmentEntity = _this4.fragments[key];\n if (!fragmentEntity) {\n return;\n }\n var frag = fragmentEntity.body;\n if (frag.type !== playlistType || withGapOnly && !frag.gap) {\n return;\n }\n if (frag.start < end && frag.end > start && (fragmentEntity.buffered || unbufferedOnly)) {\n _this4.removeFragment(frag);\n }\n });\n };\n _proto.removeFragment = function removeFragment(fragment) {\n var fragKey = getFragmentKey(fragment);\n fragment.stats.loaded = 0;\n fragment.clearElementaryStreamInfo();\n var activeParts = this.activePartLists[fragment.type];\n if (activeParts) {\n var snToRemove = fragment.sn;\n this.activePartLists[fragment.type] = activeParts.filter(function (part) {\n return part.fragment.sn !== snToRemove;\n });\n }\n delete this.fragments[fragKey];\n if (fragment.endList) {\n delete this.endListFragments[fragment.type];\n }\n };\n _proto.removeAllFragments = function removeAllFragments() {\n this.fragments = Object.create(null);\n this.endListFragments = Object.create(null);\n this.activePartLists = Object.create(null);\n this.hasGaps = false;\n };\n return FragmentTracker;\n }();\n function isPartial(fragmentEntity) {\n var _fragmentEntity$range, _fragmentEntity$range2, _fragmentEntity$range3;\n return fragmentEntity.buffered && (fragmentEntity.body.gap || ((_fragmentEntity$range = fragmentEntity.range.video) == null ? void 0 : _fragmentEntity$range.partial) || ((_fragmentEntity$range2 = fragmentEntity.range.audio) == null ? void 0 : _fragmentEntity$range2.partial) || ((_fragmentEntity$range3 = fragmentEntity.range.audiovideo) == null ? void 0 : _fragmentEntity$range3.partial));\n }\n function getFragmentKey(fragment) {\n return fragment.type + \"_\" + fragment.level + \"_\" + fragment.sn;\n }\n\n /**\n * Provides methods dealing with buffer length retrieval for example.\n *\n * In general, a helper around HTML5 MediaElement TimeRanges gathered from `buffered` property.\n *\n * Also @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/buffered\n */\n\n var noopBuffered = {\n length: 0,\n start: function start() {\n return 0;\n },\n end: function end() {\n return 0;\n }\n };\n var BufferHelper = /*#__PURE__*/function () {\n function BufferHelper() {}\n /**\n * Return true if `media`'s buffered include `position`\n */\n BufferHelper.isBuffered = function isBuffered(media, position) {\n try {\n if (media) {\n var buffered = BufferHelper.getBuffered(media);\n for (var i = 0; i < buffered.length; i++) {\n if (position >= buffered.start(i) && position <= buffered.end(i)) {\n return true;\n }\n }\n }\n } catch (error) {\n // this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n return false;\n };\n BufferHelper.bufferInfo = function bufferInfo(media, pos, maxHoleDuration) {\n try {\n if (media) {\n var vbuffered = BufferHelper.getBuffered(media);\n var buffered = [];\n var i;\n for (i = 0; i < vbuffered.length; i++) {\n buffered.push({\n start: vbuffered.start(i),\n end: vbuffered.end(i)\n });\n }\n return this.bufferedInfo(buffered, pos, maxHoleDuration);\n }\n } catch (error) {\n // this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n return {\n len: 0,\n start: pos,\n end: pos,\n nextStart: undefined\n };\n };\n BufferHelper.bufferedInfo = function bufferedInfo(buffered, pos, maxHoleDuration) {\n pos = Math.max(0, pos);\n // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n buffered.sort(function (a, b) {\n var diff = a.start - b.start;\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n var buffered2 = [];\n if (maxHoleDuration) {\n // there might be some small holes between buffer time range\n // consider that holes smaller than maxHoleDuration are irrelevant and build another\n // buffer time range representations that discards those holes\n for (var i = 0; i < buffered.length; i++) {\n var buf2len = buffered2.length;\n if (buf2len) {\n var buf2end = buffered2[buf2len - 1].end;\n // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n if (buffered[i].start - buf2end < maxHoleDuration) {\n // merge overlapping time ranges\n // update lastRange.end only if smaller than item.end\n // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n if (buffered[i].end > buf2end) {\n buffered2[buf2len - 1].end = buffered[i].end;\n }\n } else {\n // big hole\n buffered2.push(buffered[i]);\n }\n } else {\n // first value\n buffered2.push(buffered[i]);\n }\n }\n } else {\n buffered2 = buffered;\n }\n var bufferLen = 0;\n\n // bufferStartNext can possibly be undefined based on the conditional logic below\n var bufferStartNext;\n\n // bufferStart and bufferEnd are buffer boundaries around current video position\n var bufferStart = pos;\n var bufferEnd = pos;\n for (var _i = 0; _i < buffered2.length; _i++) {\n var start = buffered2[_i].start;\n var end = buffered2[_i].end;\n // logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n if (pos + maxHoleDuration >= start && pos < end) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferStart = start;\n bufferEnd = end;\n bufferLen = bufferEnd - pos;\n } else if (pos + maxHoleDuration < start) {\n bufferStartNext = start;\n break;\n }\n }\n return {\n len: bufferLen,\n start: bufferStart || 0,\n end: bufferEnd || 0,\n nextStart: bufferStartNext\n };\n }\n\n /**\n * Safe method to get buffered property.\n * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource\n */;\n BufferHelper.getBuffered = function getBuffered(media) {\n try {\n return media.buffered;\n } catch (e) {\n logger.log('failed to get media.buffered', e);\n return noopBuffered;\n }\n };\n return BufferHelper;\n }();\n\n var ChunkMetadata = function ChunkMetadata(level, sn, id, size, part, partial) {\n if (size === void 0) {\n size = 0;\n }\n if (part === void 0) {\n part = -1;\n }\n if (partial === void 0) {\n partial = false;\n }\n this.level = void 0;\n this.sn = void 0;\n this.part = void 0;\n this.id = void 0;\n this.size = void 0;\n this.partial = void 0;\n this.transmuxing = getNewPerformanceTiming();\n this.buffering = {\n audio: getNewPerformanceTiming(),\n video: getNewPerformanceTiming(),\n audiovideo: getNewPerformanceTiming()\n };\n this.level = level;\n this.sn = sn;\n this.id = id;\n this.size = size;\n this.part = part;\n this.partial = partial;\n };\n function getNewPerformanceTiming() {\n return {\n start: 0,\n executeStart: 0,\n executeEnd: 0,\n end: 0\n };\n }\n\n function findFirstFragWithCC(fragments, cc) {\n for (var i = 0, len = fragments.length; i < len; i++) {\n var _fragments$i;\n if (((_fragments$i = fragments[i]) == null ? void 0 : _fragments$i.cc) === cc) {\n return fragments[i];\n }\n }\n return null;\n }\n function shouldAlignOnDiscontinuities(lastFrag, switchDetails, details) {\n if (switchDetails) {\n if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) {\n return true;\n }\n }\n return false;\n }\n\n // Find the first frag in the previous level which matches the CC of the first frag of the new level\n function findDiscontinuousReferenceFrag(prevDetails, curDetails) {\n var prevFrags = prevDetails.fragments;\n var curFrags = curDetails.fragments;\n if (!curFrags.length || !prevFrags.length) {\n logger.log('No fragments to align');\n return;\n }\n var prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);\n if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {\n logger.log('No frag in previous level to align on');\n return;\n }\n return prevStartFrag;\n }\n function adjustFragmentStart(frag, sliding) {\n if (frag) {\n var start = frag.start + sliding;\n frag.start = frag.startPTS = start;\n frag.endPTS = start + frag.duration;\n }\n }\n function adjustSlidingStart(sliding, details) {\n // Update segments\n var fragments = details.fragments;\n for (var i = 0, len = fragments.length; i < len; i++) {\n adjustFragmentStart(fragments[i], sliding);\n }\n // Update LL-HLS parts at the end of the playlist\n if (details.fragmentHint) {\n adjustFragmentStart(details.fragmentHint, sliding);\n }\n details.alignedSliding = true;\n }\n\n /**\n * Using the parameters of the last level, this function computes PTS' of the new fragments so that they form a\n * contiguous stream with the last fragments.\n * The PTS of a fragment lets Hls.js know where it fits into a stream - by knowing every PTS, we know which fragment to\n * download at any given time. PTS is normally computed when the fragment is demuxed, so taking this step saves us time\n * and an extra download.\n * @param lastFrag\n * @param lastLevel\n * @param details\n */\n function alignStream(lastFrag, switchDetails, details) {\n if (!switchDetails) {\n return;\n }\n alignDiscontinuities(lastFrag, details, switchDetails);\n if (!details.alignedSliding && switchDetails) {\n // If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.\n // Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same\n // discontinuity sequence.\n alignMediaPlaylistByPDT(details, switchDetails);\n }\n if (!details.alignedSliding && switchDetails && !details.skippedSegments) {\n // Try to align on sn so that we pick a better start fragment.\n // Do not perform this on playlists with delta updates as this is only to align levels on switch\n // and adjustSliding only adjusts fragments after skippedSegments.\n adjustSliding(switchDetails, details);\n }\n }\n\n /**\n * Computes the PTS if a new level's fragments using the PTS of a fragment in the last level which shares the same\n * discontinuity sequence.\n * @param lastFrag - The last Fragment which shares the same discontinuity sequence\n * @param lastLevel - The details of the last loaded level\n * @param details - The details of the new level\n */\n function alignDiscontinuities(lastFrag, details, switchDetails) {\n if (shouldAlignOnDiscontinuities(lastFrag, switchDetails, details)) {\n var referenceFrag = findDiscontinuousReferenceFrag(switchDetails, details);\n if (referenceFrag && isFiniteNumber(referenceFrag.start)) {\n logger.log(\"Adjusting PTS using last level due to CC increase within current level \" + details.url);\n adjustSlidingStart(referenceFrag.start, details);\n }\n }\n }\n\n /**\n * Ensures appropriate time-alignment between renditions based on PDT.\n * This function assumes the timelines represented in `refDetails` are accurate, including the PDTs\n * for the last discontinuity sequence number shared by both playlists when present,\n * and uses the \"wallclock\"/PDT timeline as a cross-reference to `details`, adjusting the presentation\n * times/timelines of `details` accordingly.\n * Given the asynchronous nature of fetches and initial loads of live `main` and audio/subtitle tracks,\n * the primary purpose of this function is to ensure the \"local timelines\" of audio/subtitle tracks\n * are aligned to the main/video timeline, using PDT as the cross-reference/\"anchor\" that should\n * be consistent across playlists, per the HLS spec.\n * @param details - The details of the rendition you'd like to time-align (e.g. an audio rendition).\n * @param refDetails - The details of the reference rendition with start and PDT times for alignment.\n */\n function alignMediaPlaylistByPDT(details, refDetails) {\n if (!details.hasProgramDateTime || !refDetails.hasProgramDateTime) {\n return;\n }\n var fragments = details.fragments;\n var refFragments = refDetails.fragments;\n if (!fragments.length || !refFragments.length) {\n return;\n }\n\n // Calculate a delta to apply to all fragments according to the delta in PDT times and start times\n // of a fragment in the reference details, and a fragment in the target details of the same discontinuity.\n // If a fragment of the same discontinuity was not found use the middle fragment of both.\n var refFrag;\n var frag;\n var targetCC = Math.min(refDetails.endCC, details.endCC);\n if (refDetails.startCC < targetCC && details.startCC < targetCC) {\n refFrag = findFirstFragWithCC(refFragments, targetCC);\n frag = findFirstFragWithCC(fragments, targetCC);\n }\n if (!refFrag || !frag) {\n refFrag = refFragments[Math.floor(refFragments.length / 2)];\n frag = findFirstFragWithCC(fragments, refFrag.cc) || fragments[Math.floor(fragments.length / 2)];\n }\n var refPDT = refFrag.programDateTime;\n var targetPDT = frag.programDateTime;\n if (!refPDT || !targetPDT) {\n return;\n }\n var delta = (targetPDT - refPDT) / 1000 - (frag.start - refFrag.start);\n adjustSlidingStart(delta, details);\n }\n\n var MIN_CHUNK_SIZE = Math.pow(2, 17); // 128kb\n var FragmentLoader = /*#__PURE__*/function () {\n function FragmentLoader(config) {\n this.config = void 0;\n this.loader = null;\n this.partLoadTimeout = -1;\n this.config = config;\n }\n var _proto = FragmentLoader.prototype;\n _proto.destroy = function destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n };\n _proto.abort = function abort() {\n if (this.loader) {\n // Abort the loader for current fragment. Only one may load at any given time\n this.loader.abort();\n }\n };\n _proto.load = function load(frag, _onProgress) {\n var _this = this;\n var url = frag.url;\n if (!url) {\n return Promise.reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n error: new Error(\"Fragment does not have a \" + (url ? 'part list' : 'url')),\n networkDetails: null\n }));\n }\n this.abort();\n var config = this.config;\n var FragmentILoader = config.fLoader;\n var DefaultILoader = config.loader;\n return new Promise(function (resolve, reject) {\n if (_this.loader) {\n _this.loader.destroy();\n }\n if (frag.gap) {\n if (frag.tagList.some(function (tags) {\n return tags[0] === 'GAP';\n })) {\n reject(createGapLoadError(frag));\n return;\n } else {\n // Reset temporary treatment as GAP tag\n frag.gap = false;\n }\n }\n var loader = _this.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n var loaderContext = createLoaderContext(frag);\n var loadPolicy = getLoaderConfigWithoutReties(config.fragLoadPolicy.default);\n var loaderConfig = {\n loadPolicy: loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: 0,\n highWaterMark: frag.sn === 'initSegment' ? Infinity : MIN_CHUNK_SIZE\n };\n // Assign frag stats to the loader's stats reference\n frag.stats = loader.stats;\n loader.load(loaderContext, loaderConfig, {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n _this.resetLoader(frag, loader);\n var payload = response.data;\n if (context.resetIV && frag.decryptdata) {\n frag.decryptdata.iv = new Uint8Array(payload.slice(0, 16));\n payload = payload.slice(16);\n }\n resolve({\n frag: frag,\n part: null,\n payload: payload,\n networkDetails: networkDetails\n });\n },\n onError: function onError(response, context, networkDetails, stats) {\n _this.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n response: _objectSpread2({\n url: url,\n data: undefined\n }, response),\n error: new Error(\"HTTP Error \" + response.code + \" \" + response.text),\n networkDetails: networkDetails,\n stats: stats\n }));\n },\n onAbort: function onAbort(stats, context, networkDetails) {\n _this.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.INTERNAL_ABORTED,\n fatal: false,\n frag: frag,\n error: new Error('Aborted'),\n networkDetails: networkDetails,\n stats: stats\n }));\n },\n onTimeout: function onTimeout(stats, context, networkDetails) {\n _this.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.FRAG_LOAD_TIMEOUT,\n fatal: false,\n frag: frag,\n error: new Error(\"Timeout after \" + loaderConfig.timeout + \"ms\"),\n networkDetails: networkDetails,\n stats: stats\n }));\n },\n onProgress: function onProgress(stats, context, data, networkDetails) {\n if (_onProgress) {\n _onProgress({\n frag: frag,\n part: null,\n payload: data,\n networkDetails: networkDetails\n });\n }\n }\n });\n });\n };\n _proto.loadPart = function loadPart(frag, part, onProgress) {\n var _this2 = this;\n this.abort();\n var config = this.config;\n var FragmentILoader = config.fLoader;\n var DefaultILoader = config.loader;\n return new Promise(function (resolve, reject) {\n if (_this2.loader) {\n _this2.loader.destroy();\n }\n if (frag.gap || part.gap) {\n reject(createGapLoadError(frag, part));\n return;\n }\n var loader = _this2.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n var loaderContext = createLoaderContext(frag, part);\n // Should we define another load policy for parts?\n var loadPolicy = getLoaderConfigWithoutReties(config.fragLoadPolicy.default);\n var loaderConfig = {\n loadPolicy: loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: 0,\n highWaterMark: MIN_CHUNK_SIZE\n };\n // Assign part stats to the loader's stats reference\n part.stats = loader.stats;\n loader.load(loaderContext, loaderConfig, {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n _this2.updateStatsFromPart(frag, part);\n var partLoadedData = {\n frag: frag,\n part: part,\n payload: response.data,\n networkDetails: networkDetails\n };\n onProgress(partLoadedData);\n resolve(partLoadedData);\n },\n onError: function onError(response, context, networkDetails, stats) {\n _this2.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n part: part,\n response: _objectSpread2({\n url: loaderContext.url,\n data: undefined\n }, response),\n error: new Error(\"HTTP Error \" + response.code + \" \" + response.text),\n networkDetails: networkDetails,\n stats: stats\n }));\n },\n onAbort: function onAbort(stats, context, networkDetails) {\n frag.stats.aborted = part.stats.aborted;\n _this2.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.INTERNAL_ABORTED,\n fatal: false,\n frag: frag,\n part: part,\n error: new Error('Aborted'),\n networkDetails: networkDetails,\n stats: stats\n }));\n },\n onTimeout: function onTimeout(stats, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.FRAG_LOAD_TIMEOUT,\n fatal: false,\n frag: frag,\n part: part,\n error: new Error(\"Timeout after \" + loaderConfig.timeout + \"ms\"),\n networkDetails: networkDetails,\n stats: stats\n }));\n }\n });\n });\n };\n _proto.updateStatsFromPart = function updateStatsFromPart(frag, part) {\n var fragStats = frag.stats;\n var partStats = part.stats;\n var partTotal = partStats.total;\n fragStats.loaded += partStats.loaded;\n if (partTotal) {\n var estTotalParts = Math.round(frag.duration / part.duration);\n var estLoadedParts = Math.min(Math.round(fragStats.loaded / partTotal), estTotalParts);\n var estRemainingParts = estTotalParts - estLoadedParts;\n var estRemainingBytes = estRemainingParts * Math.round(fragStats.loaded / estLoadedParts);\n fragStats.total = fragStats.loaded + estRemainingBytes;\n } else {\n fragStats.total = Math.max(fragStats.loaded, fragStats.total);\n }\n var fragLoading = fragStats.loading;\n var partLoading = partStats.loading;\n if (fragLoading.start) {\n // add to fragment loader latency\n fragLoading.first += partLoading.first - partLoading.start;\n } else {\n fragLoading.start = partLoading.start;\n fragLoading.first = partLoading.first;\n }\n fragLoading.end = partLoading.end;\n };\n _proto.resetLoader = function resetLoader(frag, loader) {\n frag.loader = null;\n if (this.loader === loader) {\n self.clearTimeout(this.partLoadTimeout);\n this.loader = null;\n }\n loader.destroy();\n };\n return FragmentLoader;\n }();\n function createLoaderContext(frag, part) {\n if (part === void 0) {\n part = null;\n }\n var segment = part || frag;\n var loaderContext = {\n frag: frag,\n part: part,\n responseType: 'arraybuffer',\n url: segment.url,\n headers: {},\n rangeStart: 0,\n rangeEnd: 0\n };\n var start = segment.byteRangeStartOffset;\n var end = segment.byteRangeEndOffset;\n if (isFiniteNumber(start) && isFiniteNumber(end)) {\n var _frag$decryptdata;\n var byteRangeStart = start;\n var byteRangeEnd = end;\n if (frag.sn === 'initSegment' && ((_frag$decryptdata = frag.decryptdata) == null ? void 0 : _frag$decryptdata.method) === 'AES-128') {\n // MAP segment encrypted with method 'AES-128', when served with HTTP Range,\n // has the unencrypted size specified in the range.\n // Ref: https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-08#section-6.3.6\n var fragmentLen = end - start;\n if (fragmentLen % 16) {\n byteRangeEnd = end + (16 - fragmentLen % 16);\n }\n if (start !== 0) {\n loaderContext.resetIV = true;\n byteRangeStart = start - 16;\n }\n }\n loaderContext.rangeStart = byteRangeStart;\n loaderContext.rangeEnd = byteRangeEnd;\n }\n return loaderContext;\n }\n function createGapLoadError(frag, part) {\n var error = new Error(\"GAP \" + (frag.gap ? 'tag' : 'attribute') + \" found\");\n var errorData = {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_GAP,\n fatal: false,\n frag: frag,\n error: error,\n networkDetails: null\n };\n if (part) {\n errorData.part = part;\n }\n (part ? part : frag).stats.aborted = true;\n return new LoadError(errorData);\n }\n var LoadError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(LoadError, _Error);\n function LoadError(data) {\n var _this3;\n _this3 = _Error.call(this, data.error.message) || this;\n _this3.data = void 0;\n _this3.data = data;\n return _this3;\n }\n return LoadError;\n }( /*#__PURE__*/_wrapNativeSuper(Error));\n\n var AESCrypto = /*#__PURE__*/function () {\n function AESCrypto(subtle, iv) {\n this.subtle = void 0;\n this.aesIV = void 0;\n this.subtle = subtle;\n this.aesIV = iv;\n }\n var _proto = AESCrypto.prototype;\n _proto.decrypt = function decrypt(data, key) {\n return this.subtle.decrypt({\n name: 'AES-CBC',\n iv: this.aesIV\n }, key, data);\n };\n return AESCrypto;\n }();\n\n var FastAESKey = /*#__PURE__*/function () {\n function FastAESKey(subtle, key) {\n this.subtle = void 0;\n this.key = void 0;\n this.subtle = subtle;\n this.key = key;\n }\n var _proto = FastAESKey.prototype;\n _proto.expandKey = function expandKey() {\n return this.subtle.importKey('raw', this.key, {\n name: 'AES-CBC'\n }, false, ['encrypt', 'decrypt']);\n };\n return FastAESKey;\n }();\n\n // PKCS7\n function removePadding(array) {\n var outputBytes = array.byteLength;\n var paddingBytes = outputBytes && new DataView(array.buffer).getUint8(outputBytes - 1);\n if (paddingBytes) {\n return sliceUint8(array, 0, outputBytes - paddingBytes);\n }\n return array;\n }\n var AESDecryptor = /*#__PURE__*/function () {\n function AESDecryptor() {\n this.rcon = [0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.sBox = new Uint32Array(256);\n this.invSBox = new Uint32Array(256);\n this.key = new Uint32Array(0);\n this.ksRows = 0;\n this.keySize = 0;\n this.keySchedule = void 0;\n this.invKeySchedule = void 0;\n this.initTable();\n }\n\n // Using view.getUint32() also swaps the byte order.\n var _proto = AESDecryptor.prototype;\n _proto.uint8ArrayToUint32Array_ = function uint8ArrayToUint32Array_(arrayBuffer) {\n var view = new DataView(arrayBuffer);\n var newArray = new Uint32Array(4);\n for (var i = 0; i < 4; i++) {\n newArray[i] = view.getUint32(i * 4);\n }\n return newArray;\n };\n _proto.initTable = function initTable() {\n var sBox = this.sBox;\n var invSBox = this.invSBox;\n var subMix = this.subMix;\n var subMix0 = subMix[0];\n var subMix1 = subMix[1];\n var subMix2 = subMix[2];\n var subMix3 = subMix[3];\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var d = new Uint32Array(256);\n var x = 0;\n var xi = 0;\n var i = 0;\n for (i = 0; i < 256; i++) {\n if (i < 128) {\n d[i] = i << 1;\n } else {\n d[i] = i << 1 ^ 0x11b;\n }\n }\n for (i = 0; i < 256; i++) {\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n sBox[x] = sx;\n invSBox[sx] = x;\n\n // Compute multiplication\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4];\n\n // Compute sub/invSub bytes, mix columns tables\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n subMix0[x] = t << 24 | t >>> 8;\n subMix1[x] = t << 16 | t >>> 16;\n subMix2[x] = t << 8 | t >>> 24;\n subMix3[x] = t;\n\n // Compute inv sub bytes, inv mix columns tables\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n invSubMix0[sx] = t << 24 | t >>> 8;\n invSubMix1[sx] = t << 16 | t >>> 16;\n invSubMix2[sx] = t << 8 | t >>> 24;\n invSubMix3[sx] = t;\n\n // Compute next counter\n if (!x) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n };\n _proto.expandKey = function expandKey(keyBuffer) {\n // convert keyBuffer to Uint32Array\n var key = this.uint8ArrayToUint32Array_(keyBuffer);\n var sameKey = true;\n var offset = 0;\n while (offset < key.length && sameKey) {\n sameKey = key[offset] === this.key[offset];\n offset++;\n }\n if (sameKey) {\n return;\n }\n this.key = key;\n var keySize = this.keySize = key.length;\n if (keySize !== 4 && keySize !== 6 && keySize !== 8) {\n throw new Error('Invalid aes key size=' + keySize);\n }\n var ksRows = this.ksRows = (keySize + 6 + 1) * 4;\n var ksRow;\n var invKsRow;\n var keySchedule = this.keySchedule = new Uint32Array(ksRows);\n var invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows);\n var sbox = this.sBox;\n var rcon = this.rcon;\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var prev;\n var t;\n for (ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n prev = keySchedule[ksRow] = key[ksRow];\n continue;\n }\n t = prev;\n if (ksRow % keySize === 0) {\n // Rot word\n t = t << 8 | t >>> 24;\n\n // Sub word\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff];\n\n // Mix Rcon\n t ^= rcon[ksRow / keySize | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize === 4) {\n // Sub word\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff];\n }\n keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t) >>> 0;\n }\n for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n ksRow = ksRows - invKsRow;\n if (invKsRow & 3) {\n t = keySchedule[ksRow];\n } else {\n t = keySchedule[ksRow - 4];\n }\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n } else {\n invKeySchedule[invKsRow] = invSubMix0[sbox[t >>> 24]] ^ invSubMix1[sbox[t >>> 16 & 0xff]] ^ invSubMix2[sbox[t >>> 8 & 0xff]] ^ invSubMix3[sbox[t & 0xff]];\n }\n invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0;\n }\n }\n\n // Adding this as a method greatly improves performance.\n ;\n _proto.networkToHostOrderSwap = function networkToHostOrderSwap(word) {\n return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24;\n };\n _proto.decrypt = function decrypt(inputArrayBuffer, offset, aesIV) {\n var nRounds = this.keySize + 6;\n var invKeySchedule = this.invKeySchedule;\n var invSBOX = this.invSBox;\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var initVector = this.uint8ArrayToUint32Array_(aesIV);\n var initVector0 = initVector[0];\n var initVector1 = initVector[1];\n var initVector2 = initVector[2];\n var initVector3 = initVector[3];\n var inputInt32 = new Int32Array(inputArrayBuffer);\n var outputInt32 = new Int32Array(inputInt32.length);\n var t0, t1, t2, t3;\n var s0, s1, s2, s3;\n var inputWords0, inputWords1, inputWords2, inputWords3;\n var ksRow, i;\n var swapWord = this.networkToHostOrderSwap;\n while (offset < inputInt32.length) {\n inputWords0 = swapWord(inputInt32[offset]);\n inputWords1 = swapWord(inputInt32[offset + 1]);\n inputWords2 = swapWord(inputInt32[offset + 2]);\n inputWords3 = swapWord(inputInt32[offset + 3]);\n s0 = inputWords0 ^ invKeySchedule[0];\n s1 = inputWords3 ^ invKeySchedule[1];\n s2 = inputWords2 ^ invKeySchedule[2];\n s3 = inputWords1 ^ invKeySchedule[3];\n ksRow = 4;\n\n // Iterate through the rounds of decryption\n for (i = 1; i < nRounds; i++) {\n t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 0xff] ^ invSubMix2[s2 >> 8 & 0xff] ^ invSubMix3[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 0xff] ^ invSubMix2[s3 >> 8 & 0xff] ^ invSubMix3[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 0xff] ^ invSubMix2[s0 >> 8 & 0xff] ^ invSubMix3[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 0xff] ^ invSubMix2[s1 >> 8 & 0xff] ^ invSubMix3[s2 & 0xff] ^ invKeySchedule[ksRow + 3];\n // Update state\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n ksRow = ksRow + 4;\n }\n\n // Shift rows, sub bytes, add round key\n t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 0xff] << 16 ^ invSBOX[s2 >> 8 & 0xff] << 8 ^ invSBOX[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 0xff] << 16 ^ invSBOX[s3 >> 8 & 0xff] << 8 ^ invSBOX[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 0xff] << 16 ^ invSBOX[s0 >> 8 & 0xff] << 8 ^ invSBOX[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 0xff] << 16 ^ invSBOX[s1 >> 8 & 0xff] << 8 ^ invSBOX[s2 & 0xff] ^ invKeySchedule[ksRow + 3];\n\n // Write\n outputInt32[offset] = swapWord(t0 ^ initVector0);\n outputInt32[offset + 1] = swapWord(t3 ^ initVector1);\n outputInt32[offset + 2] = swapWord(t2 ^ initVector2);\n outputInt32[offset + 3] = swapWord(t1 ^ initVector3);\n\n // reset initVector to last 4 unsigned int\n initVector0 = inputWords0;\n initVector1 = inputWords1;\n initVector2 = inputWords2;\n initVector3 = inputWords3;\n offset = offset + 4;\n }\n return outputInt32.buffer;\n };\n return AESDecryptor;\n }();\n\n var CHUNK_SIZE = 16; // 16 bytes, 128 bits\n var Decrypter = /*#__PURE__*/function () {\n function Decrypter(config, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$removePKCS7Paddi = _ref.removePKCS7Padding,\n removePKCS7Padding = _ref$removePKCS7Paddi === void 0 ? true : _ref$removePKCS7Paddi;\n this.logEnabled = true;\n this.removePKCS7Padding = void 0;\n this.subtle = null;\n this.softwareDecrypter = null;\n this.key = null;\n this.fastAesKey = null;\n this.remainderData = null;\n this.currentIV = null;\n this.currentResult = null;\n this.useSoftware = void 0;\n this.useSoftware = config.enableSoftwareAES;\n this.removePKCS7Padding = removePKCS7Padding;\n // built in decryptor expects PKCS7 padding\n if (removePKCS7Padding) {\n try {\n var browserCrypto = self.crypto;\n if (browserCrypto) {\n this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n }\n } catch (e) {\n /* no-op */\n }\n }\n this.useSoftware = !this.subtle;\n }\n var _proto = Decrypter.prototype;\n _proto.destroy = function destroy() {\n this.subtle = null;\n this.softwareDecrypter = null;\n this.key = null;\n this.fastAesKey = null;\n this.remainderData = null;\n this.currentIV = null;\n this.currentResult = null;\n };\n _proto.isSync = function isSync() {\n return this.useSoftware;\n };\n _proto.flush = function flush() {\n var currentResult = this.currentResult,\n remainderData = this.remainderData;\n if (!currentResult || remainderData) {\n this.reset();\n return null;\n }\n var data = new Uint8Array(currentResult);\n this.reset();\n if (this.removePKCS7Padding) {\n return removePadding(data);\n }\n return data;\n };\n _proto.reset = function reset() {\n this.currentResult = null;\n this.currentIV = null;\n this.remainderData = null;\n if (this.softwareDecrypter) {\n this.softwareDecrypter = null;\n }\n };\n _proto.decrypt = function decrypt(data, key, iv) {\n var _this = this;\n if (this.useSoftware) {\n return new Promise(function (resolve, reject) {\n _this.softwareDecrypt(new Uint8Array(data), key, iv);\n var decryptResult = _this.flush();\n if (decryptResult) {\n resolve(decryptResult.buffer);\n } else {\n reject(new Error('[softwareDecrypt] Failed to decrypt data'));\n }\n });\n }\n return this.webCryptoDecrypt(new Uint8Array(data), key, iv);\n }\n\n // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n // data is handled in the flush() call\n ;\n _proto.softwareDecrypt = function softwareDecrypt(data, key, iv) {\n var currentIV = this.currentIV,\n currentResult = this.currentResult,\n remainderData = this.remainderData;\n this.logOnce('JS AES decrypt');\n // The output is staggered during progressive parsing - the current result is cached, and emitted on the next call\n // This is done in order to strip PKCS7 padding, which is found at the end of each segment. We only know we've reached\n // the end on flush(), but by that time we have already received all bytes for the segment.\n // Progressive decryption does not work with WebCrypto\n\n if (remainderData) {\n data = appendUint8Array(remainderData, data);\n this.remainderData = null;\n }\n\n // Byte length must be a multiple of 16 (AES-128 = 128 bit blocks = 16 bytes)\n var currentChunk = this.getValidChunk(data);\n if (!currentChunk.length) {\n return null;\n }\n if (currentIV) {\n iv = currentIV;\n }\n var softwareDecrypter = this.softwareDecrypter;\n if (!softwareDecrypter) {\n softwareDecrypter = this.softwareDecrypter = new AESDecryptor();\n }\n softwareDecrypter.expandKey(key);\n var result = currentResult;\n this.currentResult = softwareDecrypter.decrypt(currentChunk.buffer, 0, iv);\n this.currentIV = sliceUint8(currentChunk, -16).buffer;\n if (!result) {\n return null;\n }\n return result;\n };\n _proto.webCryptoDecrypt = function webCryptoDecrypt(data, key, iv) {\n var _this2 = this;\n if (this.key !== key || !this.fastAesKey) {\n if (!this.subtle) {\n return Promise.resolve(this.onWebCryptoError(data, key, iv));\n }\n this.key = key;\n this.fastAesKey = new FastAESKey(this.subtle, key);\n }\n return this.fastAesKey.expandKey().then(function (aesKey) {\n // decrypt using web crypto\n if (!_this2.subtle) {\n return Promise.reject(new Error('web crypto not initialized'));\n }\n _this2.logOnce('WebCrypto AES decrypt');\n var crypto = new AESCrypto(_this2.subtle, new Uint8Array(iv));\n return crypto.decrypt(data.buffer, aesKey);\n }).catch(function (err) {\n logger.warn(\"[decrypter]: WebCrypto Error, disable WebCrypto API, \" + err.name + \": \" + err.message);\n return _this2.onWebCryptoError(data, key, iv);\n });\n };\n _proto.onWebCryptoError = function onWebCryptoError(data, key, iv) {\n this.useSoftware = true;\n this.logEnabled = true;\n this.softwareDecrypt(data, key, iv);\n var decryptResult = this.flush();\n if (decryptResult) {\n return decryptResult.buffer;\n }\n throw new Error('WebCrypto and softwareDecrypt: failed to decrypt data');\n };\n _proto.getValidChunk = function getValidChunk(data) {\n var currentChunk = data;\n var splitPoint = data.length - data.length % CHUNK_SIZE;\n if (splitPoint !== data.length) {\n currentChunk = sliceUint8(data, 0, splitPoint);\n this.remainderData = sliceUint8(data, splitPoint);\n }\n return currentChunk;\n };\n _proto.logOnce = function logOnce(msg) {\n if (!this.logEnabled) {\n return;\n }\n logger.log(\"[decrypter]: \" + msg);\n this.logEnabled = false;\n };\n return Decrypter;\n }();\n\n /**\n * TimeRanges to string helper\n */\n\n var TimeRanges = {\n toString: function toString(r) {\n var log = '';\n var len = r.length;\n for (var i = 0; i < len; i++) {\n log += \"[\" + r.start(i).toFixed(3) + \"-\" + r.end(i).toFixed(3) + \"]\";\n }\n return log;\n }\n };\n\n var State = {\n STOPPED: 'STOPPED',\n IDLE: 'IDLE',\n KEY_LOADING: 'KEY_LOADING',\n FRAG_LOADING: 'FRAG_LOADING',\n FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY',\n WAITING_TRACK: 'WAITING_TRACK',\n PARSING: 'PARSING',\n PARSED: 'PARSED',\n ENDED: 'ENDED',\n ERROR: 'ERROR',\n WAITING_INIT_PTS: 'WAITING_INIT_PTS',\n WAITING_LEVEL: 'WAITING_LEVEL'\n };\n var BaseStreamController = /*#__PURE__*/function (_TaskLoop) {\n _inheritsLoose(BaseStreamController, _TaskLoop);\n function BaseStreamController(hls, fragmentTracker, keyLoader, logPrefix, playlistType) {\n var _this;\n _this = _TaskLoop.call(this) || this;\n _this.hls = void 0;\n _this.fragPrevious = null;\n _this.fragCurrent = null;\n _this.fragmentTracker = void 0;\n _this.transmuxer = null;\n _this._state = State.STOPPED;\n _this.playlistType = void 0;\n _this.media = null;\n _this.mediaBuffer = null;\n _this.config = void 0;\n _this.bitrateTest = false;\n _this.lastCurrentTime = 0;\n _this.nextLoadPosition = 0;\n _this.startPosition = 0;\n _this.startTimeOffset = null;\n _this.loadedmetadata = false;\n _this.retryDate = 0;\n _this.levels = null;\n _this.fragmentLoader = void 0;\n _this.keyLoader = void 0;\n _this.levelLastLoaded = null;\n _this.startFragRequested = false;\n _this.decrypter = void 0;\n _this.initPTS = [];\n _this.onvseeking = null;\n _this.onvended = null;\n _this.logPrefix = '';\n _this.log = void 0;\n _this.warn = void 0;\n _this.playlistType = playlistType;\n _this.logPrefix = logPrefix;\n _this.log = logger.log.bind(logger, logPrefix + \":\");\n _this.warn = logger.warn.bind(logger, logPrefix + \":\");\n _this.hls = hls;\n _this.fragmentLoader = new FragmentLoader(hls.config);\n _this.keyLoader = keyLoader;\n _this.fragmentTracker = fragmentTracker;\n _this.config = hls.config;\n _this.decrypter = new Decrypter(hls.config);\n hls.on(Events.MANIFEST_LOADED, _this.onManifestLoaded, _assertThisInitialized(_this));\n return _this;\n }\n var _proto = BaseStreamController.prototype;\n _proto.doTick = function doTick() {\n this.onTickEnd();\n };\n _proto.onTickEnd = function onTickEnd() {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ;\n _proto.startLoad = function startLoad(startPosition) {};\n _proto.stopLoad = function stopLoad() {\n this.fragmentLoader.abort();\n this.keyLoader.abort(this.playlistType);\n var frag = this.fragCurrent;\n if (frag != null && frag.loader) {\n frag.abortRequests();\n this.fragmentTracker.removeFragment(frag);\n }\n this.resetTransmuxer();\n this.fragCurrent = null;\n this.fragPrevious = null;\n this.clearInterval();\n this.clearNextTick();\n this.state = State.STOPPED;\n };\n _proto._streamEnded = function _streamEnded(bufferInfo, levelDetails) {\n // If playlist is live, there is another buffered range after the current range, nothing buffered, media is detached,\n // of nothing loading/loaded return false\n if (levelDetails.live || bufferInfo.nextStart || !bufferInfo.end || !this.media) {\n return false;\n }\n var partList = levelDetails.partList;\n // Since the last part isn't guaranteed to correspond to the last playlist segment for Low-Latency HLS,\n // check instead if the last part is buffered.\n if (partList != null && partList.length) {\n var lastPart = partList[partList.length - 1];\n\n // Checking the midpoint of the part for potential margin of error and related issues.\n // NOTE: Technically I believe parts could yield content that is < the computed duration (including potential a duration of 0)\n // and still be spec-compliant, so there may still be edge cases here. Likewise, there could be issues in end of stream\n // part mismatches for independent audio and video playlists/segments.\n var lastPartBuffered = BufferHelper.isBuffered(this.media, lastPart.start + lastPart.duration / 2);\n return lastPartBuffered;\n }\n var playlistType = levelDetails.fragments[levelDetails.fragments.length - 1].type;\n return this.fragmentTracker.isEndListAppended(playlistType);\n };\n _proto.getLevelDetails = function getLevelDetails() {\n if (this.levels && this.levelLastLoaded !== null) {\n var _this$levelLastLoaded;\n return (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details;\n }\n };\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n var media = this.media = this.mediaBuffer = data.media;\n this.onvseeking = this.onMediaSeeking.bind(this);\n this.onvended = this.onMediaEnded.bind(this);\n media.addEventListener('seeking', this.onvseeking);\n media.addEventListener('ended', this.onvended);\n var config = this.config;\n if (this.levels && config.autoStartLoad && this.state === State.STOPPED) {\n this.startLoad(config.startPosition);\n }\n };\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media;\n if (media != null && media.ended) {\n this.log('MSE detaching and video ended, reset startPosition');\n this.startPosition = this.lastCurrentTime = 0;\n }\n\n // remove video listeners\n if (media && this.onvseeking && this.onvended) {\n media.removeEventListener('seeking', this.onvseeking);\n media.removeEventListener('ended', this.onvended);\n this.onvseeking = this.onvended = null;\n }\n if (this.keyLoader) {\n this.keyLoader.detach();\n }\n this.media = this.mediaBuffer = null;\n this.loadedmetadata = false;\n this.fragmentTracker.removeAllFragments();\n this.stopLoad();\n };\n _proto.onMediaSeeking = function onMediaSeeking() {\n var config = this.config,\n fragCurrent = this.fragCurrent,\n media = this.media,\n mediaBuffer = this.mediaBuffer,\n state = this.state;\n var currentTime = media ? media.currentTime : 0;\n var bufferInfo = BufferHelper.bufferInfo(mediaBuffer ? mediaBuffer : media, currentTime, config.maxBufferHole);\n this.log(\"media seeking to \" + (isFiniteNumber(currentTime) ? currentTime.toFixed(3) : currentTime) + \", state: \" + state);\n if (this.state === State.ENDED) {\n this.resetLoadingState();\n } else if (fragCurrent) {\n // Seeking while frag load is in progress\n var tolerance = config.maxFragLookUpTolerance;\n var fragStartOffset = fragCurrent.start - tolerance;\n var fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance;\n // if seeking out of buffered range or into new one\n if (!bufferInfo.len || fragEndOffset < bufferInfo.start || fragStartOffset > bufferInfo.end) {\n var pastFragment = currentTime > fragEndOffset;\n // if the seek position is outside the current fragment range\n if (currentTime < fragStartOffset || pastFragment) {\n if (pastFragment && fragCurrent.loader) {\n this.log('seeking outside of buffer while fragment load in progress, cancel fragment load');\n fragCurrent.abortRequests();\n this.resetLoadingState();\n }\n this.fragPrevious = null;\n }\n }\n }\n if (media) {\n // Remove gap fragments\n this.fragmentTracker.removeFragmentsInRange(currentTime, Infinity, this.playlistType, true);\n this.lastCurrentTime = currentTime;\n }\n\n // in case seeking occurs although no media buffered, adjust startPosition and nextLoadPosition to seek target\n if (!this.loadedmetadata && !bufferInfo.len) {\n this.nextLoadPosition = this.startPosition = currentTime;\n }\n\n // Async tick to speed up processing\n this.tickImmediate();\n };\n _proto.onMediaEnded = function onMediaEnded() {\n // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n this.startPosition = this.lastCurrentTime = 0;\n };\n _proto.onManifestLoaded = function onManifestLoaded(event, data) {\n this.startTimeOffset = data.startTimeOffset;\n this.initPTS = [];\n };\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this.hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n this.stopLoad();\n _TaskLoop.prototype.onHandlerDestroying.call(this);\n // @ts-ignore\n this.hls = null;\n };\n _proto.onHandlerDestroyed = function onHandlerDestroyed() {\n this.state = State.STOPPED;\n if (this.fragmentLoader) {\n this.fragmentLoader.destroy();\n }\n if (this.keyLoader) {\n this.keyLoader.destroy();\n }\n if (this.decrypter) {\n this.decrypter.destroy();\n }\n this.hls = this.log = this.warn = this.decrypter = this.keyLoader = this.fragmentLoader = this.fragmentTracker = null;\n _TaskLoop.prototype.onHandlerDestroyed.call(this);\n };\n _proto.loadFragment = function loadFragment(frag, level, targetBufferTime) {\n this._loadFragForPlayback(frag, level, targetBufferTime);\n };\n _proto._loadFragForPlayback = function _loadFragForPlayback(frag, level, targetBufferTime) {\n var _this2 = this;\n var progressCallback = function progressCallback(data) {\n if (_this2.fragContextChanged(frag)) {\n _this2.warn(\"Fragment \" + frag.sn + (data.part ? ' p: ' + data.part.index : '') + \" of level \" + frag.level + \" was dropped during download.\");\n _this2.fragmentTracker.removeFragment(frag);\n return;\n }\n frag.stats.chunkCount++;\n _this2._handleFragmentLoadProgress(data);\n };\n this._doFragLoad(frag, level, targetBufferTime, progressCallback).then(function (data) {\n if (!data) {\n // if we're here we probably needed to backtrack or are waiting for more parts\n return;\n }\n var state = _this2.state;\n if (_this2.fragContextChanged(frag)) {\n if (state === State.FRAG_LOADING || !_this2.fragCurrent && state === State.PARSING) {\n _this2.fragmentTracker.removeFragment(frag);\n _this2.state = State.IDLE;\n }\n return;\n }\n if ('payload' in data) {\n _this2.log(\"Loaded fragment \" + frag.sn + \" of level \" + frag.level);\n _this2.hls.trigger(Events.FRAG_LOADED, data);\n }\n\n // Pass through the whole payload; controllers not implementing progressive loading receive data from this callback\n _this2._handleFragmentLoadComplete(data);\n }).catch(function (reason) {\n if (_this2.state === State.STOPPED || _this2.state === State.ERROR) {\n return;\n }\n _this2.warn(\"Frag error: \" + ((reason == null ? void 0 : reason.message) || reason));\n _this2.resetFragmentLoading(frag);\n });\n };\n _proto.clearTrackerIfNeeded = function clearTrackerIfNeeded(frag) {\n var _this$mediaBuffer;\n var fragmentTracker = this.fragmentTracker;\n var fragState = fragmentTracker.getState(frag);\n if (fragState === FragmentState.APPENDING) {\n // Lower the max buffer length and try again\n var playlistType = frag.type;\n var bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, playlistType);\n var minForwardBufferLength = Math.max(frag.duration, bufferedInfo ? bufferedInfo.len : this.config.maxBufferLength);\n // If backtracking, always remove from the tracker without reducing max buffer length\n var backtrackFragment = this.backtrackFragment;\n var backtracked = backtrackFragment ? frag.sn - backtrackFragment.sn : 0;\n if (backtracked === 1 || this.reduceMaxBufferLength(minForwardBufferLength)) {\n fragmentTracker.removeFragment(frag);\n }\n } else if (((_this$mediaBuffer = this.mediaBuffer) == null ? void 0 : _this$mediaBuffer.buffered.length) === 0) {\n // Stop gap for bad tracker / buffer flush behavior\n fragmentTracker.removeAllFragments();\n } else if (fragmentTracker.hasParts(frag.type)) {\n // In low latency mode, remove fragments for which only some parts were buffered\n fragmentTracker.detectPartialFragments({\n frag: frag,\n part: null,\n stats: frag.stats,\n id: frag.type\n });\n if (fragmentTracker.getState(frag) === FragmentState.PARTIAL) {\n fragmentTracker.removeFragment(frag);\n }\n }\n };\n _proto.checkLiveUpdate = function checkLiveUpdate(details) {\n if (details.updated && !details.live) {\n // Live stream ended, update fragment tracker\n var lastFragment = details.fragments[details.fragments.length - 1];\n this.fragmentTracker.detectPartialFragments({\n frag: lastFragment,\n part: null,\n stats: lastFragment.stats,\n id: lastFragment.type\n });\n }\n if (!details.fragments[0]) {\n details.deltaUpdateFailed = true;\n }\n };\n _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset, type) {\n if (type === void 0) {\n type = null;\n }\n if (!(startOffset - endOffset)) {\n return;\n }\n // When alternate audio is playing, the audio-stream-controller is responsible for the audio buffer. Otherwise,\n // passing a null type flushes both buffers\n var flushScope = {\n startOffset: startOffset,\n endOffset: endOffset,\n type: type\n };\n this.hls.trigger(Events.BUFFER_FLUSHING, flushScope);\n };\n _proto._loadInitSegment = function _loadInitSegment(frag, level) {\n var _this3 = this;\n this._doFragLoad(frag, level).then(function (data) {\n if (!data || _this3.fragContextChanged(frag) || !_this3.levels) {\n throw new Error('init load aborted');\n }\n return data;\n }).then(function (data) {\n var hls = _this3.hls;\n var payload = data.payload;\n var decryptData = frag.decryptdata;\n\n // check to see if the payload needs to be decrypted\n if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && decryptData.method === 'AES-128') {\n var startTime = self.performance.now();\n // decrypt init segment data\n return _this3.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).catch(function (err) {\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_DECRYPT_ERROR,\n fatal: false,\n error: err,\n reason: err.message,\n frag: frag\n });\n throw err;\n }).then(function (decryptedData) {\n var endTime = self.performance.now();\n hls.trigger(Events.FRAG_DECRYPTED, {\n frag: frag,\n payload: decryptedData,\n stats: {\n tstart: startTime,\n tdecrypt: endTime\n }\n });\n data.payload = decryptedData;\n return _this3.completeInitSegmentLoad(data);\n });\n }\n return _this3.completeInitSegmentLoad(data);\n }).catch(function (reason) {\n if (_this3.state === State.STOPPED || _this3.state === State.ERROR) {\n return;\n }\n _this3.warn(reason);\n _this3.resetFragmentLoading(frag);\n });\n };\n _proto.completeInitSegmentLoad = function completeInitSegmentLoad(data) {\n var levels = this.levels;\n if (!levels) {\n throw new Error('init load aborted, missing levels');\n }\n var stats = data.frag.stats;\n this.state = State.IDLE;\n data.frag.data = new Uint8Array(data.payload);\n stats.parsing.start = stats.buffering.start = self.performance.now();\n stats.parsing.end = stats.buffering.end = self.performance.now();\n this.tick();\n };\n _proto.fragContextChanged = function fragContextChanged(frag) {\n var fragCurrent = this.fragCurrent;\n return !frag || !fragCurrent || frag.sn !== fragCurrent.sn || frag.level !== fragCurrent.level;\n };\n _proto.fragBufferedComplete = function fragBufferedComplete(frag, part) {\n var _frag$startPTS, _frag$endPTS, _this$fragCurrent, _this$fragPrevious;\n var media = this.mediaBuffer ? this.mediaBuffer : this.media;\n this.log(\"Buffered \" + frag.type + \" sn: \" + frag.sn + (part ? ' part: ' + part.index : '') + \" of \" + (this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track') + \" \" + frag.level + \" (frag:[\" + ((_frag$startPTS = frag.startPTS) != null ? _frag$startPTS : NaN).toFixed(3) + \"-\" + ((_frag$endPTS = frag.endPTS) != null ? _frag$endPTS : NaN).toFixed(3) + \"] > buffer:\" + (media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)') + \")\");\n if (frag.sn !== 'initSegment') {\n var _this$levels;\n if (frag.type !== PlaylistLevelType.SUBTITLE) {\n var el = frag.elementaryStreams;\n if (!Object.keys(el).some(function (type) {\n return !!el[type];\n })) {\n // empty segment\n this.state = State.IDLE;\n return;\n }\n }\n var level = (_this$levels = this.levels) == null ? void 0 : _this$levels[frag.level];\n if (level != null && level.fragmentError) {\n this.log(\"Resetting level fragment error count of \" + level.fragmentError + \" on frag buffered\");\n level.fragmentError = 0;\n }\n }\n this.state = State.IDLE;\n if (!media) {\n return;\n }\n if (!this.loadedmetadata && frag.type == PlaylistLevelType.MAIN && media.buffered.length && ((_this$fragCurrent = this.fragCurrent) == null ? void 0 : _this$fragCurrent.sn) === ((_this$fragPrevious = this.fragPrevious) == null ? void 0 : _this$fragPrevious.sn)) {\n this.loadedmetadata = true;\n this.seekToStartPos();\n }\n this.tick();\n };\n _proto.seekToStartPos = function seekToStartPos() {};\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedEndData) {\n var transmuxer = this.transmuxer;\n if (!transmuxer) {\n return;\n }\n var frag = fragLoadedEndData.frag,\n part = fragLoadedEndData.part,\n partsLoaded = fragLoadedEndData.partsLoaded;\n // If we did not load parts, or loaded all parts, we have complete (not partial) fragment data\n var complete = !partsLoaded || partsLoaded.length === 0 || partsLoaded.some(function (fragLoaded) {\n return !fragLoaded;\n });\n var chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount + 1, 0, part ? part.index : -1, !complete);\n transmuxer.flush(chunkMeta);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ;\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(frag) {};\n _proto._doFragLoad = function _doFragLoad(frag, level, targetBufferTime, progressCallback) {\n var _frag$decryptdata,\n _this4 = this;\n if (targetBufferTime === void 0) {\n targetBufferTime = null;\n }\n var details = level == null ? void 0 : level.details;\n if (!this.levels || !details) {\n throw new Error(\"frag load aborted, missing level\" + (details ? '' : ' detail') + \"s\");\n }\n var keyLoadingPromise = null;\n if (frag.encrypted && !((_frag$decryptdata = frag.decryptdata) != null && _frag$decryptdata.key)) {\n this.log(\"Loading key for \" + frag.sn + \" of [\" + details.startSN + \"-\" + details.endSN + \"], \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \" \" + frag.level);\n this.state = State.KEY_LOADING;\n this.fragCurrent = frag;\n keyLoadingPromise = this.keyLoader.load(frag).then(function (keyLoadedData) {\n if (!_this4.fragContextChanged(keyLoadedData.frag)) {\n _this4.hls.trigger(Events.KEY_LOADED, keyLoadedData);\n if (_this4.state === State.KEY_LOADING) {\n _this4.state = State.IDLE;\n }\n return keyLoadedData;\n }\n });\n this.hls.trigger(Events.KEY_LOADING, {\n frag: frag\n });\n if (this.fragCurrent === null) {\n keyLoadingPromise = Promise.reject(new Error(\"frag load aborted, context changed in KEY_LOADING\"));\n }\n } else if (!frag.encrypted && details.encryptedFragments.length) {\n this.keyLoader.loadClear(frag, details.encryptedFragments);\n }\n targetBufferTime = Math.max(frag.start, targetBufferTime || 0);\n if (this.config.lowLatencyMode && frag.sn !== 'initSegment') {\n var partList = details.partList;\n if (partList && progressCallback) {\n if (targetBufferTime > frag.end && details.fragmentHint) {\n frag = details.fragmentHint;\n }\n var partIndex = this.getNextPart(partList, frag, targetBufferTime);\n if (partIndex > -1) {\n var part = partList[partIndex];\n this.log(\"Loading part sn: \" + frag.sn + \" p: \" + part.index + \" cc: \" + frag.cc + \" of playlist [\" + details.startSN + \"-\" + details.endSN + \"] parts [0-\" + partIndex + \"-\" + (partList.length - 1) + \"] \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \": \" + frag.level + \", target: \" + parseFloat(targetBufferTime.toFixed(3)));\n this.nextLoadPosition = part.start + part.duration;\n this.state = State.FRAG_LOADING;\n var _result;\n if (keyLoadingPromise) {\n _result = keyLoadingPromise.then(function (keyLoadedData) {\n if (!keyLoadedData || _this4.fragContextChanged(keyLoadedData.frag)) {\n return null;\n }\n return _this4.doFragPartsLoad(frag, part, level, progressCallback);\n }).catch(function (error) {\n return _this4.handleFragLoadError(error);\n });\n } else {\n _result = this.doFragPartsLoad(frag, part, level, progressCallback).catch(function (error) {\n return _this4.handleFragLoadError(error);\n });\n }\n this.hls.trigger(Events.FRAG_LOADING, {\n frag: frag,\n part: part,\n targetBufferTime: targetBufferTime\n });\n if (this.fragCurrent === null) {\n return Promise.reject(new Error(\"frag load aborted, context changed in FRAG_LOADING parts\"));\n }\n return _result;\n } else if (!frag.url || this.loadedEndOfParts(partList, targetBufferTime)) {\n // Fragment hint has no parts\n return Promise.resolve(null);\n }\n }\n }\n this.log(\"Loading fragment \" + frag.sn + \" cc: \" + frag.cc + \" \" + (details ? 'of [' + details.startSN + '-' + details.endSN + '] ' : '') + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \": \" + frag.level + \", target: \" + parseFloat(targetBufferTime.toFixed(3)));\n // Don't update nextLoadPosition for fragments which are not buffered\n if (isFiniteNumber(frag.sn) && !this.bitrateTest) {\n this.nextLoadPosition = frag.start + frag.duration;\n }\n this.state = State.FRAG_LOADING;\n\n // Load key before streaming fragment data\n var dataOnProgress = this.config.progressive;\n var result;\n if (dataOnProgress && keyLoadingPromise) {\n result = keyLoadingPromise.then(function (keyLoadedData) {\n if (!keyLoadedData || _this4.fragContextChanged(keyLoadedData == null ? void 0 : keyLoadedData.frag)) {\n return null;\n }\n return _this4.fragmentLoader.load(frag, progressCallback);\n }).catch(function (error) {\n return _this4.handleFragLoadError(error);\n });\n } else {\n // load unencrypted fragment data with progress event,\n // or handle fragment result after key and fragment are finished loading\n result = Promise.all([this.fragmentLoader.load(frag, dataOnProgress ? progressCallback : undefined), keyLoadingPromise]).then(function (_ref) {\n var fragLoadedData = _ref[0];\n if (!dataOnProgress && fragLoadedData && progressCallback) {\n progressCallback(fragLoadedData);\n }\n return fragLoadedData;\n }).catch(function (error) {\n return _this4.handleFragLoadError(error);\n });\n }\n this.hls.trigger(Events.FRAG_LOADING, {\n frag: frag,\n targetBufferTime: targetBufferTime\n });\n if (this.fragCurrent === null) {\n return Promise.reject(new Error(\"frag load aborted, context changed in FRAG_LOADING\"));\n }\n return result;\n };\n _proto.doFragPartsLoad = function doFragPartsLoad(frag, fromPart, level, progressCallback) {\n var _this5 = this;\n return new Promise(function (resolve, reject) {\n var _level$details;\n var partsLoaded = [];\n var initialPartList = (_level$details = level.details) == null ? void 0 : _level$details.partList;\n var loadPart = function loadPart(part) {\n _this5.fragmentLoader.loadPart(frag, part, progressCallback).then(function (partLoadedData) {\n partsLoaded[part.index] = partLoadedData;\n var loadedPart = partLoadedData.part;\n _this5.hls.trigger(Events.FRAG_LOADED, partLoadedData);\n var nextPart = getPartWith(level, frag.sn, part.index + 1) || findPart(initialPartList, frag.sn, part.index + 1);\n if (nextPart) {\n loadPart(nextPart);\n } else {\n return resolve({\n frag: frag,\n part: loadedPart,\n partsLoaded: partsLoaded\n });\n }\n }).catch(reject);\n };\n loadPart(fromPart);\n });\n };\n _proto.handleFragLoadError = function handleFragLoadError(error) {\n if ('data' in error) {\n var data = error.data;\n if (error.data && data.details === ErrorDetails.INTERNAL_ABORTED) {\n this.handleFragLoadAborted(data.frag, data.part);\n } else {\n this.hls.trigger(Events.ERROR, data);\n }\n } else {\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.OTHER_ERROR,\n details: ErrorDetails.INTERNAL_EXCEPTION,\n err: error,\n error: error,\n fatal: true\n });\n }\n return null;\n };\n _proto._handleTransmuxerFlush = function _handleTransmuxerFlush(chunkMeta) {\n var context = this.getCurrentContext(chunkMeta);\n if (!context || this.state !== State.PARSING) {\n if (!this.fragCurrent && this.state !== State.STOPPED && this.state !== State.ERROR) {\n this.state = State.IDLE;\n }\n return;\n }\n var frag = context.frag,\n part = context.part,\n level = context.level;\n var now = self.performance.now();\n frag.stats.parsing.end = now;\n if (part) {\n part.stats.parsing.end = now;\n }\n this.updateLevelTiming(frag, part, level, chunkMeta.partial);\n };\n _proto.getCurrentContext = function getCurrentContext(chunkMeta) {\n var levels = this.levels,\n fragCurrent = this.fragCurrent;\n var levelIndex = chunkMeta.level,\n sn = chunkMeta.sn,\n partIndex = chunkMeta.part;\n if (!(levels != null && levels[levelIndex])) {\n this.warn(\"Levels object was unset while buffering fragment \" + sn + \" of level \" + levelIndex + \". The current chunk will not be buffered.\");\n return null;\n }\n var level = levels[levelIndex];\n var part = partIndex > -1 ? getPartWith(level, sn, partIndex) : null;\n var frag = part ? part.fragment : getFragmentWithSN(level, sn, fragCurrent);\n if (!frag) {\n return null;\n }\n if (fragCurrent && fragCurrent !== frag) {\n frag.stats = fragCurrent.stats;\n }\n return {\n frag: frag,\n part: part,\n level: level\n };\n };\n _proto.bufferFragmentData = function bufferFragmentData(data, frag, part, chunkMeta, noBacktracking) {\n var _buffer;\n if (!data || this.state !== State.PARSING) {\n return;\n }\n var data1 = data.data1,\n data2 = data.data2;\n var buffer = data1;\n if (data1 && data2) {\n // Combine the moof + mdat so that we buffer with a single append\n buffer = appendUint8Array(data1, data2);\n }\n if (!((_buffer = buffer) != null && _buffer.length)) {\n return;\n }\n var segment = {\n type: data.type,\n frag: frag,\n part: part,\n chunkMeta: chunkMeta,\n parent: frag.type,\n data: buffer\n };\n this.hls.trigger(Events.BUFFER_APPENDING, segment);\n if (data.dropped && data.independent && !part) {\n if (noBacktracking) {\n return;\n }\n // Clear buffer so that we reload previous segments sequentially if required\n this.flushBufferGap(frag);\n }\n };\n _proto.flushBufferGap = function flushBufferGap(frag) {\n var media = this.media;\n if (!media) {\n return;\n }\n // If currentTime is not buffered, clear the back buffer so that we can backtrack as much as needed\n if (!BufferHelper.isBuffered(media, media.currentTime)) {\n this.flushMainBuffer(0, frag.start);\n return;\n }\n // Remove back-buffer without interrupting playback to allow back tracking\n var currentTime = media.currentTime;\n var bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n var fragDuration = frag.duration;\n var segmentFraction = Math.min(this.config.maxFragLookUpTolerance * 2, fragDuration * 0.25);\n var start = Math.max(Math.min(frag.start - segmentFraction, bufferInfo.end - segmentFraction), currentTime + segmentFraction);\n if (frag.start - start > segmentFraction) {\n this.flushMainBuffer(start, frag.start);\n }\n };\n _proto.getFwdBufferInfo = function getFwdBufferInfo(bufferable, type) {\n var pos = this.getLoadPosition();\n if (!isFiniteNumber(pos)) {\n return null;\n }\n return this.getFwdBufferInfoAtPos(bufferable, pos, type);\n };\n _proto.getFwdBufferInfoAtPos = function getFwdBufferInfoAtPos(bufferable, pos, type) {\n var maxBufferHole = this.config.maxBufferHole;\n var bufferInfo = BufferHelper.bufferInfo(bufferable, pos, maxBufferHole);\n // Workaround flaw in getting forward buffer when maxBufferHole is smaller than gap at current pos\n if (bufferInfo.len === 0 && bufferInfo.nextStart !== undefined) {\n var bufferedFragAtPos = this.fragmentTracker.getBufferedFrag(pos, type);\n if (bufferedFragAtPos && bufferInfo.nextStart < bufferedFragAtPos.end) {\n return BufferHelper.bufferInfo(bufferable, pos, Math.max(bufferInfo.nextStart, maxBufferHole));\n }\n }\n return bufferInfo;\n };\n _proto.getMaxBufferLength = function getMaxBufferLength(levelBitrate) {\n var config = this.config;\n var maxBufLen;\n if (levelBitrate) {\n maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength);\n } else {\n maxBufLen = config.maxBufferLength;\n }\n return Math.min(maxBufLen, config.maxMaxBufferLength);\n };\n _proto.reduceMaxBufferLength = function reduceMaxBufferLength(threshold) {\n var config = this.config;\n var minLength = threshold || config.maxBufferLength;\n var reducedLength = config.maxMaxBufferLength / 2;\n if (reducedLength >= minLength) {\n // reduce max buffer length as it might be too high. we do this to avoid loop flushing ...\n config.maxMaxBufferLength = reducedLength;\n this.warn(\"Reduce max buffer length to \" + reducedLength + \"s\");\n return true;\n }\n return false;\n };\n _proto.getAppendedFrag = function getAppendedFrag(position, playlistType) {\n var fragOrPart = this.fragmentTracker.getAppendedFrag(position, PlaylistLevelType.MAIN);\n if (fragOrPart && 'fragment' in fragOrPart) {\n return fragOrPart.fragment;\n }\n return fragOrPart;\n };\n _proto.getNextFragment = function getNextFragment(pos, levelDetails) {\n var fragments = levelDetails.fragments;\n var fragLen = fragments.length;\n if (!fragLen) {\n return null;\n }\n\n // find fragment index, contiguous with end of buffer position\n var config = this.config;\n var start = fragments[0].start;\n var frag;\n if (levelDetails.live) {\n var initialLiveManifestSize = config.initialLiveManifestSize;\n if (fragLen < initialLiveManifestSize) {\n this.warn(\"Not enough fragments to start playback (have: \" + fragLen + \", need: \" + initialLiveManifestSize + \")\");\n return null;\n }\n // The real fragment start times for a live stream are only known after the PTS range for that level is known.\n // In order to discover the range, we load the best matching fragment for that level and demux it.\n // Do not load using live logic if the starting frag is requested - we want to use getFragmentAtPosition() so that\n // we get the fragment matching that start time\n if (!levelDetails.PTSKnown && !this.startFragRequested && this.startPosition === -1 || pos < start) {\n frag = this.getInitialLiveFragment(levelDetails, fragments);\n this.startPosition = this.nextLoadPosition = frag ? this.hls.liveSyncPosition || frag.start : pos;\n }\n } else if (pos <= start) {\n // VoD playlist: if loadPosition before start of playlist, load first fragment\n frag = fragments[0];\n }\n\n // If we haven't run into any special cases already, just load the fragment most closely matching the requested position\n if (!frag) {\n var end = config.lowLatencyMode ? levelDetails.partEnd : levelDetails.fragmentEnd;\n frag = this.getFragmentAtPosition(pos, end, levelDetails);\n }\n return this.mapToInitFragWhenRequired(frag);\n };\n _proto.isLoopLoading = function isLoopLoading(frag, targetBufferTime) {\n var trackerState = this.fragmentTracker.getState(frag);\n return (trackerState === FragmentState.OK || trackerState === FragmentState.PARTIAL && !!frag.gap) && this.nextLoadPosition > targetBufferTime;\n };\n _proto.getNextFragmentLoopLoading = function getNextFragmentLoopLoading(frag, levelDetails, bufferInfo, playlistType, maxBufLen) {\n var gapStart = frag.gap;\n var nextFragment = this.getNextFragment(this.nextLoadPosition, levelDetails);\n if (nextFragment === null) {\n return nextFragment;\n }\n frag = nextFragment;\n if (gapStart && frag && !frag.gap && bufferInfo.nextStart) {\n // Media buffered after GAP tags should not make the next buffer timerange exceed forward buffer length\n var nextbufferInfo = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, bufferInfo.nextStart, playlistType);\n if (nextbufferInfo !== null && bufferInfo.len + nextbufferInfo.len >= maxBufLen) {\n // Returning here might result in not finding an audio and video candiate to skip to\n this.log(\"buffer full after gaps in \\\"\" + playlistType + \"\\\" playlist starting at sn: \" + frag.sn);\n return null;\n }\n }\n return frag;\n };\n _proto.mapToInitFragWhenRequired = function mapToInitFragWhenRequired(frag) {\n // If an initSegment is present, it must be buffered first\n if (frag != null && frag.initSegment && !(frag != null && frag.initSegment.data) && !this.bitrateTest) {\n return frag.initSegment;\n }\n return frag;\n };\n _proto.getNextPart = function getNextPart(partList, frag, targetBufferTime) {\n var nextPart = -1;\n var contiguous = false;\n var independentAttrOmitted = true;\n for (var i = 0, len = partList.length; i < len; i++) {\n var part = partList[i];\n independentAttrOmitted = independentAttrOmitted && !part.independent;\n if (nextPart > -1 && targetBufferTime < part.start) {\n break;\n }\n var loaded = part.loaded;\n if (loaded) {\n nextPart = -1;\n } else if ((contiguous || part.independent || independentAttrOmitted) && part.fragment === frag) {\n nextPart = i;\n }\n contiguous = loaded;\n }\n return nextPart;\n };\n _proto.loadedEndOfParts = function loadedEndOfParts(partList, targetBufferTime) {\n var lastPart = partList[partList.length - 1];\n return lastPart && targetBufferTime > lastPart.start && lastPart.loaded;\n }\n\n /*\n This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the\n \"sliding\" of the playlist, which is its offset from the start of playback. After sliding we can compute the real\n start and end times for each fragment in the playlist (after which this method will not need to be called).\n */;\n _proto.getInitialLiveFragment = function getInitialLiveFragment(levelDetails, fragments) {\n var fragPrevious = this.fragPrevious;\n var frag = null;\n if (fragPrevious) {\n if (levelDetails.hasProgramDateTime) {\n // Prefer using PDT, because it can be accurate enough to choose the correct fragment without knowing the level sliding\n this.log(\"Live playlist, switching playlist, load frag with same PDT: \" + fragPrevious.programDateTime);\n frag = findFragmentByPDT(fragments, fragPrevious.endProgramDateTime, this.config.maxFragLookUpTolerance);\n }\n if (!frag) {\n // SN does not need to be accurate between renditions, but depending on the packaging it may be so.\n var targetSN = fragPrevious.sn + 1;\n if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n var fragNext = fragments[targetSN - levelDetails.startSN];\n // Ensure that we're staying within the continuity range, since PTS resets upon a new range\n if (fragPrevious.cc === fragNext.cc) {\n frag = fragNext;\n this.log(\"Live playlist, switching playlist, load frag with next SN: \" + frag.sn);\n }\n }\n // It's important to stay within the continuity range if available; otherwise the fragments in the playlist\n // will have the wrong start times\n if (!frag) {\n frag = findFragWithCC(fragments, fragPrevious.cc);\n if (frag) {\n this.log(\"Live playlist, switching playlist, load frag with same CC: \" + frag.sn);\n }\n }\n }\n } else {\n // Find a new start fragment when fragPrevious is null\n var liveStart = this.hls.liveSyncPosition;\n if (liveStart !== null) {\n frag = this.getFragmentAtPosition(liveStart, this.bitrateTest ? levelDetails.fragmentEnd : levelDetails.edge, levelDetails);\n }\n }\n return frag;\n }\n\n /*\n This method finds the best matching fragment given the provided position.\n */;\n _proto.getFragmentAtPosition = function getFragmentAtPosition(bufferEnd, end, levelDetails) {\n var config = this.config;\n var fragPrevious = this.fragPrevious;\n var fragments = levelDetails.fragments,\n endSN = levelDetails.endSN;\n var fragmentHint = levelDetails.fragmentHint;\n var maxFragLookUpTolerance = config.maxFragLookUpTolerance;\n var partList = levelDetails.partList;\n var loadingParts = !!(config.lowLatencyMode && partList != null && partList.length && fragmentHint);\n if (loadingParts && fragmentHint && !this.bitrateTest) {\n // Include incomplete fragment with parts at end\n fragments = fragments.concat(fragmentHint);\n endSN = fragmentHint.sn;\n }\n var frag;\n if (bufferEnd < end) {\n var lookupTolerance = bufferEnd > end - maxFragLookUpTolerance ? 0 : maxFragLookUpTolerance;\n // Remove the tolerance if it would put the bufferEnd past the actual end of stream\n // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)\n frag = findFragmentByPTS(fragPrevious, fragments, bufferEnd, lookupTolerance);\n } else {\n // reach end of playlist\n frag = fragments[fragments.length - 1];\n }\n if (frag) {\n var curSNIdx = frag.sn - levelDetails.startSN;\n // Move fragPrevious forward to support forcing the next fragment to load\n // when the buffer catches up to a previously buffered range.\n var fragState = this.fragmentTracker.getState(frag);\n if (fragState === FragmentState.OK || fragState === FragmentState.PARTIAL && frag.gap) {\n fragPrevious = frag;\n }\n if (fragPrevious && frag.sn === fragPrevious.sn && (!loadingParts || partList[0].fragment.sn > frag.sn)) {\n // Force the next fragment to load if the previous one was already selected. This can occasionally happen with\n // non-uniform fragment durations\n var sameLevel = fragPrevious && frag.level === fragPrevious.level;\n if (sameLevel) {\n var nextFrag = fragments[curSNIdx + 1];\n if (frag.sn < endSN && this.fragmentTracker.getState(nextFrag) !== FragmentState.OK) {\n frag = nextFrag;\n } else {\n frag = null;\n }\n }\n }\n }\n return frag;\n };\n _proto.synchronizeToLiveEdge = function synchronizeToLiveEdge(levelDetails) {\n var config = this.config,\n media = this.media;\n if (!media) {\n return;\n }\n var liveSyncPosition = this.hls.liveSyncPosition;\n var currentTime = media.currentTime;\n var start = levelDetails.fragments[0].start;\n var end = levelDetails.edge;\n var withinSlidingWindow = currentTime >= start - config.maxFragLookUpTolerance && currentTime <= end;\n // Continue if we can seek forward to sync position or if current time is outside of sliding window\n if (liveSyncPosition !== null && media.duration > liveSyncPosition && (currentTime < liveSyncPosition || !withinSlidingWindow)) {\n // Continue if buffer is starving or if current time is behind max latency\n var maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration;\n if (!withinSlidingWindow && media.readyState < 4 || currentTime < end - maxLatency) {\n if (!this.loadedmetadata) {\n this.nextLoadPosition = liveSyncPosition;\n }\n // Only seek if ready and there is not a significant forward buffer available for playback\n if (media.readyState) {\n this.warn(\"Playback: \" + currentTime.toFixed(3) + \" is located too far from the end of live sliding playlist: \" + end + \", reset currentTime to : \" + liveSyncPosition.toFixed(3));\n media.currentTime = liveSyncPosition;\n }\n }\n }\n };\n _proto.alignPlaylists = function alignPlaylists(details, previousDetails, switchDetails) {\n // FIXME: If not for `shouldAlignOnDiscontinuities` requiring fragPrevious.cc,\n // this could all go in level-helper mergeDetails()\n var length = details.fragments.length;\n if (!length) {\n this.warn(\"No fragments in live playlist\");\n return 0;\n }\n var slidingStart = details.fragments[0].start;\n var firstLevelLoad = !previousDetails;\n var aligned = details.alignedSliding && isFiniteNumber(slidingStart);\n if (firstLevelLoad || !aligned && !slidingStart) {\n var fragPrevious = this.fragPrevious;\n alignStream(fragPrevious, switchDetails, details);\n var alignedSlidingStart = details.fragments[0].start;\n this.log(\"Live playlist sliding: \" + alignedSlidingStart.toFixed(2) + \" start-sn: \" + (previousDetails ? previousDetails.startSN : 'na') + \"->\" + details.startSN + \" prev-sn: \" + (fragPrevious ? fragPrevious.sn : 'na') + \" fragments: \" + length);\n return alignedSlidingStart;\n }\n return slidingStart;\n };\n _proto.waitForCdnTuneIn = function waitForCdnTuneIn(details) {\n // Wait for Low-Latency CDN Tune-in to get an updated playlist\n var advancePartLimit = 3;\n return details.live && details.canBlockReload && details.partTarget && details.tuneInGoal > Math.max(details.partHoldBack, details.partTarget * advancePartLimit);\n };\n _proto.setStartPosition = function setStartPosition(details, sliding) {\n // compute start position if set to -1. use it straight away if value is defined\n var startPosition = this.startPosition;\n if (startPosition < sliding) {\n startPosition = -1;\n }\n if (startPosition === -1 || this.lastCurrentTime === -1) {\n // Use Playlist EXT-X-START:TIME-OFFSET when set\n // Prioritize Multivariant Playlist offset so that main, audio, and subtitle stream-controller start times match\n var offsetInMultivariantPlaylist = this.startTimeOffset !== null;\n var startTimeOffset = offsetInMultivariantPlaylist ? this.startTimeOffset : details.startTimeOffset;\n if (startTimeOffset !== null && isFiniteNumber(startTimeOffset)) {\n startPosition = sliding + startTimeOffset;\n if (startTimeOffset < 0) {\n startPosition += details.totalduration;\n }\n startPosition = Math.min(Math.max(sliding, startPosition), sliding + details.totalduration);\n this.log(\"Start time offset \" + startTimeOffset + \" found in \" + (offsetInMultivariantPlaylist ? 'multivariant' : 'media') + \" playlist, adjust startPosition to \" + startPosition);\n this.startPosition = startPosition;\n } else if (details.live) {\n // Leave this.startPosition at -1, so that we can use `getInitialLiveFragment` logic when startPosition has\n // not been specified via the config or an as an argument to startLoad (#3736).\n startPosition = this.hls.liveSyncPosition || sliding;\n } else {\n this.startPosition = startPosition = 0;\n }\n this.lastCurrentTime = startPosition;\n }\n this.nextLoadPosition = startPosition;\n };\n _proto.getLoadPosition = function getLoadPosition() {\n var media = this.media;\n // if we have not yet loaded any fragment, start loading from start position\n var pos = 0;\n if (this.loadedmetadata && media) {\n pos = media.currentTime;\n } else if (this.nextLoadPosition) {\n pos = this.nextLoadPosition;\n }\n return pos;\n };\n _proto.handleFragLoadAborted = function handleFragLoadAborted(frag, part) {\n if (this.transmuxer && frag.sn !== 'initSegment' && frag.stats.aborted) {\n this.warn(\"Fragment \" + frag.sn + (part ? ' part ' + part.index : '') + \" of level \" + frag.level + \" was aborted\");\n this.resetFragmentLoading(frag);\n }\n };\n _proto.resetFragmentLoading = function resetFragmentLoading(frag) {\n if (!this.fragCurrent || !this.fragContextChanged(frag) && this.state !== State.FRAG_LOADING_WAITING_RETRY) {\n this.state = State.IDLE;\n }\n };\n _proto.onFragmentOrKeyLoadError = function onFragmentOrKeyLoadError(filterType, data) {\n if (data.chunkMeta && !data.frag) {\n var context = this.getCurrentContext(data.chunkMeta);\n if (context) {\n data.frag = context.frag;\n }\n }\n var frag = data.frag;\n // Handle frag error related to caller's filterType\n if (!frag || frag.type !== filterType || !this.levels) {\n return;\n }\n if (this.fragContextChanged(frag)) {\n var _this$fragCurrent2;\n this.warn(\"Frag load error must match current frag to retry \" + frag.url + \" > \" + ((_this$fragCurrent2 = this.fragCurrent) == null ? void 0 : _this$fragCurrent2.url));\n return;\n }\n var gapTagEncountered = data.details === ErrorDetails.FRAG_GAP;\n if (gapTagEncountered) {\n this.fragmentTracker.fragBuffered(frag, true);\n }\n // keep retrying until the limit will be reached\n var errorAction = data.errorAction;\n var _ref2 = errorAction || {},\n action = _ref2.action,\n _ref2$retryCount = _ref2.retryCount,\n retryCount = _ref2$retryCount === void 0 ? 0 : _ref2$retryCount,\n retryConfig = _ref2.retryConfig;\n if (errorAction && action === NetworkErrorAction.RetryRequest && retryConfig) {\n this.resetStartWhenNotLoaded(this.levelLastLoaded);\n var delay = getRetryDelay(retryConfig, retryCount);\n this.warn(\"Fragment \" + frag.sn + \" of \" + filterType + \" \" + frag.level + \" errored with \" + data.details + \", retrying loading \" + (retryCount + 1) + \"/\" + retryConfig.maxNumRetry + \" in \" + delay + \"ms\");\n errorAction.resolved = true;\n this.retryDate = self.performance.now() + delay;\n this.state = State.FRAG_LOADING_WAITING_RETRY;\n } else if (retryConfig && errorAction) {\n this.resetFragmentErrors(filterType);\n if (retryCount < retryConfig.maxNumRetry) {\n // Network retry is skipped when level switch is preferred\n if (!gapTagEncountered && action !== NetworkErrorAction.RemoveAlternatePermanently) {\n errorAction.resolved = true;\n }\n } else {\n logger.warn(data.details + \" reached or exceeded max retry (\" + retryCount + \")\");\n return;\n }\n } else if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox) {\n this.state = State.WAITING_LEVEL;\n } else {\n this.state = State.ERROR;\n }\n // Perform next async tick sooner to speed up error action resolution\n this.tickImmediate();\n };\n _proto.reduceLengthAndFlushBuffer = function reduceLengthAndFlushBuffer(data) {\n // if in appending state\n if (this.state === State.PARSING || this.state === State.PARSED) {\n var playlistType = data.parent;\n var bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, playlistType);\n // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end\n // reduce max buf len if current position is buffered\n var buffered = bufferedInfo && bufferedInfo.len > 0.5;\n if (buffered) {\n this.reduceMaxBufferLength(bufferedInfo.len);\n }\n var flushBuffer = !buffered;\n if (flushBuffer) {\n // current position is not buffered, but browser is still complaining about buffer full error\n // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n // in that case flush the whole audio buffer to recover\n this.warn(\"Buffer full error while media.currentTime is not buffered, flush \" + playlistType + \" buffer\");\n }\n if (data.frag) {\n this.fragmentTracker.removeFragment(data.frag);\n this.nextLoadPosition = data.frag.start;\n }\n this.resetLoadingState();\n return flushBuffer;\n }\n return false;\n };\n _proto.resetFragmentErrors = function resetFragmentErrors(filterType) {\n if (filterType === PlaylistLevelType.AUDIO) {\n // Reset current fragment since audio track audio is essential and may not have a fail-over track\n this.fragCurrent = null;\n }\n // Fragment errors that result in a level switch or redundant fail-over\n // should reset the stream controller state to idle\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n }\n if (this.state !== State.STOPPED) {\n this.state = State.IDLE;\n }\n };\n _proto.afterBufferFlushed = function afterBufferFlushed(media, bufferType, playlistType) {\n if (!media) {\n return;\n }\n // After successful buffer flushing, filter flushed fragments from bufferedFrags use mediaBuffered instead of media\n // (so that we will check against video.buffered ranges in case of alt audio track)\n var bufferedTimeRanges = BufferHelper.getBuffered(media);\n this.fragmentTracker.detectEvictedFragments(bufferType, bufferedTimeRanges, playlistType);\n if (this.state === State.ENDED) {\n this.resetLoadingState();\n }\n };\n _proto.resetLoadingState = function resetLoadingState() {\n this.log('Reset loading state');\n this.fragCurrent = null;\n this.fragPrevious = null;\n this.state = State.IDLE;\n };\n _proto.resetStartWhenNotLoaded = function resetStartWhenNotLoaded(level) {\n // if loadedmetadata is not set, it means that first frag request failed\n // in that case, reset startFragRequested flag\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n var details = level ? level.details : null;\n if (details != null && details.live) {\n // Update the start position and return to IDLE to recover live start\n this.startPosition = -1;\n this.setStartPosition(details, 0);\n this.resetLoadingState();\n } else {\n this.nextLoadPosition = this.startPosition;\n }\n }\n };\n _proto.resetWhenMissingContext = function resetWhenMissingContext(chunkMeta) {\n this.warn(\"The loading context changed while buffering fragment \" + chunkMeta.sn + \" of level \" + chunkMeta.level + \". This chunk will not be buffered.\");\n this.removeUnbufferedFrags();\n this.resetStartWhenNotLoaded(this.levelLastLoaded);\n this.resetLoadingState();\n };\n _proto.removeUnbufferedFrags = function removeUnbufferedFrags(start) {\n if (start === void 0) {\n start = 0;\n }\n this.fragmentTracker.removeFragmentsInRange(start, Infinity, this.playlistType, false, true);\n };\n _proto.updateLevelTiming = function updateLevelTiming(frag, part, level, partial) {\n var _this6 = this,\n _this$transmuxer;\n var details = level.details;\n if (!details) {\n this.warn('level.details undefined');\n return;\n }\n var parsed = Object.keys(frag.elementaryStreams).reduce(function (result, type) {\n var info = frag.elementaryStreams[type];\n if (info) {\n var parsedDuration = info.endPTS - info.startPTS;\n if (parsedDuration <= 0) {\n // Destroy the transmuxer after it's next time offset failed to advance because duration was <= 0.\n // The new transmuxer will be configured with a time offset matching the next fragment start,\n // preventing the timeline from shifting.\n _this6.warn(\"Could not parse fragment \" + frag.sn + \" \" + type + \" duration reliably (\" + parsedDuration + \")\");\n return result || false;\n }\n var drift = partial ? 0 : updateFragPTSDTS(details, frag, info.startPTS, info.endPTS, info.startDTS, info.endDTS);\n _this6.hls.trigger(Events.LEVEL_PTS_UPDATED, {\n details: details,\n level: level,\n drift: drift,\n type: type,\n frag: frag,\n start: info.startPTS,\n end: info.endPTS\n });\n return true;\n }\n return result;\n }, false);\n if (!parsed && ((_this$transmuxer = this.transmuxer) == null ? void 0 : _this$transmuxer.error) === null) {\n var error = new Error(\"Found no media in fragment \" + frag.sn + \" of level \" + frag.level + \" resetting transmuxer to fallback to playlist timing\");\n if (level.fragmentError === 0) {\n // Mark and track the odd empty segment as a gap to avoid reloading\n level.fragmentError++;\n frag.gap = true;\n this.fragmentTracker.removeFragment(frag);\n this.fragmentTracker.fragBuffered(frag, true);\n }\n this.warn(error.message);\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n fatal: false,\n error: error,\n frag: frag,\n reason: \"Found no media in msn \" + frag.sn + \" of level \\\"\" + level.url + \"\\\"\"\n });\n if (!this.hls) {\n return;\n }\n this.resetTransmuxer();\n // For this error fallthrough. Marking parsed will allow advancing to next fragment.\n }\n this.state = State.PARSED;\n this.hls.trigger(Events.FRAG_PARSED, {\n frag: frag,\n part: part\n });\n };\n _proto.resetTransmuxer = function resetTransmuxer() {\n if (this.transmuxer) {\n this.transmuxer.destroy();\n this.transmuxer = null;\n }\n };\n _proto.recoverWorkerError = function recoverWorkerError(data) {\n if (data.event === 'demuxerWorker') {\n this.fragmentTracker.removeAllFragments();\n this.resetTransmuxer();\n this.resetStartWhenNotLoaded(this.levelLastLoaded);\n this.resetLoadingState();\n }\n };\n _createClass(BaseStreamController, [{\n key: \"state\",\n get: function get() {\n return this._state;\n },\n set: function set(nextState) {\n var previousState = this._state;\n if (previousState !== nextState) {\n this._state = nextState;\n this.log(previousState + \"->\" + nextState);\n }\n }\n }]);\n return BaseStreamController;\n }(TaskLoop);\n\n var ChunkCache = /*#__PURE__*/function () {\n function ChunkCache() {\n this.chunks = [];\n this.dataLength = 0;\n }\n var _proto = ChunkCache.prototype;\n _proto.push = function push(chunk) {\n this.chunks.push(chunk);\n this.dataLength += chunk.length;\n };\n _proto.flush = function flush() {\n var chunks = this.chunks,\n dataLength = this.dataLength;\n var result;\n if (!chunks.length) {\n return new Uint8Array(0);\n } else if (chunks.length === 1) {\n result = chunks[0];\n } else {\n result = concatUint8Arrays(chunks, dataLength);\n }\n this.reset();\n return result;\n };\n _proto.reset = function reset() {\n this.chunks.length = 0;\n this.dataLength = 0;\n };\n return ChunkCache;\n }();\n function concatUint8Arrays(chunks, dataLength) {\n var result = new Uint8Array(dataLength);\n var offset = 0;\n for (var i = 0; i < chunks.length; i++) {\n var chunk = chunks[i];\n result.set(chunk, offset);\n offset += chunk.length;\n }\n return result;\n }\n\n function dummyTrack(type, inputTimeScale) {\n if (type === void 0) {\n type = '';\n }\n if (inputTimeScale === void 0) {\n inputTimeScale = 90000;\n }\n return {\n type: type,\n id: -1,\n pid: -1,\n inputTimeScale: inputTimeScale,\n sequenceNumber: -1,\n samples: [],\n dropped: 0\n };\n }\n\n var BaseAudioDemuxer = /*#__PURE__*/function () {\n function BaseAudioDemuxer() {\n this._audioTrack = void 0;\n this._id3Track = void 0;\n this.frameIndex = 0;\n this.cachedData = null;\n this.basePTS = null;\n this.initPTS = null;\n this.lastPTS = null;\n }\n var _proto = BaseAudioDemuxer.prototype;\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n this._id3Track = {\n type: 'id3',\n id: 3,\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: 0\n };\n };\n _proto.resetTimeStamp = function resetTimeStamp(deaultTimestamp) {\n this.initPTS = deaultTimestamp;\n this.resetContiguity();\n };\n _proto.resetContiguity = function resetContiguity() {\n this.basePTS = null;\n this.lastPTS = null;\n this.frameIndex = 0;\n };\n _proto.canParse = function canParse(data, offset) {\n return false;\n };\n _proto.appendFrame = function appendFrame(track, data, offset) {}\n\n // feed incoming data to the front of the parsing pipeline\n ;\n _proto.demux = function demux(data, timeOffset) {\n if (this.cachedData) {\n data = appendUint8Array(this.cachedData, data);\n this.cachedData = null;\n }\n var id3Data = getID3Data(data, 0);\n var offset = id3Data ? id3Data.length : 0;\n var lastDataIndex;\n var track = this._audioTrack;\n var id3Track = this._id3Track;\n var timestamp = id3Data ? getTimeStamp(id3Data) : undefined;\n var length = data.length;\n if (this.basePTS === null || this.frameIndex === 0 && isFiniteNumber(timestamp)) {\n this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS);\n this.lastPTS = this.basePTS;\n }\n if (this.lastPTS === null) {\n this.lastPTS = this.basePTS;\n }\n\n // more expressive than alternative: id3Data?.length\n if (id3Data && id3Data.length > 0) {\n id3Track.samples.push({\n pts: this.lastPTS,\n dts: this.lastPTS,\n data: id3Data,\n type: MetadataSchema.audioId3,\n duration: Number.POSITIVE_INFINITY\n });\n }\n while (offset < length) {\n if (this.canParse(data, offset)) {\n var frame = this.appendFrame(track, data, offset);\n if (frame) {\n this.frameIndex++;\n this.lastPTS = frame.sample.pts;\n offset += frame.length;\n lastDataIndex = offset;\n } else {\n offset = length;\n }\n } else if (canParse$2(data, offset)) {\n // after a ID3.canParse, a call to ID3.getID3Data *should* always returns some data\n id3Data = getID3Data(data, offset);\n id3Track.samples.push({\n pts: this.lastPTS,\n dts: this.lastPTS,\n data: id3Data,\n type: MetadataSchema.audioId3,\n duration: Number.POSITIVE_INFINITY\n });\n offset += id3Data.length;\n lastDataIndex = offset;\n } else {\n offset++;\n }\n if (offset === length && lastDataIndex !== length) {\n var partialData = sliceUint8(data, lastDataIndex);\n if (this.cachedData) {\n this.cachedData = appendUint8Array(this.cachedData, partialData);\n } else {\n this.cachedData = partialData;\n }\n }\n }\n return {\n audioTrack: track,\n videoTrack: dummyTrack(),\n id3Track: id3Track,\n textTrack: dummyTrack()\n };\n };\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n return Promise.reject(new Error(\"[\" + this + \"] This demuxer does not support Sample-AES decryption\"));\n };\n _proto.flush = function flush(timeOffset) {\n // Parse cache in case of remaining frames.\n var cachedData = this.cachedData;\n if (cachedData) {\n this.cachedData = null;\n this.demux(cachedData, 0);\n }\n return {\n audioTrack: this._audioTrack,\n videoTrack: dummyTrack(),\n id3Track: this._id3Track,\n textTrack: dummyTrack()\n };\n };\n _proto.destroy = function destroy() {};\n return BaseAudioDemuxer;\n }();\n /**\n * Initialize PTS\n * <p>\n * use timestamp unless it is undefined, NaN or Infinity\n * </p>\n */\n var initPTSFn = function initPTSFn(timestamp, timeOffset, initPTS) {\n if (isFiniteNumber(timestamp)) {\n return timestamp * 90;\n }\n var init90kHz = initPTS ? initPTS.baseTime * 90000 / initPTS.timescale : 0;\n return timeOffset * 90000 + init90kHz;\n };\n\n /**\n * ADTS parser helper\n * @link https://wiki.multimedia.cx/index.php?title=ADTS\n */\n function getAudioConfig(observer, data, offset, audioCodec) {\n var adtsObjectType;\n var adtsExtensionSamplingIndex;\n var adtsChannelConfig;\n var config;\n var userAgent = navigator.userAgent.toLowerCase();\n var manifestCodec = audioCodec;\n var adtsSamplingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350];\n // byte 2\n adtsObjectType = ((data[offset + 2] & 0xc0) >>> 6) + 1;\n var adtsSamplingIndex = (data[offset + 2] & 0x3c) >>> 2;\n if (adtsSamplingIndex > adtsSamplingRates.length - 1) {\n var error = new Error(\"invalid ADTS sampling index:\" + adtsSamplingIndex);\n observer.emit(Events.ERROR, Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n fatal: true,\n error: error,\n reason: error.message\n });\n return;\n }\n adtsChannelConfig = (data[offset + 2] & 0x01) << 2;\n // byte 3\n adtsChannelConfig |= (data[offset + 3] & 0xc0) >>> 6;\n logger.log(\"manifest codec:\" + audioCodec + \", ADTS type:\" + adtsObjectType + \", samplingIndex:\" + adtsSamplingIndex);\n // firefox: freq less than 24kHz = AAC SBR (HE-AAC)\n if (/firefox/i.test(userAgent)) {\n if (adtsSamplingIndex >= 6) {\n adtsObjectType = 5;\n config = new Array(4);\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n } else {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n }\n // Android : always use AAC\n } else if (userAgent.indexOf('android') !== -1) {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n } else {\n /* for other browsers (Chrome/Vivaldi/Opera ...)\n always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)\n */\n adtsObjectType = 5;\n config = new Array(4);\n // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)\n if (audioCodec && (audioCodec.indexOf('mp4a.40.29') !== -1 || audioCodec.indexOf('mp4a.40.5') !== -1) || !audioCodec && adtsSamplingIndex >= 6) {\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n } else {\n // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio)\n // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC. This is not a problem with stereo.\n if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && (adtsSamplingIndex >= 6 && adtsChannelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChannelConfig === 1) {\n adtsObjectType = 2;\n config = new Array(2);\n }\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n }\n }\n /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config\n ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()\n Audio Profile / Audio Object Type\n 0: Null\n 1: AAC Main\n 2: AAC LC (Low Complexity)\n 3: AAC SSR (Scalable Sample Rate)\n 4: AAC LTP (Long Term Prediction)\n 5: SBR (Spectral Band Replication)\n 6: AAC Scalable\n sampling freq\n 0: 96000 Hz\n 1: 88200 Hz\n 2: 64000 Hz\n 3: 48000 Hz\n 4: 44100 Hz\n 5: 32000 Hz\n 6: 24000 Hz\n 7: 22050 Hz\n 8: 16000 Hz\n 9: 12000 Hz\n 10: 11025 Hz\n 11: 8000 Hz\n 12: 7350 Hz\n 13: Reserved\n 14: Reserved\n 15: frequency is written explictly\n Channel Configurations\n These are the channel configurations:\n 0: Defined in AOT Specifc Config\n 1: 1 channel: front-center\n 2: 2 channels: front-left, front-right\n */\n // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1\n config[0] = adtsObjectType << 3;\n // samplingFrequencyIndex\n config[0] |= (adtsSamplingIndex & 0x0e) >> 1;\n config[1] |= (adtsSamplingIndex & 0x01) << 7;\n // channelConfiguration\n config[1] |= adtsChannelConfig << 3;\n if (adtsObjectType === 5) {\n // adtsExtensionSamplingIndex\n config[1] |= (adtsExtensionSamplingIndex & 0x0e) >> 1;\n config[2] = (adtsExtensionSamplingIndex & 0x01) << 7;\n // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???\n // https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n return {\n config: config,\n samplerate: adtsSamplingRates[adtsSamplingIndex],\n channelCount: adtsChannelConfig,\n codec: 'mp4a.40.' + adtsObjectType,\n manifestCodec: manifestCodec\n };\n }\n function isHeaderPattern$1(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0;\n }\n function getHeaderLength(data, offset) {\n return data[offset + 1] & 0x01 ? 7 : 9;\n }\n function getFullFrameLength(data, offset) {\n return (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xe0) >>> 5;\n }\n function canGetFrameLength(data, offset) {\n return offset + 5 < data.length;\n }\n function isHeader$1(data, offset) {\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n return offset + 1 < data.length && isHeaderPattern$1(data, offset);\n }\n function canParse$1(data, offset) {\n return canGetFrameLength(data, offset) && isHeaderPattern$1(data, offset) && getFullFrameLength(data, offset) <= data.length - offset;\n }\n function probe$1(data, offset) {\n // same as isHeader but we also check that ADTS frame follows last ADTS frame\n // or end of data is reached\n if (isHeader$1(data, offset)) {\n // ADTS header Length\n var headerLength = getHeaderLength(data, offset);\n if (offset + headerLength >= data.length) {\n return false;\n }\n // ADTS frame Length\n var frameLength = getFullFrameLength(data, offset);\n if (frameLength <= headerLength) {\n return false;\n }\n var newOffset = offset + frameLength;\n return newOffset === data.length || isHeader$1(data, newOffset);\n }\n return false;\n }\n function initTrackConfig(track, observer, data, offset, audioCodec) {\n if (!track.samplerate) {\n var config = getAudioConfig(observer, data, offset, audioCodec);\n if (!config) {\n return;\n }\n track.config = config.config;\n track.samplerate = config.samplerate;\n track.channelCount = config.channelCount;\n track.codec = config.codec;\n track.manifestCodec = config.manifestCodec;\n logger.log(\"parsed codec:\" + track.codec + \", rate:\" + config.samplerate + \", channels:\" + config.channelCount);\n }\n }\n function getFrameDuration(samplerate) {\n return 1024 * 90000 / samplerate;\n }\n function parseFrameHeader(data, offset) {\n // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n var headerLength = getHeaderLength(data, offset);\n if (offset + headerLength <= data.length) {\n // retrieve frame size\n var frameLength = getFullFrameLength(data, offset) - headerLength;\n if (frameLength > 0) {\n // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}`);\n return {\n headerLength: headerLength,\n frameLength: frameLength\n };\n }\n }\n }\n function appendFrame$1(track, data, offset, pts, frameIndex) {\n var frameDuration = getFrameDuration(track.samplerate);\n var stamp = pts + frameIndex * frameDuration;\n var header = parseFrameHeader(data, offset);\n var unit;\n if (header) {\n var frameLength = header.frameLength,\n headerLength = header.headerLength;\n var _length = headerLength + frameLength;\n var missing = Math.max(0, offset + _length - data.length);\n // logger.log(`AAC frame ${frameIndex}, pts:${stamp} length@offset/total: ${frameLength}@${offset+headerLength}/${data.byteLength} missing: ${missing}`);\n if (missing) {\n unit = new Uint8Array(_length - headerLength);\n unit.set(data.subarray(offset + headerLength, data.length), 0);\n } else {\n unit = data.subarray(offset + headerLength, offset + _length);\n }\n var _sample = {\n unit: unit,\n pts: stamp\n };\n if (!missing) {\n track.samples.push(_sample);\n }\n return {\n sample: _sample,\n length: _length,\n missing: missing\n };\n }\n // overflow incomplete header\n var length = data.length - offset;\n unit = new Uint8Array(length);\n unit.set(data.subarray(offset, data.length), 0);\n var sample = {\n unit: unit,\n pts: stamp\n };\n return {\n sample: sample,\n length: length,\n missing: -1\n };\n }\n\n /**\n * MPEG parser helper\n */\n\n var chromeVersion$1 = null;\n var BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];\n var SamplingRateMap = [44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000];\n var SamplesCoefficients = [\n // MPEG 2.5\n [0,\n // Reserved\n 72,\n // Layer3\n 144,\n // Layer2\n 12 // Layer1\n ],\n // Reserved\n [0,\n // Reserved\n 0,\n // Layer3\n 0,\n // Layer2\n 0 // Layer1\n ],\n // MPEG 2\n [0,\n // Reserved\n 72,\n // Layer3\n 144,\n // Layer2\n 12 // Layer1\n ],\n // MPEG 1\n [0,\n // Reserved\n 144,\n // Layer3\n 144,\n // Layer2\n 12 // Layer1\n ]];\n var BytesInSlot = [0,\n // Reserved\n 1,\n // Layer3\n 1,\n // Layer2\n 4 // Layer1\n ];\n function appendFrame(track, data, offset, pts, frameIndex) {\n // Using http://www.datavoyage.com/mpgscript/mpeghdr.htm as a reference\n if (offset + 24 > data.length) {\n return;\n }\n var header = parseHeader(data, offset);\n if (header && offset + header.frameLength <= data.length) {\n var frameDuration = header.samplesPerFrame * 90000 / header.sampleRate;\n var stamp = pts + frameIndex * frameDuration;\n var sample = {\n unit: data.subarray(offset, offset + header.frameLength),\n pts: stamp,\n dts: stamp\n };\n track.config = [];\n track.channelCount = header.channelCount;\n track.samplerate = header.sampleRate;\n track.samples.push(sample);\n return {\n sample: sample,\n length: header.frameLength,\n missing: 0\n };\n }\n }\n function parseHeader(data, offset) {\n var mpegVersion = data[offset + 1] >> 3 & 3;\n var mpegLayer = data[offset + 1] >> 1 & 3;\n var bitRateIndex = data[offset + 2] >> 4 & 15;\n var sampleRateIndex = data[offset + 2] >> 2 & 3;\n if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {\n var paddingBit = data[offset + 2] >> 1 & 1;\n var channelMode = data[offset + 3] >> 6;\n var columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;\n var bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1000;\n var columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;\n var sampleRate = SamplingRateMap[columnInSampleRates * 3 + sampleRateIndex];\n var channelCount = channelMode === 3 ? 1 : 2; // If bits of channel mode are `11` then it is a single channel (Mono)\n var sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];\n var bytesInSlot = BytesInSlot[mpegLayer];\n var samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;\n var frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot;\n if (chromeVersion$1 === null) {\n var userAgent = navigator.userAgent || '';\n var result = userAgent.match(/Chrome\\/(\\d+)/i);\n chromeVersion$1 = result ? parseInt(result[1]) : 0;\n }\n var needChromeFix = !!chromeVersion$1 && chromeVersion$1 <= 87;\n if (needChromeFix && mpegLayer === 2 && bitRate >= 224000 && channelMode === 0) {\n // Work around bug in Chromium by setting channelMode to dual-channel (01) instead of stereo (00)\n data[offset + 3] = data[offset + 3] | 0x80;\n }\n return {\n sampleRate: sampleRate,\n channelCount: channelCount,\n frameLength: frameLength,\n samplesPerFrame: samplesPerFrame\n };\n }\n }\n function isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xe0) === 0xe0 && (data[offset + 1] & 0x06) !== 0x00;\n }\n function isHeader(data, offset) {\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n return offset + 1 < data.length && isHeaderPattern(data, offset);\n }\n function canParse(data, offset) {\n var headerSize = 4;\n return isHeaderPattern(data, offset) && headerSize <= data.length - offset;\n }\n function probe(data, offset) {\n // same as isHeader but we also check that MPEG frame follows last MPEG frame\n // or end of data is reached\n if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n // MPEG header Length\n var headerLength = 4;\n // MPEG frame Length\n var header = parseHeader(data, offset);\n var frameLength = headerLength;\n if (header != null && header.frameLength) {\n frameLength = header.frameLength;\n }\n var newOffset = offset + frameLength;\n return newOffset === data.length || isHeader(data, newOffset);\n }\n return false;\n }\n\n var AACDemuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {\n _inheritsLoose(AACDemuxer, _BaseAudioDemuxer);\n function AACDemuxer(observer, config) {\n var _this;\n _this = _BaseAudioDemuxer.call(this) || this;\n _this.observer = void 0;\n _this.config = void 0;\n _this.observer = observer;\n _this.config = config;\n return _this;\n }\n var _proto = AACDemuxer.prototype;\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n _BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration);\n this._audioTrack = {\n container: 'audio/adts',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n segmentCodec: 'aac',\n samples: [],\n manifestCodec: audioCodec,\n duration: trackDuration,\n inputTimeScale: 90000,\n dropped: 0\n };\n }\n\n // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS\n ;\n AACDemuxer.probe = function probe$2(data) {\n if (!data) {\n return false;\n }\n\n // Check for the ADTS sync word\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n var id3Data = getID3Data(data, 0);\n var offset = (id3Data == null ? void 0 : id3Data.length) || 0;\n if (probe(data, offset)) {\n return false;\n }\n for (var length = data.length; offset < length; offset++) {\n if (probe$1(data, offset)) {\n logger.log('ADTS sync word found !');\n return true;\n }\n }\n return false;\n };\n _proto.canParse = function canParse(data, offset) {\n return canParse$1(data, offset);\n };\n _proto.appendFrame = function appendFrame(track, data, offset) {\n initTrackConfig(track, this.observer, data, offset, track.manifestCodec);\n var frame = appendFrame$1(track, data, offset, this.basePTS, this.frameIndex);\n if (frame && frame.missing === 0) {\n return frame;\n }\n };\n return AACDemuxer;\n }(BaseAudioDemuxer);\n\n var emsgSchemePattern = /\\/emsg[-/]ID3/i;\n var MP4Demuxer = /*#__PURE__*/function () {\n function MP4Demuxer(observer, config) {\n this.remainderData = null;\n this.timeOffset = 0;\n this.config = void 0;\n this.videoTrack = void 0;\n this.audioTrack = void 0;\n this.id3Track = void 0;\n this.txtTrack = void 0;\n this.config = config;\n }\n var _proto = MP4Demuxer.prototype;\n _proto.resetTimeStamp = function resetTimeStamp() {};\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n var videoTrack = this.videoTrack = dummyTrack('video', 1);\n var audioTrack = this.audioTrack = dummyTrack('audio', 1);\n var captionTrack = this.txtTrack = dummyTrack('text', 1);\n this.id3Track = dummyTrack('id3', 1);\n this.timeOffset = 0;\n if (!(initSegment != null && initSegment.byteLength)) {\n return;\n }\n var initData = parseInitSegment(initSegment);\n if (initData.video) {\n var _initData$video = initData.video,\n id = _initData$video.id,\n timescale = _initData$video.timescale,\n codec = _initData$video.codec;\n videoTrack.id = id;\n videoTrack.timescale = captionTrack.timescale = timescale;\n videoTrack.codec = codec;\n }\n if (initData.audio) {\n var _initData$audio = initData.audio,\n _id = _initData$audio.id,\n _timescale = _initData$audio.timescale,\n _codec = _initData$audio.codec;\n audioTrack.id = _id;\n audioTrack.timescale = _timescale;\n audioTrack.codec = _codec;\n }\n captionTrack.id = RemuxerTrackIdConfig.text;\n videoTrack.sampleDuration = 0;\n videoTrack.duration = audioTrack.duration = trackDuration;\n };\n _proto.resetContiguity = function resetContiguity() {\n this.remainderData = null;\n };\n MP4Demuxer.probe = function probe(data) {\n return hasMoofData(data);\n };\n _proto.demux = function demux(data, timeOffset) {\n this.timeOffset = timeOffset;\n // Load all data into the avc track. The CMAF remuxer will look for the data in the samples object; the rest of the fields do not matter\n var videoSamples = data;\n var videoTrack = this.videoTrack;\n var textTrack = this.txtTrack;\n if (this.config.progressive) {\n // Split the bytestream into two ranges: one encompassing all data up until the start of the last moof, and everything else.\n // This is done to guarantee that we're sending valid data to MSE - when demuxing progressively, we have no guarantee\n // that the fetch loader gives us flush moof+mdat pairs. If we push jagged data to MSE, it will throw an exception.\n if (this.remainderData) {\n videoSamples = appendUint8Array(this.remainderData, data);\n }\n var segmentedData = segmentValidRange(videoSamples);\n this.remainderData = segmentedData.remainder;\n videoTrack.samples = segmentedData.valid || new Uint8Array();\n } else {\n videoTrack.samples = videoSamples;\n }\n var id3Track = this.extractID3Track(videoTrack, timeOffset);\n textTrack.samples = parseSamples(timeOffset, videoTrack);\n return {\n videoTrack: videoTrack,\n audioTrack: this.audioTrack,\n id3Track: id3Track,\n textTrack: this.txtTrack\n };\n };\n _proto.flush = function flush() {\n var timeOffset = this.timeOffset;\n var videoTrack = this.videoTrack;\n var textTrack = this.txtTrack;\n videoTrack.samples = this.remainderData || new Uint8Array();\n this.remainderData = null;\n var id3Track = this.extractID3Track(videoTrack, this.timeOffset);\n textTrack.samples = parseSamples(timeOffset, videoTrack);\n return {\n videoTrack: videoTrack,\n audioTrack: dummyTrack(),\n id3Track: id3Track,\n textTrack: dummyTrack()\n };\n };\n _proto.extractID3Track = function extractID3Track(videoTrack, timeOffset) {\n var id3Track = this.id3Track;\n if (videoTrack.samples.length) {\n var emsgs = findBox(videoTrack.samples, ['emsg']);\n if (emsgs) {\n emsgs.forEach(function (data) {\n var emsgInfo = parseEmsg(data);\n if (emsgSchemePattern.test(emsgInfo.schemeIdUri)) {\n var pts = isFiniteNumber(emsgInfo.presentationTime) ? emsgInfo.presentationTime / emsgInfo.timeScale : timeOffset + emsgInfo.presentationTimeDelta / emsgInfo.timeScale;\n var duration = emsgInfo.eventDuration === 0xffffffff ? Number.POSITIVE_INFINITY : emsgInfo.eventDuration / emsgInfo.timeScale;\n // Safari takes anything <= 0.001 seconds and maps it to Infinity\n if (duration <= 0.001) {\n duration = Number.POSITIVE_INFINITY;\n }\n var payload = emsgInfo.payload;\n id3Track.samples.push({\n data: payload,\n len: payload.byteLength,\n dts: pts,\n pts: pts,\n type: MetadataSchema.emsg,\n duration: duration\n });\n }\n });\n }\n }\n return id3Track;\n };\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n return Promise.reject(new Error('The MP4 demuxer does not support SAMPLE-AES decryption'));\n };\n _proto.destroy = function destroy() {};\n return MP4Demuxer;\n }();\n\n var getAudioBSID = function getAudioBSID(data, offset) {\n // check the bsid to confirm ac-3 | ec-3\n var bsid = 0;\n var numBits = 5;\n offset += numBits;\n var temp = new Uint32Array(1); // unsigned 32 bit for temporary storage\n var mask = new Uint32Array(1); // unsigned 32 bit mask value\n var _byte = new Uint8Array(1); // unsigned 8 bit for temporary storage\n while (numBits > 0) {\n _byte[0] = data[offset];\n // read remaining bits, upto 8 bits at a time\n var bits = Math.min(numBits, 8);\n var shift = 8 - bits;\n mask[0] = 0xff000000 >>> 24 + shift << shift;\n temp[0] = (_byte[0] & mask[0]) >> shift;\n bsid = !bsid ? temp[0] : bsid << bits | temp[0];\n offset += 1;\n numBits -= bits;\n }\n return bsid;\n };\n\n var AC3Demuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {\n _inheritsLoose(AC3Demuxer, _BaseAudioDemuxer);\n function AC3Demuxer(observer) {\n var _this;\n _this = _BaseAudioDemuxer.call(this) || this;\n _this.observer = void 0;\n _this.observer = observer;\n return _this;\n }\n var _proto = AC3Demuxer.prototype;\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n _BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration);\n this._audioTrack = {\n container: 'audio/ac-3',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n segmentCodec: 'ac3',\n samples: [],\n manifestCodec: audioCodec,\n duration: trackDuration,\n inputTimeScale: 90000,\n dropped: 0\n };\n };\n _proto.canParse = function canParse(data, offset) {\n return offset + 64 < data.length;\n };\n _proto.appendFrame = function appendFrame(track, data, offset) {\n var frameLength = _appendFrame(track, data, offset, this.basePTS, this.frameIndex);\n if (frameLength !== -1) {\n var sample = track.samples[track.samples.length - 1];\n return {\n sample: sample,\n length: frameLength,\n missing: 0\n };\n }\n };\n AC3Demuxer.probe = function probe(data) {\n if (!data) {\n return false;\n }\n var id3Data = getID3Data(data, 0);\n if (!id3Data) {\n return false;\n }\n\n // look for the ac-3 sync bytes\n var offset = id3Data.length;\n if (data[offset] === 0x0b && data[offset + 1] === 0x77 && getTimeStamp(id3Data) !== undefined &&\n // check the bsid to confirm ac-3\n getAudioBSID(data, offset) < 16) {\n return true;\n }\n return false;\n };\n return AC3Demuxer;\n }(BaseAudioDemuxer);\n function _appendFrame(track, data, start, pts, frameIndex) {\n if (start + 8 > data.length) {\n return -1; // not enough bytes left\n }\n if (data[start] !== 0x0b || data[start + 1] !== 0x77) {\n return -1; // invalid magic\n }\n\n // get sample rate\n var samplingRateCode = data[start + 4] >> 6;\n if (samplingRateCode >= 3) {\n return -1; // invalid sampling rate\n }\n var samplingRateMap = [48000, 44100, 32000];\n var sampleRate = samplingRateMap[samplingRateCode];\n\n // get frame size\n var frameSizeCode = data[start + 4] & 0x3f;\n var frameSizeMap = [64, 69, 96, 64, 70, 96, 80, 87, 120, 80, 88, 120, 96, 104, 144, 96, 105, 144, 112, 121, 168, 112, 122, 168, 128, 139, 192, 128, 140, 192, 160, 174, 240, 160, 175, 240, 192, 208, 288, 192, 209, 288, 224, 243, 336, 224, 244, 336, 256, 278, 384, 256, 279, 384, 320, 348, 480, 320, 349, 480, 384, 417, 576, 384, 418, 576, 448, 487, 672, 448, 488, 672, 512, 557, 768, 512, 558, 768, 640, 696, 960, 640, 697, 960, 768, 835, 1152, 768, 836, 1152, 896, 975, 1344, 896, 976, 1344, 1024, 1114, 1536, 1024, 1115, 1536, 1152, 1253, 1728, 1152, 1254, 1728, 1280, 1393, 1920, 1280, 1394, 1920];\n var frameLength = frameSizeMap[frameSizeCode * 3 + samplingRateCode] * 2;\n if (start + frameLength > data.length) {\n return -1;\n }\n\n // get channel count\n var channelMode = data[start + 6] >> 5;\n var skipCount = 0;\n if (channelMode === 2) {\n skipCount += 2;\n } else {\n if (channelMode & 1 && channelMode !== 1) {\n skipCount += 2;\n }\n if (channelMode & 4) {\n skipCount += 2;\n }\n }\n var lfeon = (data[start + 6] << 8 | data[start + 7]) >> 12 - skipCount & 1;\n var channelsMap = [2, 1, 2, 3, 3, 4, 4, 5];\n var channelCount = channelsMap[channelMode] + lfeon;\n\n // build dac3 box\n var bsid = data[start + 5] >> 3;\n var bsmod = data[start + 5] & 7;\n var config = new Uint8Array([samplingRateCode << 6 | bsid << 1 | bsmod >> 2, (bsmod & 3) << 6 | channelMode << 3 | lfeon << 2 | frameSizeCode >> 4, frameSizeCode << 4 & 0xe0]);\n var frameDuration = 1536 / sampleRate * 90000;\n var stamp = pts + frameIndex * frameDuration;\n var unit = data.subarray(start, start + frameLength);\n track.config = config;\n track.channelCount = channelCount;\n track.samplerate = sampleRate;\n track.samples.push({\n unit: unit,\n pts: stamp\n });\n return frameLength;\n }\n\n var BaseVideoParser = /*#__PURE__*/function () {\n function BaseVideoParser() {\n this.VideoSample = null;\n }\n var _proto = BaseVideoParser.prototype;\n _proto.createVideoSample = function createVideoSample(key, pts, dts, debug) {\n return {\n key: key,\n frame: false,\n pts: pts,\n dts: dts,\n units: [],\n debug: debug,\n length: 0\n };\n };\n _proto.getLastNalUnit = function getLastNalUnit(samples) {\n var _VideoSample;\n var VideoSample = this.VideoSample;\n var lastUnit;\n // try to fallback to previous sample if current one is empty\n if (!VideoSample || VideoSample.units.length === 0) {\n VideoSample = samples[samples.length - 1];\n }\n if ((_VideoSample = VideoSample) != null && _VideoSample.units) {\n var units = VideoSample.units;\n lastUnit = units[units.length - 1];\n }\n return lastUnit;\n };\n _proto.pushAccessUnit = function pushAccessUnit(VideoSample, videoTrack) {\n if (VideoSample.units.length && VideoSample.frame) {\n // if sample does not have PTS/DTS, patch with last sample PTS/DTS\n if (VideoSample.pts === undefined) {\n var samples = videoTrack.samples;\n var nbSamples = samples.length;\n if (nbSamples) {\n var lastSample = samples[nbSamples - 1];\n VideoSample.pts = lastSample.pts;\n VideoSample.dts = lastSample.dts;\n } else {\n // dropping samples, no timestamp found\n videoTrack.dropped++;\n return;\n }\n }\n videoTrack.samples.push(VideoSample);\n }\n if (VideoSample.debug.length) {\n logger.log(VideoSample.pts + '/' + VideoSample.dts + ':' + VideoSample.debug);\n }\n };\n return BaseVideoParser;\n }();\n\n /**\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.\n */\n\n var ExpGolomb = /*#__PURE__*/function () {\n function ExpGolomb(data) {\n this.data = void 0;\n this.bytesAvailable = void 0;\n this.word = void 0;\n this.bitsAvailable = void 0;\n this.data = data;\n // the number of bytes left to examine in this.data\n this.bytesAvailable = data.byteLength;\n // the current word being examined\n this.word = 0; // :uint\n // the number of bits left to examine in the current word\n this.bitsAvailable = 0; // :uint\n }\n\n // ():void\n var _proto = ExpGolomb.prototype;\n _proto.loadWord = function loadWord() {\n var data = this.data;\n var bytesAvailable = this.bytesAvailable;\n var position = data.byteLength - bytesAvailable;\n var workingBytes = new Uint8Array(4);\n var availableBytes = Math.min(4, bytesAvailable);\n if (availableBytes === 0) {\n throw new Error('no bytes available');\n }\n workingBytes.set(data.subarray(position, position + availableBytes));\n this.word = new DataView(workingBytes.buffer).getUint32(0);\n // track the amount of this.data that has been processed\n this.bitsAvailable = availableBytes * 8;\n this.bytesAvailable -= availableBytes;\n }\n\n // (count:int):void\n ;\n _proto.skipBits = function skipBits(count) {\n var skipBytes; // :int\n count = Math.min(count, this.bytesAvailable * 8 + this.bitsAvailable);\n if (this.bitsAvailable > count) {\n this.word <<= count;\n this.bitsAvailable -= count;\n } else {\n count -= this.bitsAvailable;\n skipBytes = count >> 3;\n count -= skipBytes << 3;\n this.bytesAvailable -= skipBytes;\n this.loadWord();\n this.word <<= count;\n this.bitsAvailable -= count;\n }\n }\n\n // (size:int):uint\n ;\n _proto.readBits = function readBits(size) {\n var bits = Math.min(this.bitsAvailable, size); // :uint\n var valu = this.word >>> 32 - bits; // :uint\n if (size > 32) {\n logger.error('Cannot read more than 32 bits at a time');\n }\n this.bitsAvailable -= bits;\n if (this.bitsAvailable > 0) {\n this.word <<= bits;\n } else if (this.bytesAvailable > 0) {\n this.loadWord();\n } else {\n throw new Error('no bits available');\n }\n bits = size - bits;\n if (bits > 0 && this.bitsAvailable) {\n return valu << bits | this.readBits(bits);\n } else {\n return valu;\n }\n }\n\n // ():uint\n ;\n _proto.skipLZ = function skipLZ() {\n var leadingZeroCount; // :uint\n for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n if ((this.word & 0x80000000 >>> leadingZeroCount) !== 0) {\n // the first bit of working word is 1\n this.word <<= leadingZeroCount;\n this.bitsAvailable -= leadingZeroCount;\n return leadingZeroCount;\n }\n }\n // we exhausted word and still have not found a 1\n this.loadWord();\n return leadingZeroCount + this.skipLZ();\n }\n\n // ():void\n ;\n _proto.skipUEG = function skipUEG() {\n this.skipBits(1 + this.skipLZ());\n }\n\n // ():void\n ;\n _proto.skipEG = function skipEG() {\n this.skipBits(1 + this.skipLZ());\n }\n\n // ():uint\n ;\n _proto.readUEG = function readUEG() {\n var clz = this.skipLZ(); // :uint\n return this.readBits(clz + 1) - 1;\n }\n\n // ():int\n ;\n _proto.readEG = function readEG() {\n var valu = this.readUEG(); // :int\n if (0x01 & valu) {\n // the number is odd if the low order bit is set\n return 1 + valu >>> 1; // add 1 to make it even, and divide by 2\n } else {\n return -1 * (valu >>> 1); // divide by two then make it negative\n }\n }\n\n // Some convenience functions\n // :Boolean\n ;\n _proto.readBoolean = function readBoolean() {\n return this.readBits(1) === 1;\n }\n\n // ():int\n ;\n _proto.readUByte = function readUByte() {\n return this.readBits(8);\n }\n\n // ():int\n ;\n _proto.readUShort = function readUShort() {\n return this.readBits(16);\n }\n\n // ():int\n ;\n _proto.readUInt = function readUInt() {\n return this.readBits(32);\n }\n\n /**\n * Advance the ExpGolomb decoder past a scaling list. The scaling\n * list is optionally transmitted as part of a sequence parameter\n * set and is not relevant to transmuxing.\n * @param count the number of entries in this scaling list\n * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n */;\n _proto.skipScalingList = function skipScalingList(count) {\n var lastScale = 8;\n var nextScale = 8;\n var deltaScale;\n for (var j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = this.readEG();\n nextScale = (lastScale + deltaScale + 256) % 256;\n }\n lastScale = nextScale === 0 ? lastScale : nextScale;\n }\n }\n\n /**\n * Read a sequence parameter set and return some interesting video\n * properties. A sequence parameter set is the H264 metadata that\n * describes the properties of upcoming video frames.\n * @returns an object with configuration parsed from the\n * sequence parameter set, including the dimensions of the\n * associated video frames.\n */;\n _proto.readSPS = function readSPS() {\n var frameCropLeftOffset = 0;\n var frameCropRightOffset = 0;\n var frameCropTopOffset = 0;\n var frameCropBottomOffset = 0;\n var numRefFramesInPicOrderCntCycle;\n var scalingListCount;\n var i;\n var readUByte = this.readUByte.bind(this);\n var readBits = this.readBits.bind(this);\n var readUEG = this.readUEG.bind(this);\n var readBoolean = this.readBoolean.bind(this);\n var skipBits = this.skipBits.bind(this);\n var skipEG = this.skipEG.bind(this);\n var skipUEG = this.skipUEG.bind(this);\n var skipScalingList = this.skipScalingList.bind(this);\n readUByte();\n var profileIdc = readUByte(); // profile_idc\n readBits(5); // profileCompat constraint_set[0-4]_flag, u(5)\n skipBits(3); // reserved_zero_3bits u(3),\n readUByte(); // level_idc u(8)\n skipUEG(); // seq_parameter_set_id\n // some profiles have more optional data we don't need\n if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {\n var chromaFormatIdc = readUEG();\n if (chromaFormatIdc === 3) {\n skipBits(1);\n } // separate_colour_plane_flag\n\n skipUEG(); // bit_depth_luma_minus8\n skipUEG(); // bit_depth_chroma_minus8\n skipBits(1); // qpprime_y_zero_transform_bypass_flag\n if (readBoolean()) {\n // seq_scaling_matrix_present_flag\n scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n for (i = 0; i < scalingListCount; i++) {\n if (readBoolean()) {\n // seq_scaling_list_present_flag[ i ]\n if (i < 6) {\n skipScalingList(16);\n } else {\n skipScalingList(64);\n }\n }\n }\n }\n }\n skipUEG(); // log2_max_frame_num_minus4\n var picOrderCntType = readUEG();\n if (picOrderCntType === 0) {\n readUEG(); // log2_max_pic_order_cnt_lsb_minus4\n } else if (picOrderCntType === 1) {\n skipBits(1); // delta_pic_order_always_zero_flag\n skipEG(); // offset_for_non_ref_pic\n skipEG(); // offset_for_top_to_bottom_field\n numRefFramesInPicOrderCntCycle = readUEG();\n for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n skipEG();\n } // offset_for_ref_frame[ i ]\n }\n skipUEG(); // max_num_ref_frames\n skipBits(1); // gaps_in_frame_num_value_allowed_flag\n var picWidthInMbsMinus1 = readUEG();\n var picHeightInMapUnitsMinus1 = readUEG();\n var frameMbsOnlyFlag = readBits(1);\n if (frameMbsOnlyFlag === 0) {\n skipBits(1);\n } // mb_adaptive_frame_field_flag\n\n skipBits(1); // direct_8x8_inference_flag\n if (readBoolean()) {\n // frame_cropping_flag\n frameCropLeftOffset = readUEG();\n frameCropRightOffset = readUEG();\n frameCropTopOffset = readUEG();\n frameCropBottomOffset = readUEG();\n }\n var pixelRatio = [1, 1];\n if (readBoolean()) {\n // vui_parameters_present_flag\n if (readBoolean()) {\n // aspect_ratio_info_present_flag\n var aspectRatioIdc = readUByte();\n switch (aspectRatioIdc) {\n case 1:\n pixelRatio = [1, 1];\n break;\n case 2:\n pixelRatio = [12, 11];\n break;\n case 3:\n pixelRatio = [10, 11];\n break;\n case 4:\n pixelRatio = [16, 11];\n break;\n case 5:\n pixelRatio = [40, 33];\n break;\n case 6:\n pixelRatio = [24, 11];\n break;\n case 7:\n pixelRatio = [20, 11];\n break;\n case 8:\n pixelRatio = [32, 11];\n break;\n case 9:\n pixelRatio = [80, 33];\n break;\n case 10:\n pixelRatio = [18, 11];\n break;\n case 11:\n pixelRatio = [15, 11];\n break;\n case 12:\n pixelRatio = [64, 33];\n break;\n case 13:\n pixelRatio = [160, 99];\n break;\n case 14:\n pixelRatio = [4, 3];\n break;\n case 15:\n pixelRatio = [3, 2];\n break;\n case 16:\n pixelRatio = [2, 1];\n break;\n case 255:\n {\n pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];\n break;\n }\n }\n }\n }\n return {\n width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),\n height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),\n pixelRatio: pixelRatio\n };\n };\n _proto.readSliceType = function readSliceType() {\n // skip NALu type\n this.readUByte();\n // discard first_mb_in_slice\n this.readUEG();\n // return slice_type\n return this.readUEG();\n };\n return ExpGolomb;\n }();\n\n var AvcVideoParser = /*#__PURE__*/function (_BaseVideoParser) {\n _inheritsLoose(AvcVideoParser, _BaseVideoParser);\n function AvcVideoParser() {\n return _BaseVideoParser.apply(this, arguments) || this;\n }\n var _proto = AvcVideoParser.prototype;\n _proto.parseAVCPES = function parseAVCPES(track, textTrack, pes, last, duration) {\n var _this = this;\n var units = this.parseAVCNALu(track, pes.data);\n var VideoSample = this.VideoSample;\n var push;\n var spsfound = false;\n // free pes.data to save up some memory\n pes.data = null;\n\n // if new NAL units found and last sample still there, let's push ...\n // this helps parsing streams with missing AUD (only do this if AUD never found)\n if (VideoSample && units.length && !track.audFound) {\n this.pushAccessUnit(VideoSample, track);\n VideoSample = this.VideoSample = this.createVideoSample(false, pes.pts, pes.dts, '');\n }\n units.forEach(function (unit) {\n var _VideoSample2;\n switch (unit.type) {\n // NDR\n case 1:\n {\n var iskey = false;\n push = true;\n var data = unit.data;\n // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...)\n if (spsfound && data.length > 4) {\n // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR\n var sliceType = new ExpGolomb(data).readSliceType();\n // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice\n // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples.\n // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice.\n // I slice: A slice that is not an SI slice that is decoded using intra prediction only.\n // if (sliceType === 2 || sliceType === 7) {\n if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) {\n iskey = true;\n }\n }\n if (iskey) {\n var _VideoSample;\n // if we have non-keyframe data already, that cannot belong to the same frame as a keyframe, so force a push\n if ((_VideoSample = VideoSample) != null && _VideoSample.frame && !VideoSample.key) {\n _this.pushAccessUnit(VideoSample, track);\n VideoSample = _this.VideoSample = null;\n }\n }\n if (!VideoSample) {\n VideoSample = _this.VideoSample = _this.createVideoSample(true, pes.pts, pes.dts, '');\n }\n VideoSample.frame = true;\n VideoSample.key = iskey;\n break;\n // IDR\n }\n case 5:\n push = true;\n // handle PES not starting with AUD\n // if we have frame data already, that cannot belong to the same frame, so force a push\n if ((_VideoSample2 = VideoSample) != null && _VideoSample2.frame && !VideoSample.key) {\n _this.pushAccessUnit(VideoSample, track);\n VideoSample = _this.VideoSample = null;\n }\n if (!VideoSample) {\n VideoSample = _this.VideoSample = _this.createVideoSample(true, pes.pts, pes.dts, '');\n }\n VideoSample.key = true;\n VideoSample.frame = true;\n break;\n // SEI\n case 6:\n {\n push = true;\n parseSEIMessageFromNALu(unit.data, 1, pes.pts, textTrack.samples);\n break;\n // SPS\n }\n case 7:\n {\n var _track$pixelRatio, _track$pixelRatio2;\n push = true;\n spsfound = true;\n var sps = unit.data;\n var expGolombDecoder = new ExpGolomb(sps);\n var config = expGolombDecoder.readSPS();\n if (!track.sps || track.width !== config.width || track.height !== config.height || ((_track$pixelRatio = track.pixelRatio) == null ? void 0 : _track$pixelRatio[0]) !== config.pixelRatio[0] || ((_track$pixelRatio2 = track.pixelRatio) == null ? void 0 : _track$pixelRatio2[1]) !== config.pixelRatio[1]) {\n track.width = config.width;\n track.height = config.height;\n track.pixelRatio = config.pixelRatio;\n track.sps = [sps];\n track.duration = duration;\n var codecarray = sps.subarray(1, 4);\n var codecstring = 'avc1.';\n for (var i = 0; i < 3; i++) {\n var h = codecarray[i].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecstring += h;\n }\n track.codec = codecstring;\n }\n break;\n }\n // PPS\n case 8:\n push = true;\n track.pps = [unit.data];\n break;\n // AUD\n case 9:\n push = true;\n track.audFound = true;\n if (VideoSample) {\n _this.pushAccessUnit(VideoSample, track);\n }\n VideoSample = _this.VideoSample = _this.createVideoSample(false, pes.pts, pes.dts, '');\n break;\n // Filler Data\n case 12:\n push = true;\n break;\n default:\n push = false;\n if (VideoSample) {\n VideoSample.debug += 'unknown NAL ' + unit.type + ' ';\n }\n break;\n }\n if (VideoSample && push) {\n var _units = VideoSample.units;\n _units.push(unit);\n }\n });\n // if last PES packet, push samples\n if (last && VideoSample) {\n this.pushAccessUnit(VideoSample, track);\n this.VideoSample = null;\n }\n };\n _proto.parseAVCNALu = function parseAVCNALu(track, array) {\n var len = array.byteLength;\n var state = track.naluState || 0;\n var lastState = state;\n var units = [];\n var i = 0;\n var value;\n var overflow;\n var unitType;\n var lastUnitStart = -1;\n var lastUnitType = 0;\n // logger.log('PES:' + Hex.hexDump(array));\n\n if (state === -1) {\n // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet\n lastUnitStart = 0;\n // NALu type is value read from offset 0\n lastUnitType = array[0] & 0x1f;\n state = 0;\n i = 1;\n }\n while (i < len) {\n value = array[i++];\n // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case\n if (!state) {\n state = value ? 0 : 1;\n continue;\n }\n if (state === 1) {\n state = value ? 0 : 2;\n continue;\n }\n // here we have state either equal to 2 or 3\n if (!value) {\n state = 3;\n } else if (value === 1) {\n overflow = i - state - 1;\n if (lastUnitStart >= 0) {\n var unit = {\n data: array.subarray(lastUnitStart, overflow),\n type: lastUnitType\n };\n // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength);\n units.push(unit);\n } else {\n // lastUnitStart is undefined => this is the first start code found in this PES packet\n // first check if start code delimiter is overlapping between 2 PES packets,\n // ie it started in last packet (lastState not zero)\n // and ended at the beginning of this PES packet (i <= 4 - lastState)\n var lastUnit = this.getLastNalUnit(track.samples);\n if (lastUnit) {\n if (lastState && i <= 4 - lastState) {\n // start delimiter overlapping between PES packets\n // strip start delimiter bytes from the end of last NAL unit\n // check if lastUnit had a state different from zero\n if (lastUnit.state) {\n // strip last bytes\n lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);\n }\n }\n // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit.\n\n if (overflow > 0) {\n // logger.log('first NALU found with overflow:' + overflow);\n lastUnit.data = appendUint8Array(lastUnit.data, array.subarray(0, overflow));\n lastUnit.state = 0;\n }\n }\n }\n // check if we can read unit type\n if (i < len) {\n unitType = array[i] & 0x1f;\n // logger.log('find NALU @ offset:' + i + ',type:' + unitType);\n lastUnitStart = i;\n lastUnitType = unitType;\n state = 0;\n } else {\n // not enough byte to read unit type. let's read it on next PES parsing\n state = -1;\n }\n } else {\n state = 0;\n }\n }\n if (lastUnitStart >= 0 && state >= 0) {\n var _unit = {\n data: array.subarray(lastUnitStart, len),\n type: lastUnitType,\n state: state\n };\n units.push(_unit);\n // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state);\n }\n // no NALu found\n if (units.length === 0) {\n // append pes.data to previous NAL unit\n var _lastUnit = this.getLastNalUnit(track.samples);\n if (_lastUnit) {\n _lastUnit.data = appendUint8Array(_lastUnit.data, array);\n }\n }\n track.naluState = state;\n return units;\n };\n return AvcVideoParser;\n }(BaseVideoParser);\n\n /**\n * SAMPLE-AES decrypter\n */\n\n var SampleAesDecrypter = /*#__PURE__*/function () {\n function SampleAesDecrypter(observer, config, keyData) {\n this.keyData = void 0;\n this.decrypter = void 0;\n this.keyData = keyData;\n this.decrypter = new Decrypter(config, {\n removePKCS7Padding: false\n });\n }\n var _proto = SampleAesDecrypter.prototype;\n _proto.decryptBuffer = function decryptBuffer(encryptedData) {\n return this.decrypter.decrypt(encryptedData, this.keyData.key.buffer, this.keyData.iv.buffer);\n }\n\n // AAC - encrypt all full 16 bytes blocks starting from offset 16\n ;\n _proto.decryptAacSample = function decryptAacSample(samples, sampleIndex, callback) {\n var _this = this;\n var curUnit = samples[sampleIndex].unit;\n if (curUnit.length <= 16) {\n // No encrypted portion in this sample (first 16 bytes is not\n // encrypted, see https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Encryption/Encryption.html),\n return;\n }\n var encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16);\n var encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length);\n this.decryptBuffer(encryptedBuffer).then(function (decryptedBuffer) {\n var decryptedData = new Uint8Array(decryptedBuffer);\n curUnit.set(decryptedData, 16);\n if (!_this.decrypter.isSync()) {\n _this.decryptAacSamples(samples, sampleIndex + 1, callback);\n }\n });\n };\n _proto.decryptAacSamples = function decryptAacSamples(samples, sampleIndex, callback) {\n for (;; sampleIndex++) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n if (samples[sampleIndex].unit.length < 32) {\n continue;\n }\n this.decryptAacSample(samples, sampleIndex, callback);\n if (!this.decrypter.isSync()) {\n return;\n }\n }\n }\n\n // AVC - encrypt one 16 bytes block out of ten, starting from offset 32\n ;\n _proto.getAvcEncryptedData = function getAvcEncryptedData(decodedData) {\n var encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16;\n var encryptedData = new Int8Array(encryptedDataLen);\n var outputPos = 0;\n for (var inputPos = 32; inputPos < decodedData.length - 16; inputPos += 160, outputPos += 16) {\n encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos);\n }\n return encryptedData;\n };\n _proto.getAvcDecryptedUnit = function getAvcDecryptedUnit(decodedData, decryptedData) {\n var uint8DecryptedData = new Uint8Array(decryptedData);\n var inputPos = 0;\n for (var outputPos = 32; outputPos < decodedData.length - 16; outputPos += 160, inputPos += 16) {\n decodedData.set(uint8DecryptedData.subarray(inputPos, inputPos + 16), outputPos);\n }\n return decodedData;\n };\n _proto.decryptAvcSample = function decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit) {\n var _this2 = this;\n var decodedData = discardEPB(curUnit.data);\n var encryptedData = this.getAvcEncryptedData(decodedData);\n this.decryptBuffer(encryptedData.buffer).then(function (decryptedBuffer) {\n curUnit.data = _this2.getAvcDecryptedUnit(decodedData, decryptedBuffer);\n if (!_this2.decrypter.isSync()) {\n _this2.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback);\n }\n });\n };\n _proto.decryptAvcSamples = function decryptAvcSamples(samples, sampleIndex, unitIndex, callback) {\n if (samples instanceof Uint8Array) {\n throw new Error('Cannot decrypt samples of type Uint8Array');\n }\n for (;; sampleIndex++, unitIndex = 0) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n var curUnits = samples[sampleIndex].units;\n for (;; unitIndex++) {\n if (unitIndex >= curUnits.length) {\n break;\n }\n var curUnit = curUnits[unitIndex];\n if (curUnit.data.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) {\n continue;\n }\n this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit);\n if (!this.decrypter.isSync()) {\n return;\n }\n }\n }\n };\n return SampleAesDecrypter;\n }();\n\n var PACKET_LENGTH = 188;\n var TSDemuxer = /*#__PURE__*/function () {\n function TSDemuxer(observer, config, typeSupported) {\n this.observer = void 0;\n this.config = void 0;\n this.typeSupported = void 0;\n this.sampleAes = null;\n this.pmtParsed = false;\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this._duration = 0;\n this._pmtId = -1;\n this._videoTrack = void 0;\n this._audioTrack = void 0;\n this._id3Track = void 0;\n this._txtTrack = void 0;\n this.aacOverFlow = null;\n this.remainderData = null;\n this.videoParser = void 0;\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n this.videoParser = new AvcVideoParser();\n }\n TSDemuxer.probe = function probe(data) {\n var syncOffset = TSDemuxer.syncOffset(data);\n if (syncOffset > 0) {\n logger.warn(\"MPEG2-TS detected but first sync word found @ offset \" + syncOffset);\n }\n return syncOffset !== -1;\n };\n TSDemuxer.syncOffset = function syncOffset(data) {\n var length = data.length;\n var scanwindow = Math.min(PACKET_LENGTH * 5, length - PACKET_LENGTH) + 1;\n var i = 0;\n while (i < scanwindow) {\n // a TS init segment should contain at least 2 TS packets: PAT and PMT, each starting with 0x47\n var foundPat = false;\n var packetStart = -1;\n var tsPackets = 0;\n for (var j = i; j < length; j += PACKET_LENGTH) {\n if (data[j] === 0x47 && (length - j === PACKET_LENGTH || data[j + PACKET_LENGTH] === 0x47)) {\n tsPackets++;\n if (packetStart === -1) {\n packetStart = j;\n // First sync word found at offset, increase scan length (#5251)\n if (packetStart !== 0) {\n scanwindow = Math.min(packetStart + PACKET_LENGTH * 99, data.length - PACKET_LENGTH) + 1;\n }\n }\n if (!foundPat) {\n foundPat = parsePID(data, j) === 0;\n }\n // Sync word found at 0 with 3 packets, or found at offset least 2 packets up to scanwindow (#5501)\n if (foundPat && tsPackets > 1 && (packetStart === 0 && tsPackets > 2 || j + PACKET_LENGTH > scanwindow)) {\n return packetStart;\n }\n } else if (tsPackets) {\n // Exit if sync word found, but does not contain contiguous packets\n return -1;\n } else {\n break;\n }\n }\n i++;\n }\n return -1;\n }\n\n /**\n * Creates a track model internal to demuxer used to drive remuxing input\n */;\n TSDemuxer.createTrack = function createTrack(type, duration) {\n return {\n container: type === 'video' || type === 'audio' ? 'video/mp2t' : undefined,\n type: type,\n id: RemuxerTrackIdConfig[type],\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: 0,\n duration: type === 'audio' ? duration : undefined\n };\n }\n\n /**\n * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start)\n * Resets all internal track instances of the demuxer.\n */;\n var _proto = TSDemuxer.prototype;\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n this.pmtParsed = false;\n this._pmtId = -1;\n this._videoTrack = TSDemuxer.createTrack('video');\n this._audioTrack = TSDemuxer.createTrack('audio', trackDuration);\n this._id3Track = TSDemuxer.createTrack('id3');\n this._txtTrack = TSDemuxer.createTrack('text');\n this._audioTrack.segmentCodec = 'aac';\n\n // flush any partial content\n this.aacOverFlow = null;\n this.remainderData = null;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this._duration = trackDuration;\n };\n _proto.resetTimeStamp = function resetTimeStamp() {};\n _proto.resetContiguity = function resetContiguity() {\n var _audioTrack = this._audioTrack,\n _videoTrack = this._videoTrack,\n _id3Track = this._id3Track;\n if (_audioTrack) {\n _audioTrack.pesData = null;\n }\n if (_videoTrack) {\n _videoTrack.pesData = null;\n }\n if (_id3Track) {\n _id3Track.pesData = null;\n }\n this.aacOverFlow = null;\n this.remainderData = null;\n };\n _proto.demux = function demux(data, timeOffset, isSampleAes, flush) {\n if (isSampleAes === void 0) {\n isSampleAes = false;\n }\n if (flush === void 0) {\n flush = false;\n }\n if (!isSampleAes) {\n this.sampleAes = null;\n }\n var pes;\n var videoTrack = this._videoTrack;\n var audioTrack = this._audioTrack;\n var id3Track = this._id3Track;\n var textTrack = this._txtTrack;\n var videoPid = videoTrack.pid;\n var videoData = videoTrack.pesData;\n var audioPid = audioTrack.pid;\n var id3Pid = id3Track.pid;\n var audioData = audioTrack.pesData;\n var id3Data = id3Track.pesData;\n var unknownPID = null;\n var pmtParsed = this.pmtParsed;\n var pmtId = this._pmtId;\n var len = data.length;\n if (this.remainderData) {\n data = appendUint8Array(this.remainderData, data);\n len = data.length;\n this.remainderData = null;\n }\n if (len < PACKET_LENGTH && !flush) {\n this.remainderData = data;\n return {\n audioTrack: audioTrack,\n videoTrack: videoTrack,\n id3Track: id3Track,\n textTrack: textTrack\n };\n }\n var syncOffset = Math.max(0, TSDemuxer.syncOffset(data));\n len -= (len - syncOffset) % PACKET_LENGTH;\n if (len < data.byteLength && !flush) {\n this.remainderData = new Uint8Array(data.buffer, len, data.buffer.byteLength - len);\n }\n\n // loop through TS packets\n var tsPacketErrors = 0;\n for (var start = syncOffset; start < len; start += PACKET_LENGTH) {\n if (data[start] === 0x47) {\n var stt = !!(data[start + 1] & 0x40);\n var pid = parsePID(data, start);\n var atf = (data[start + 3] & 0x30) >> 4;\n\n // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n var offset = void 0;\n if (atf > 1) {\n offset = start + 5 + data[start + 4];\n // continue if there is only adaptation field\n if (offset === start + PACKET_LENGTH) {\n continue;\n }\n } else {\n offset = start + 4;\n }\n switch (pid) {\n case videoPid:\n if (stt) {\n if (videoData && (pes = parsePES(videoData))) {\n this.videoParser.parseAVCPES(videoTrack, textTrack, pes, false, this._duration);\n }\n videoData = {\n data: [],\n size: 0\n };\n }\n if (videoData) {\n videoData.data.push(data.subarray(offset, start + PACKET_LENGTH));\n videoData.size += start + PACKET_LENGTH - offset;\n }\n break;\n case audioPid:\n if (stt) {\n if (audioData && (pes = parsePES(audioData))) {\n switch (audioTrack.segmentCodec) {\n case 'aac':\n this.parseAACPES(audioTrack, pes);\n break;\n case 'mp3':\n this.parseMPEGPES(audioTrack, pes);\n break;\n case 'ac3':\n {\n this.parseAC3PES(audioTrack, pes);\n }\n break;\n }\n }\n audioData = {\n data: [],\n size: 0\n };\n }\n if (audioData) {\n audioData.data.push(data.subarray(offset, start + PACKET_LENGTH));\n audioData.size += start + PACKET_LENGTH - offset;\n }\n break;\n case id3Pid:\n if (stt) {\n if (id3Data && (pes = parsePES(id3Data))) {\n this.parseID3PES(id3Track, pes);\n }\n id3Data = {\n data: [],\n size: 0\n };\n }\n if (id3Data) {\n id3Data.data.push(data.subarray(offset, start + PACKET_LENGTH));\n id3Data.size += start + PACKET_LENGTH - offset;\n }\n break;\n case 0:\n if (stt) {\n offset += data[offset] + 1;\n }\n pmtId = this._pmtId = parsePAT(data, offset);\n // logger.log('PMT PID:' + this._pmtId);\n break;\n case pmtId:\n {\n if (stt) {\n offset += data[offset] + 1;\n }\n var parsedPIDs = parsePMT(data, offset, this.typeSupported, isSampleAes, this.observer);\n\n // only update track id if track PID found while parsing PMT\n // this is to avoid resetting the PID to -1 in case\n // track PID transiently disappears from the stream\n // this could happen in case of transient missing audio samples for example\n // NOTE this is only the PID of the track as found in TS,\n // but we are not using this for MP4 track IDs.\n videoPid = parsedPIDs.videoPid;\n if (videoPid > 0) {\n videoTrack.pid = videoPid;\n videoTrack.segmentCodec = parsedPIDs.segmentVideoCodec;\n }\n audioPid = parsedPIDs.audioPid;\n if (audioPid > 0) {\n audioTrack.pid = audioPid;\n audioTrack.segmentCodec = parsedPIDs.segmentAudioCodec;\n }\n id3Pid = parsedPIDs.id3Pid;\n if (id3Pid > 0) {\n id3Track.pid = id3Pid;\n }\n if (unknownPID !== null && !pmtParsed) {\n logger.warn(\"MPEG-TS PMT found at \" + start + \" after unknown PID '\" + unknownPID + \"'. Backtracking to sync byte @\" + syncOffset + \" to parse all TS packets.\");\n unknownPID = null;\n // we set it to -188, the += 188 in the for loop will reset start to 0\n start = syncOffset - 188;\n }\n pmtParsed = this.pmtParsed = true;\n break;\n }\n case 0x11:\n case 0x1fff:\n break;\n default:\n unknownPID = pid;\n break;\n }\n } else {\n tsPacketErrors++;\n }\n }\n if (tsPacketErrors > 0) {\n emitParsingError(this.observer, new Error(\"Found \" + tsPacketErrors + \" TS packet/s that do not start with 0x47\"));\n }\n videoTrack.pesData = videoData;\n audioTrack.pesData = audioData;\n id3Track.pesData = id3Data;\n var demuxResult = {\n audioTrack: audioTrack,\n videoTrack: videoTrack,\n id3Track: id3Track,\n textTrack: textTrack\n };\n if (flush) {\n this.extractRemainingSamples(demuxResult);\n }\n return demuxResult;\n };\n _proto.flush = function flush() {\n var remainderData = this.remainderData;\n this.remainderData = null;\n var result;\n if (remainderData) {\n result = this.demux(remainderData, -1, false, true);\n } else {\n result = {\n videoTrack: this._videoTrack,\n audioTrack: this._audioTrack,\n id3Track: this._id3Track,\n textTrack: this._txtTrack\n };\n }\n this.extractRemainingSamples(result);\n if (this.sampleAes) {\n return this.decrypt(result, this.sampleAes);\n }\n return result;\n };\n _proto.extractRemainingSamples = function extractRemainingSamples(demuxResult) {\n var audioTrack = demuxResult.audioTrack,\n videoTrack = demuxResult.videoTrack,\n id3Track = demuxResult.id3Track,\n textTrack = demuxResult.textTrack;\n var videoData = videoTrack.pesData;\n var audioData = audioTrack.pesData;\n var id3Data = id3Track.pesData;\n // try to parse last PES packets\n var pes;\n if (videoData && (pes = parsePES(videoData))) {\n this.videoParser.parseAVCPES(videoTrack, textTrack, pes, true, this._duration);\n videoTrack.pesData = null;\n } else {\n // either avcData null or PES truncated, keep it for next frag parsing\n videoTrack.pesData = videoData;\n }\n if (audioData && (pes = parsePES(audioData))) {\n switch (audioTrack.segmentCodec) {\n case 'aac':\n this.parseAACPES(audioTrack, pes);\n break;\n case 'mp3':\n this.parseMPEGPES(audioTrack, pes);\n break;\n case 'ac3':\n {\n this.parseAC3PES(audioTrack, pes);\n }\n break;\n }\n audioTrack.pesData = null;\n } else {\n if (audioData != null && audioData.size) {\n logger.log('last AAC PES packet truncated,might overlap between fragments');\n }\n\n // either audioData null or PES truncated, keep it for next frag parsing\n audioTrack.pesData = audioData;\n }\n if (id3Data && (pes = parsePES(id3Data))) {\n this.parseID3PES(id3Track, pes);\n id3Track.pesData = null;\n } else {\n // either id3Data null or PES truncated, keep it for next frag parsing\n id3Track.pesData = id3Data;\n }\n };\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n var demuxResult = this.demux(data, timeOffset, true, !this.config.progressive);\n var sampleAes = this.sampleAes = new SampleAesDecrypter(this.observer, this.config, keyData);\n return this.decrypt(demuxResult, sampleAes);\n };\n _proto.decrypt = function decrypt(demuxResult, sampleAes) {\n return new Promise(function (resolve) {\n var audioTrack = demuxResult.audioTrack,\n videoTrack = demuxResult.videoTrack;\n if (audioTrack.samples && audioTrack.segmentCodec === 'aac') {\n sampleAes.decryptAacSamples(audioTrack.samples, 0, function () {\n if (videoTrack.samples) {\n sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () {\n resolve(demuxResult);\n });\n } else {\n resolve(demuxResult);\n }\n });\n } else if (videoTrack.samples) {\n sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () {\n resolve(demuxResult);\n });\n }\n });\n };\n _proto.destroy = function destroy() {\n this._duration = 0;\n };\n _proto.parseAACPES = function parseAACPES(track, pes) {\n var startOffset = 0;\n var aacOverFlow = this.aacOverFlow;\n var data = pes.data;\n if (aacOverFlow) {\n this.aacOverFlow = null;\n var frameMissingBytes = aacOverFlow.missing;\n var sampleLength = aacOverFlow.sample.unit.byteLength;\n // logger.log(`AAC: append overflowing ${sampleLength} bytes to beginning of new PES`);\n if (frameMissingBytes === -1) {\n data = appendUint8Array(aacOverFlow.sample.unit, data);\n } else {\n var frameOverflowBytes = sampleLength - frameMissingBytes;\n aacOverFlow.sample.unit.set(data.subarray(0, frameMissingBytes), frameOverflowBytes);\n track.samples.push(aacOverFlow.sample);\n startOffset = aacOverFlow.missing;\n }\n }\n // look for ADTS header (0xFFFx)\n var offset;\n var len;\n for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n if (isHeader$1(data, offset)) {\n break;\n }\n }\n // if ADTS header does not start straight from the beginning of the PES payload, raise an error\n if (offset !== startOffset) {\n var reason;\n var recoverable = offset < len - 1;\n if (recoverable) {\n reason = \"AAC PES did not start with ADTS header,offset:\" + offset;\n } else {\n reason = 'No ADTS header found in AAC PES';\n }\n emitParsingError(this.observer, new Error(reason), recoverable);\n if (!recoverable) {\n return;\n }\n }\n initTrackConfig(track, this.observer, data, offset, this.audioCodec);\n var pts;\n if (pes.pts !== undefined) {\n pts = pes.pts;\n } else if (aacOverFlow) {\n // if last AAC frame is overflowing, we should ensure timestamps are contiguous:\n // first sample PTS should be equal to last sample PTS + frameDuration\n var frameDuration = getFrameDuration(track.samplerate);\n pts = aacOverFlow.sample.pts + frameDuration;\n } else {\n logger.warn('[tsdemuxer]: AAC PES unknown PTS');\n return;\n }\n\n // scan for aac samples\n var frameIndex = 0;\n var frame;\n while (offset < len) {\n frame = appendFrame$1(track, data, offset, pts, frameIndex);\n offset += frame.length;\n if (!frame.missing) {\n frameIndex++;\n for (; offset < len - 1; offset++) {\n if (isHeader$1(data, offset)) {\n break;\n }\n }\n } else {\n this.aacOverFlow = frame;\n break;\n }\n }\n };\n _proto.parseMPEGPES = function parseMPEGPES(track, pes) {\n var data = pes.data;\n var length = data.length;\n var frameIndex = 0;\n var offset = 0;\n var pts = pes.pts;\n if (pts === undefined) {\n logger.warn('[tsdemuxer]: MPEG PES unknown PTS');\n return;\n }\n while (offset < length) {\n if (isHeader(data, offset)) {\n var frame = appendFrame(track, data, offset, pts, frameIndex);\n if (frame) {\n offset += frame.length;\n frameIndex++;\n } else {\n // logger.log('Unable to parse Mpeg audio frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n };\n _proto.parseAC3PES = function parseAC3PES(track, pes) {\n {\n var data = pes.data;\n var pts = pes.pts;\n if (pts === undefined) {\n logger.warn('[tsdemuxer]: AC3 PES unknown PTS');\n return;\n }\n var length = data.length;\n var frameIndex = 0;\n var offset = 0;\n var parsed;\n while (offset < length && (parsed = _appendFrame(track, data, offset, pts, frameIndex++)) > 0) {\n offset += parsed;\n }\n }\n };\n _proto.parseID3PES = function parseID3PES(id3Track, pes) {\n if (pes.pts === undefined) {\n logger.warn('[tsdemuxer]: ID3 PES unknown PTS');\n return;\n }\n var id3Sample = _extends({}, pes, {\n type: this._videoTrack ? MetadataSchema.emsg : MetadataSchema.audioId3,\n duration: Number.POSITIVE_INFINITY\n });\n id3Track.samples.push(id3Sample);\n };\n return TSDemuxer;\n }();\n function parsePID(data, offset) {\n // pid is a 13-bit field starting at the last bit of TS[1]\n return ((data[offset + 1] & 0x1f) << 8) + data[offset + 2];\n }\n function parsePAT(data, offset) {\n // skip the PSI header and parse the first PMT entry\n return (data[offset + 10] & 0x1f) << 8 | data[offset + 11];\n }\n function parsePMT(data, offset, typeSupported, isSampleAes, observer) {\n var result = {\n audioPid: -1,\n videoPid: -1,\n id3Pid: -1,\n segmentVideoCodec: 'avc',\n segmentAudioCodec: 'aac'\n };\n var sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];\n var tableEnd = offset + 3 + sectionLength - 4;\n // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n var programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11];\n // advance the offset to the first entry in the mapping table\n offset += 12 + programInfoLength;\n while (offset < tableEnd) {\n var pid = parsePID(data, offset);\n var esInfoLength = (data[offset + 3] & 0x0f) << 8 | data[offset + 4];\n switch (data[offset]) {\n case 0xcf:\n // SAMPLE-AES AAC\n if (!isSampleAes) {\n logEncryptedSamplesFoundInUnencryptedStream('ADTS AAC');\n break;\n }\n /* falls through */\n case 0x0f:\n // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n // logger.log('AAC PID:' + pid);\n if (result.audioPid === -1) {\n result.audioPid = pid;\n }\n break;\n\n // Packetized metadata (ID3)\n case 0x15:\n // logger.log('ID3 PID:' + pid);\n if (result.id3Pid === -1) {\n result.id3Pid = pid;\n }\n break;\n case 0xdb:\n // SAMPLE-AES AVC\n if (!isSampleAes) {\n logEncryptedSamplesFoundInUnencryptedStream('H.264');\n break;\n }\n /* falls through */\n case 0x1b:\n // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n // logger.log('AVC PID:' + pid);\n if (result.videoPid === -1) {\n result.videoPid = pid;\n result.segmentVideoCodec = 'avc';\n }\n break;\n\n // ISO/IEC 11172-3 (MPEG-1 audio)\n // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n case 0x03:\n case 0x04:\n // logger.log('MPEG PID:' + pid);\n if (!typeSupported.mpeg && !typeSupported.mp3) {\n logger.log('MPEG audio found, not supported in this browser');\n } else if (result.audioPid === -1) {\n result.audioPid = pid;\n result.segmentAudioCodec = 'mp3';\n }\n break;\n case 0xc1:\n // SAMPLE-AES AC3\n if (!isSampleAes) {\n logEncryptedSamplesFoundInUnencryptedStream('AC-3');\n break;\n }\n /* falls through */\n case 0x81:\n {\n if (!typeSupported.ac3) {\n logger.log('AC-3 audio found, not supported in this browser');\n } else if (result.audioPid === -1) {\n result.audioPid = pid;\n result.segmentAudioCodec = 'ac3';\n }\n }\n break;\n case 0x06:\n // stream_type 6 can mean a lot of different things in case of DVB.\n // We need to look at the descriptors. Right now, we're only interested\n // in AC-3 audio, so we do the descriptor parsing only when we don't have\n // an audio PID yet.\n if (result.audioPid === -1 && esInfoLength > 0) {\n var parsePos = offset + 5;\n var remaining = esInfoLength;\n while (remaining > 2) {\n var descriptorId = data[parsePos];\n switch (descriptorId) {\n case 0x6a:\n // DVB Descriptor for AC-3\n {\n if (typeSupported.ac3 !== true) {\n logger.log('AC-3 audio found, not supported in this browser for now');\n } else {\n result.audioPid = pid;\n result.segmentAudioCodec = 'ac3';\n }\n }\n break;\n }\n var descriptorLen = data[parsePos + 1] + 2;\n parsePos += descriptorLen;\n remaining -= descriptorLen;\n }\n }\n break;\n case 0xc2: // SAMPLE-AES EC3\n /* falls through */\n case 0x87:\n emitParsingError(observer, new Error('Unsupported EC-3 in M2TS found'));\n return result;\n case 0x24:\n emitParsingError(observer, new Error('Unsupported HEVC in M2TS found'));\n return result;\n }\n // move to the next table entry\n // skip past the elementary stream descriptors, if present\n offset += esInfoLength + 5;\n }\n return result;\n }\n function emitParsingError(observer, error, levelRetry) {\n logger.warn(\"parsing error: \" + error.message);\n observer.emit(Events.ERROR, Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n fatal: false,\n levelRetry: levelRetry,\n error: error,\n reason: error.message\n });\n }\n function logEncryptedSamplesFoundInUnencryptedStream(type) {\n logger.log(type + \" with AES-128-CBC encryption found in unencrypted stream\");\n }\n function parsePES(stream) {\n var i = 0;\n var frag;\n var pesLen;\n var pesHdrLen;\n var pesPts;\n var pesDts;\n var data = stream.data;\n // safety check\n if (!stream || stream.size === 0) {\n return null;\n }\n\n // we might need up to 19 bytes to read PES header\n // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes\n // usually only one merge is needed (and this is rare ...)\n while (data[0].length < 19 && data.length > 1) {\n data[0] = appendUint8Array(data[0], data[1]);\n data.splice(1, 1);\n }\n // retrieve PTS/DTS from first fragment\n frag = data[0];\n var pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n if (pesPrefix === 1) {\n pesLen = (frag[4] << 8) + frag[5];\n // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated\n // minus 6 : PES header size\n if (pesLen && pesLen > stream.size - 6) {\n return null;\n }\n var pesFlags = frag[7];\n if (pesFlags & 0xc0) {\n /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\n as Bitwise operators treat their operands as a sequence of 32 bits */\n pesPts = (frag[9] & 0x0e) * 536870912 +\n // 1 << 29\n (frag[10] & 0xff) * 4194304 +\n // 1 << 22\n (frag[11] & 0xfe) * 16384 +\n // 1 << 14\n (frag[12] & 0xff) * 128 +\n // 1 << 7\n (frag[13] & 0xfe) / 2;\n if (pesFlags & 0x40) {\n pesDts = (frag[14] & 0x0e) * 536870912 +\n // 1 << 29\n (frag[15] & 0xff) * 4194304 +\n // 1 << 22\n (frag[16] & 0xfe) * 16384 +\n // 1 << 14\n (frag[17] & 0xff) * 128 +\n // 1 << 7\n (frag[18] & 0xfe) / 2;\n if (pesPts - pesDts > 60 * 90000) {\n logger.warn(Math.round((pesPts - pesDts) / 90000) + \"s delta between PTS and DTS, align them\");\n pesPts = pesDts;\n }\n } else {\n pesDts = pesPts;\n }\n }\n pesHdrLen = frag[8];\n // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension\n var payloadStartOffset = pesHdrLen + 9;\n if (stream.size <= payloadStartOffset) {\n return null;\n }\n stream.size -= payloadStartOffset;\n // reassemble PES packet\n var pesData = new Uint8Array(stream.size);\n for (var j = 0, dataLen = data.length; j < dataLen; j++) {\n frag = data[j];\n var len = frag.byteLength;\n if (payloadStartOffset) {\n if (payloadStartOffset > len) {\n // trim full frag if PES header bigger than frag\n payloadStartOffset -= len;\n continue;\n } else {\n // trim partial frag if PES header smaller than frag\n frag = frag.subarray(payloadStartOffset);\n len -= payloadStartOffset;\n payloadStartOffset = 0;\n }\n }\n pesData.set(frag, i);\n i += len;\n }\n if (pesLen) {\n // payload size : remove PES header + PES extension\n pesLen -= pesHdrLen + 3;\n }\n return {\n data: pesData,\n pts: pesPts,\n dts: pesDts,\n len: pesLen\n };\n }\n return null;\n }\n\n var MP3Demuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {\n _inheritsLoose(MP3Demuxer, _BaseAudioDemuxer);\n function MP3Demuxer() {\n return _BaseAudioDemuxer.apply(this, arguments) || this;\n }\n var _proto = MP3Demuxer.prototype;\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n _BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration);\n this._audioTrack = {\n container: 'audio/mpeg',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n segmentCodec: 'mp3',\n samples: [],\n manifestCodec: audioCodec,\n duration: trackDuration,\n inputTimeScale: 90000,\n dropped: 0\n };\n };\n MP3Demuxer.probe = function probe$1(data) {\n if (!data) {\n return false;\n }\n\n // check if data contains ID3 timestamp and MPEG sync word\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n var id3Data = getID3Data(data, 0);\n var offset = (id3Data == null ? void 0 : id3Data.length) || 0;\n\n // Check for ac-3|ec-3 sync bytes and return false if present\n if (id3Data && data[offset] === 0x0b && data[offset + 1] === 0x77 && getTimeStamp(id3Data) !== undefined &&\n // check the bsid to confirm ac-3 or ec-3 (not mp3)\n getAudioBSID(data, offset) <= 16) {\n return false;\n }\n for (var length = data.length; offset < length; offset++) {\n if (probe(data, offset)) {\n logger.log('MPEG Audio sync word found !');\n return true;\n }\n }\n return false;\n };\n _proto.canParse = function canParse$1(data, offset) {\n return canParse(data, offset);\n };\n _proto.appendFrame = function appendFrame$1(track, data, offset) {\n if (this.basePTS === null) {\n return;\n }\n return appendFrame(track, data, offset, this.basePTS, this.frameIndex);\n };\n return MP3Demuxer;\n }(BaseAudioDemuxer);\n\n /**\n * AAC helper\n */\n var AAC = /*#__PURE__*/function () {\n function AAC() {}\n AAC.getSilentFrame = function getSilentFrame(codec, channelCount) {\n switch (codec) {\n case 'mp4a.40.2':\n if (channelCount === 1) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);\n } else if (channelCount === 2) {\n return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);\n } else if (channelCount === 3) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);\n } else if (channelCount === 4) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);\n } else if (channelCount === 5) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);\n } else if (channelCount === 6) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);\n }\n break;\n // handle HE-AAC below (mp4a.40.5 / mp4a.40.29)\n default:\n if (channelCount === 1) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0:d=0.05\" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 2) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 3) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n }\n break;\n }\n return undefined;\n };\n return AAC;\n }();\n\n /**\n * Generate MP4 Box\n */\n\n var UINT32_MAX = Math.pow(2, 32) - 1;\n var MP4 = /*#__PURE__*/function () {\n function MP4() {}\n MP4.init = function init() {\n MP4.types = {\n avc1: [],\n // codingname\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n '.mp3': [],\n dac3: [],\n 'ac-3': [],\n mvex: [],\n mvhd: [],\n pasp: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n var i;\n for (i in MP4.types) {\n if (MP4.types.hasOwnProperty(i)) {\n MP4.types[i] = [i.charCodeAt(0), i.charCodeAt(1), i.charCodeAt(2), i.charCodeAt(3)];\n }\n }\n var videoHdlr = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n 0x76, 0x69, 0x64, 0x65,\n // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]);\n var audioHdlr = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n 0x73, 0x6f, 0x75, 0x6e,\n // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'\n ]);\n MP4.HDLR_TYPES = {\n video: videoHdlr,\n audio: audioHdlr\n };\n var dref = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x01,\n // entry_count\n 0x00, 0x00, 0x00, 0x0c,\n // entry_size\n 0x75, 0x72, 0x6c, 0x20,\n // 'url' type\n 0x00,\n // version 0\n 0x00, 0x00, 0x01 // entry_flags\n ]);\n var stco = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n MP4.STTS = MP4.STSC = MP4.STCO = stco;\n MP4.STSZ = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00,\n // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n MP4.VMHD = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x01,\n // flags\n 0x00, 0x00,\n // graphicsmode\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // opcolor\n ]);\n MP4.SMHD = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00,\n // balance\n 0x00, 0x00 // reserved\n ]);\n MP4.STSD = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x01]); // entry_count\n\n var majorBrand = new Uint8Array([105, 115, 111, 109]); // isom\n var avc1Brand = new Uint8Array([97, 118, 99, 49]); // avc1\n var minorVersion = new Uint8Array([0, 0, 0, 1]);\n MP4.FTYP = MP4.box(MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand);\n MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref));\n };\n MP4.box = function box(type) {\n var size = 8;\n for (var _len = arguments.length, payload = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n payload[_key - 1] = arguments[_key];\n }\n var i = payload.length;\n var len = i;\n // calculate the total size we need to allocate\n while (i--) {\n size += payload[i].byteLength;\n }\n var result = new Uint8Array(size);\n result[0] = size >> 24 & 0xff;\n result[1] = size >> 16 & 0xff;\n result[2] = size >> 8 & 0xff;\n result[3] = size & 0xff;\n result.set(type, 4);\n // copy the payload into the result\n for (i = 0, size = 8; i < len; i++) {\n // copy payload[i] array @ offset size\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n return result;\n };\n MP4.hdlr = function hdlr(type) {\n return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]);\n };\n MP4.mdat = function mdat(data) {\n return MP4.box(MP4.types.mdat, data);\n };\n MP4.mdhd = function mdhd(timescale, duration) {\n duration *= timescale;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.mdhd, new Uint8Array([0x01,\n // version 1\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,\n // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,\n // modification_time\n timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff,\n // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x55, 0xc4,\n // 'und' language (undetermined)\n 0x00, 0x00]));\n };\n MP4.mdia = function mdia(track) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track));\n };\n MP4.mfhd = function mfhd(sequenceNumber) {\n return MP4.box(MP4.types.mfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00,\n // flags\n sequenceNumber >> 24, sequenceNumber >> 16 & 0xff, sequenceNumber >> 8 & 0xff, sequenceNumber & 0xff // sequence_number\n ]));\n };\n MP4.minf = function minf(track) {\n if (track.type === 'audio') {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track));\n } else {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track));\n }\n };\n MP4.moof = function moof(sn, baseMediaDecodeTime, track) {\n return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track, baseMediaDecodeTime));\n };\n MP4.moov = function moov(tracks) {\n var i = tracks.length;\n var boxes = [];\n while (i--) {\n boxes[i] = MP4.trak(tracks[i]);\n }\n return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks)));\n };\n MP4.mvex = function mvex(tracks) {\n var i = tracks.length;\n var boxes = [];\n while (i--) {\n boxes[i] = MP4.trex(tracks[i]);\n }\n return MP4.box.apply(null, [MP4.types.mvex].concat(boxes));\n };\n MP4.mvhd = function mvhd(timescale, duration) {\n duration *= timescale;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n var bytes = new Uint8Array([0x01,\n // version 1\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,\n // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,\n // modification_time\n timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff,\n // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x01, 0x00, 0x00,\n // 1.0 rate\n 0x01, 0x00,\n // 1.0 volume\n 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,\n // transformation: unity matrix\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n 0xff, 0xff, 0xff, 0xff // next_track_ID\n ]);\n return MP4.box(MP4.types.mvhd, bytes);\n };\n MP4.sdtp = function sdtp(track) {\n var samples = track.samples || [];\n var bytes = new Uint8Array(4 + samples.length);\n var i;\n var flags;\n // leave the full box header (4 bytes) all zero\n // write the sample table\n for (i = 0; i < samples.length; i++) {\n flags = samples[i].flags;\n bytes[i + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy;\n }\n return MP4.box(MP4.types.sdtp, bytes);\n };\n MP4.stbl = function stbl(track) {\n return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO));\n };\n MP4.avc1 = function avc1(track) {\n var sps = [];\n var pps = [];\n var i;\n var data;\n var len;\n // assemble the SPSs\n\n for (i = 0; i < track.sps.length; i++) {\n data = track.sps[i];\n len = data.byteLength;\n sps.push(len >>> 8 & 0xff);\n sps.push(len & 0xff);\n\n // SPS\n sps = sps.concat(Array.prototype.slice.call(data));\n }\n\n // assemble the PPSs\n for (i = 0; i < track.pps.length; i++) {\n data = track.pps[i];\n len = data.byteLength;\n pps.push(len >>> 8 & 0xff);\n pps.push(len & 0xff);\n pps = pps.concat(Array.prototype.slice.call(data));\n }\n var avcc = MP4.box(MP4.types.avcC, new Uint8Array([0x01,\n // version\n sps[3],\n // profile\n sps[4],\n // profile compat\n sps[5],\n // level\n 0xfc | 3,\n // lengthSizeMinusOne, hard-coded to 4 bytes\n 0xe0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets\n ].concat(sps).concat([track.pps.length // numOfPictureParameterSets\n ]).concat(pps))); // \"PPS\"\n var width = track.width;\n var height = track.height;\n var hSpacing = track.pixelRatio[0];\n var vSpacing = track.pixelRatio[1];\n return MP4.box(MP4.types.avc1, new Uint8Array([0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01,\n // data_reference_index\n 0x00, 0x00,\n // pre_defined\n 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n width >> 8 & 0xff, width & 0xff,\n // width\n height >> 8 & 0xff, height & 0xff,\n // height\n 0x00, 0x48, 0x00, 0x00,\n // horizresolution\n 0x00, 0x48, 0x00, 0x00,\n // vertresolution\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01,\n // frame_count\n 0x12, 0x64, 0x61, 0x69, 0x6c,\n // dailymotion/hls.js\n 0x79, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x6c, 0x73, 0x2e, 0x6a, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // compressorname\n 0x00, 0x18,\n // depth = 24\n 0x11, 0x11]),\n // pre_defined = -1\n avcc, MP4.box(MP4.types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80,\n // bufferSizeDB\n 0x00, 0x2d, 0xc6, 0xc0,\n // maxBitrate\n 0x00, 0x2d, 0xc6, 0xc0])),\n // avgBitrate\n MP4.box(MP4.types.pasp, new Uint8Array([hSpacing >> 24,\n // hSpacing\n hSpacing >> 16 & 0xff, hSpacing >> 8 & 0xff, hSpacing & 0xff, vSpacing >> 24,\n // vSpacing\n vSpacing >> 16 & 0xff, vSpacing >> 8 & 0xff, vSpacing & 0xff])));\n };\n MP4.esds = function esds(track) {\n var configlen = track.config.length;\n return new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n\n 0x03,\n // descriptor_type\n 0x17 + configlen,\n // length\n 0x00, 0x01,\n // es_id\n 0x00,\n // stream_priority\n\n 0x04,\n // descriptor_type\n 0x0f + configlen,\n // length\n 0x40,\n // codec : mpeg4_audio\n 0x15,\n // stream_type\n 0x00, 0x00, 0x00,\n // buffer_size\n 0x00, 0x00, 0x00, 0x00,\n // maxBitrate\n 0x00, 0x00, 0x00, 0x00,\n // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor\n };\n MP4.audioStsd = function audioStsd(track) {\n var samplerate = track.samplerate;\n return new Uint8Array([0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01,\n // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, track.channelCount,\n // channelcount\n 0x00, 0x10,\n // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00,\n // reserved2\n samplerate >> 8 & 0xff, samplerate & 0xff,\n //\n 0x00, 0x00]);\n };\n MP4.mp4a = function mp4a(track) {\n return MP4.box(MP4.types.mp4a, MP4.audioStsd(track), MP4.box(MP4.types.esds, MP4.esds(track)));\n };\n MP4.mp3 = function mp3(track) {\n return MP4.box(MP4.types['.mp3'], MP4.audioStsd(track));\n };\n MP4.ac3 = function ac3(track) {\n return MP4.box(MP4.types['ac-3'], MP4.audioStsd(track), MP4.box(MP4.types.dac3, track.config));\n };\n MP4.stsd = function stsd(track) {\n if (track.type === 'audio') {\n if (track.segmentCodec === 'mp3' && track.codec === 'mp3') {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp3(track));\n }\n if (track.segmentCodec === 'ac3') {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.ac3(track));\n }\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track));\n } else {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track));\n }\n };\n MP4.tkhd = function tkhd(track) {\n var id = track.id;\n var duration = track.duration * track.timescale;\n var width = track.width;\n var height = track.height;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.tkhd, new Uint8Array([0x01,\n // version 1\n 0x00, 0x00, 0x07,\n // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,\n // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,\n // modification_time\n id >> 24 & 0xff, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff,\n // track_ID\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00,\n // layer\n 0x00, 0x00,\n // alternate_group\n 0x00, 0x00,\n // non-audio track volume\n 0x00, 0x00,\n // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,\n // transformation: unity matrix\n width >> 8 & 0xff, width & 0xff, 0x00, 0x00,\n // width\n height >> 8 & 0xff, height & 0xff, 0x00, 0x00 // height\n ]));\n };\n MP4.traf = function traf(track, baseMediaDecodeTime) {\n var sampleDependencyTable = MP4.sdtp(track);\n var id = track.id;\n var upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n var lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff // track_ID\n ])), MP4.box(MP4.types.tfdt, new Uint8Array([0x01,\n // version 1\n 0x00, 0x00, 0x00,\n // flags\n upperWordBaseMediaDecodeTime >> 24, upperWordBaseMediaDecodeTime >> 16 & 0xff, upperWordBaseMediaDecodeTime >> 8 & 0xff, upperWordBaseMediaDecodeTime & 0xff, lowerWordBaseMediaDecodeTime >> 24, lowerWordBaseMediaDecodeTime >> 16 & 0xff, lowerWordBaseMediaDecodeTime >> 8 & 0xff, lowerWordBaseMediaDecodeTime & 0xff])), MP4.trun(track, sampleDependencyTable.length + 16 +\n // tfhd\n 20 +\n // tfdt\n 8 +\n // traf header\n 16 +\n // mfhd\n 8 +\n // moof header\n 8),\n // mdat header\n sampleDependencyTable);\n }\n\n /**\n * Generate a track box.\n * @param track a track definition\n */;\n MP4.trak = function trak(track) {\n track.duration = track.duration || 0xffffffff;\n return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track));\n };\n MP4.trex = function trex(track) {\n var id = track.id;\n return MP4.box(MP4.types.trex, new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff,\n // track_ID\n 0x00, 0x00, 0x00, 0x01,\n // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00,\n // default_sample_duration\n 0x00, 0x00, 0x00, 0x00,\n // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]));\n };\n MP4.trun = function trun(track, offset) {\n var samples = track.samples || [];\n var len = samples.length;\n var arraylen = 12 + 16 * len;\n var array = new Uint8Array(arraylen);\n var i;\n var sample;\n var duration;\n var size;\n var flags;\n var cts;\n offset += 8 + arraylen;\n array.set([track.type === 'video' ? 0x01 : 0x00,\n // version 1 for video with signed-int sample_composition_time_offset\n 0x00, 0x0f, 0x01,\n // flags\n len >>> 24 & 0xff, len >>> 16 & 0xff, len >>> 8 & 0xff, len & 0xff,\n // sample_count\n offset >>> 24 & 0xff, offset >>> 16 & 0xff, offset >>> 8 & 0xff, offset & 0xff // data_offset\n ], 0);\n for (i = 0; i < len; i++) {\n sample = samples[i];\n duration = sample.duration;\n size = sample.size;\n flags = sample.flags;\n cts = sample.cts;\n array.set([duration >>> 24 & 0xff, duration >>> 16 & 0xff, duration >>> 8 & 0xff, duration & 0xff,\n // sample_duration\n size >>> 24 & 0xff, size >>> 16 & 0xff, size >>> 8 & 0xff, size & 0xff,\n // sample_size\n flags.isLeading << 2 | flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync, flags.degradPrio & 0xf0 << 8, flags.degradPrio & 0x0f,\n // sample_flags\n cts >>> 24 & 0xff, cts >>> 16 & 0xff, cts >>> 8 & 0xff, cts & 0xff // sample_composition_time_offset\n ], 12 + 16 * i);\n }\n return MP4.box(MP4.types.trun, array);\n };\n MP4.initSegment = function initSegment(tracks) {\n if (!MP4.types) {\n MP4.init();\n }\n var movie = MP4.moov(tracks);\n var result = appendUint8Array(MP4.FTYP, movie);\n return result;\n };\n return MP4;\n }();\n MP4.types = void 0;\n MP4.HDLR_TYPES = void 0;\n MP4.STTS = void 0;\n MP4.STSC = void 0;\n MP4.STCO = void 0;\n MP4.STSZ = void 0;\n MP4.VMHD = void 0;\n MP4.SMHD = void 0;\n MP4.STSD = void 0;\n MP4.FTYP = void 0;\n MP4.DINF = void 0;\n\n var MPEG_TS_CLOCK_FREQ_HZ = 90000;\n function toTimescaleFromBase(baseTime, destScale, srcBase, round) {\n if (srcBase === void 0) {\n srcBase = 1;\n }\n if (round === void 0) {\n round = false;\n }\n var result = baseTime * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)`\n return round ? Math.round(result) : result;\n }\n function toTimescaleFromScale(baseTime, destScale, srcScale, round) {\n if (srcScale === void 0) {\n srcScale = 1;\n }\n if (round === void 0) {\n round = false;\n }\n return toTimescaleFromBase(baseTime, destScale, 1 / srcScale, round);\n }\n function toMsFromMpegTsClock(baseTime, round) {\n if (round === void 0) {\n round = false;\n }\n return toTimescaleFromBase(baseTime, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);\n }\n function toMpegTsClockFromTimescale(baseTime, srcScale) {\n if (srcScale === void 0) {\n srcScale = 1;\n }\n return toTimescaleFromBase(baseTime, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);\n }\n\n var MAX_SILENT_FRAME_DURATION = 10 * 1000; // 10 seconds\n var AAC_SAMPLES_PER_FRAME = 1024;\n var MPEG_AUDIO_SAMPLE_PER_FRAME = 1152;\n var AC3_SAMPLES_PER_FRAME = 1536;\n var chromeVersion = null;\n var safariWebkitVersion = null;\n var MP4Remuxer = /*#__PURE__*/function () {\n function MP4Remuxer(observer, config, typeSupported, vendor) {\n this.observer = void 0;\n this.config = void 0;\n this.typeSupported = void 0;\n this.ISGenerated = false;\n this._initPTS = null;\n this._initDTS = null;\n this.nextAvcDts = null;\n this.nextAudioPts = null;\n this.videoSampleDuration = null;\n this.isAudioContiguous = false;\n this.isVideoContiguous = false;\n this.videoTrackConfig = void 0;\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n this.ISGenerated = false;\n if (chromeVersion === null) {\n var userAgent = navigator.userAgent || '';\n var result = userAgent.match(/Chrome\\/(\\d+)/i);\n chromeVersion = result ? parseInt(result[1]) : 0;\n }\n if (safariWebkitVersion === null) {\n var _result = navigator.userAgent.match(/Safari\\/(\\d+)/i);\n safariWebkitVersion = _result ? parseInt(_result[1]) : 0;\n }\n }\n var _proto = MP4Remuxer.prototype;\n _proto.destroy = function destroy() {\n // @ts-ignore\n this.config = this.videoTrackConfig = this._initPTS = this._initDTS = null;\n };\n _proto.resetTimeStamp = function resetTimeStamp(defaultTimeStamp) {\n logger.log('[mp4-remuxer]: initPTS & initDTS reset');\n this._initPTS = this._initDTS = defaultTimeStamp;\n };\n _proto.resetNextTimestamp = function resetNextTimestamp() {\n logger.log('[mp4-remuxer]: reset next timestamp');\n this.isVideoContiguous = false;\n this.isAudioContiguous = false;\n };\n _proto.resetInitSegment = function resetInitSegment() {\n logger.log('[mp4-remuxer]: ISGenerated flag reset');\n this.ISGenerated = false;\n this.videoTrackConfig = undefined;\n };\n _proto.getVideoStartPts = function getVideoStartPts(videoSamples) {\n var rolloverDetected = false;\n var startPTS = videoSamples.reduce(function (minPTS, sample) {\n var delta = sample.pts - minPTS;\n if (delta < -4294967296) {\n // 2^32, see PTSNormalize for reasoning, but we're hitting a rollover here, and we don't want that to impact the timeOffset calculation\n rolloverDetected = true;\n return normalizePts(minPTS, sample.pts);\n } else if (delta > 0) {\n return minPTS;\n } else {\n return sample.pts;\n }\n }, videoSamples[0].pts);\n if (rolloverDetected) {\n logger.debug('PTS rollover detected');\n }\n return startPTS;\n };\n _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, flush, playlistType) {\n var video;\n var audio;\n var initSegment;\n var text;\n var id3;\n var independent;\n var audioTimeOffset = timeOffset;\n var videoTimeOffset = timeOffset;\n\n // If we're remuxing audio and video progressively, wait until we've received enough samples for each track before proceeding.\n // This is done to synchronize the audio and video streams. We know if the current segment will have samples if the \"pid\"\n // parameter is greater than -1. The pid is set when the PMT is parsed, which contains the tracks list.\n // However, if the initSegment has already been generated, or we've reached the end of a segment (flush),\n // then we can remux one track without waiting for the other.\n var hasAudio = audioTrack.pid > -1;\n var hasVideo = videoTrack.pid > -1;\n var length = videoTrack.samples.length;\n var enoughAudioSamples = audioTrack.samples.length > 0;\n var enoughVideoSamples = flush && length > 0 || length > 1;\n var canRemuxAvc = (!hasAudio || enoughAudioSamples) && (!hasVideo || enoughVideoSamples) || this.ISGenerated || flush;\n if (canRemuxAvc) {\n if (this.ISGenerated) {\n var _videoTrack$pixelRati, _config$pixelRatio, _videoTrack$pixelRati2, _config$pixelRatio2;\n var config = this.videoTrackConfig;\n if (config && (videoTrack.width !== config.width || videoTrack.height !== config.height || ((_videoTrack$pixelRati = videoTrack.pixelRatio) == null ? void 0 : _videoTrack$pixelRati[0]) !== ((_config$pixelRatio = config.pixelRatio) == null ? void 0 : _config$pixelRatio[0]) || ((_videoTrack$pixelRati2 = videoTrack.pixelRatio) == null ? void 0 : _videoTrack$pixelRati2[1]) !== ((_config$pixelRatio2 = config.pixelRatio) == null ? void 0 : _config$pixelRatio2[1]))) {\n this.resetInitSegment();\n }\n } else {\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n }\n var isVideoContiguous = this.isVideoContiguous;\n var firstKeyFrameIndex = -1;\n var firstKeyFramePTS;\n if (enoughVideoSamples) {\n firstKeyFrameIndex = findKeyframeIndex(videoTrack.samples);\n if (!isVideoContiguous && this.config.forceKeyFrameOnDiscontinuity) {\n independent = true;\n if (firstKeyFrameIndex > 0) {\n logger.warn(\"[mp4-remuxer]: Dropped \" + firstKeyFrameIndex + \" out of \" + length + \" video samples due to a missing keyframe\");\n var startPTS = this.getVideoStartPts(videoTrack.samples);\n videoTrack.samples = videoTrack.samples.slice(firstKeyFrameIndex);\n videoTrack.dropped += firstKeyFrameIndex;\n videoTimeOffset += (videoTrack.samples[0].pts - startPTS) / videoTrack.inputTimeScale;\n firstKeyFramePTS = videoTimeOffset;\n } else if (firstKeyFrameIndex === -1) {\n logger.warn(\"[mp4-remuxer]: No keyframe found out of \" + length + \" video samples\");\n independent = false;\n }\n }\n }\n if (this.ISGenerated) {\n if (enoughAudioSamples && enoughVideoSamples) {\n // timeOffset is expected to be the offset of the first timestamp of this fragment (first DTS)\n // if first audio DTS is not aligned with first video DTS then we need to take that into account\n // when providing timeOffset to remuxAudio / remuxVideo. if we don't do that, there might be a permanent / small\n // drift between audio and video streams\n var _startPTS = this.getVideoStartPts(videoTrack.samples);\n var tsDelta = normalizePts(audioTrack.samples[0].pts, _startPTS) - _startPTS;\n var audiovideoTimestampDelta = tsDelta / videoTrack.inputTimeScale;\n audioTimeOffset += Math.max(0, audiovideoTimestampDelta);\n videoTimeOffset += Math.max(0, -audiovideoTimestampDelta);\n }\n\n // Purposefully remuxing audio before video, so that remuxVideo can use nextAudioPts, which is calculated in remuxAudio.\n if (enoughAudioSamples) {\n // if initSegment was generated without audio samples, regenerate it again\n if (!audioTrack.samplerate) {\n logger.warn('[mp4-remuxer]: regenerate InitSegment as audio detected');\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n }\n audio = this.remuxAudio(audioTrack, audioTimeOffset, this.isAudioContiguous, accurateTimeOffset, hasVideo || enoughVideoSamples || playlistType === PlaylistLevelType.AUDIO ? videoTimeOffset : undefined);\n if (enoughVideoSamples) {\n var audioTrackLength = audio ? audio.endPTS - audio.startPTS : 0;\n // if initSegment was generated without video samples, regenerate it again\n if (!videoTrack.inputTimeScale) {\n logger.warn('[mp4-remuxer]: regenerate InitSegment as video detected');\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n }\n video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, audioTrackLength);\n }\n } else if (enoughVideoSamples) {\n video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, 0);\n }\n if (video) {\n video.firstKeyFrame = firstKeyFrameIndex;\n video.independent = firstKeyFrameIndex !== -1;\n video.firstKeyFramePTS = firstKeyFramePTS;\n }\n }\n }\n\n // Allow ID3 and text to remux, even if more audio/video samples are required\n if (this.ISGenerated && this._initPTS && this._initDTS) {\n if (id3Track.samples.length) {\n id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, this._initPTS, this._initDTS);\n }\n if (textTrack.samples.length) {\n text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, this._initPTS);\n }\n }\n return {\n audio: audio,\n video: video,\n initSegment: initSegment,\n independent: independent,\n text: text,\n id3: id3\n };\n };\n _proto.generateIS = function generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset) {\n var audioSamples = audioTrack.samples;\n var videoSamples = videoTrack.samples;\n var typeSupported = this.typeSupported;\n var tracks = {};\n var _initPTS = this._initPTS;\n var computePTSDTS = !_initPTS || accurateTimeOffset;\n var container = 'audio/mp4';\n var initPTS;\n var initDTS;\n var timescale;\n if (computePTSDTS) {\n initPTS = initDTS = Infinity;\n }\n if (audioTrack.config && audioSamples.length) {\n // let's use audio sampling rate as MP4 time scale.\n // rationale is that there is a integer nb of audio frames per audio sample (1024 for AAC)\n // using audio sampling rate here helps having an integer MP4 frame duration\n // this avoids potential rounding issue and AV sync issue\n audioTrack.timescale = audioTrack.samplerate;\n switch (audioTrack.segmentCodec) {\n case 'mp3':\n if (typeSupported.mpeg) {\n // Chrome and Safari\n container = 'audio/mpeg';\n audioTrack.codec = '';\n } else if (typeSupported.mp3) {\n // Firefox\n audioTrack.codec = 'mp3';\n }\n break;\n case 'ac3':\n audioTrack.codec = 'ac-3';\n break;\n }\n tracks.audio = {\n id: 'audio',\n container: container,\n codec: audioTrack.codec,\n initSegment: audioTrack.segmentCodec === 'mp3' && typeSupported.mpeg ? new Uint8Array(0) : MP4.initSegment([audioTrack]),\n metadata: {\n channelCount: audioTrack.channelCount\n }\n };\n if (computePTSDTS) {\n timescale = audioTrack.inputTimeScale;\n if (!_initPTS || timescale !== _initPTS.timescale) {\n // remember first PTS of this demuxing context. for audio, PTS = DTS\n initPTS = initDTS = audioSamples[0].pts - Math.round(timescale * timeOffset);\n } else {\n computePTSDTS = false;\n }\n }\n }\n if (videoTrack.sps && videoTrack.pps && videoSamples.length) {\n // let's use input time scale as MP4 video timescale\n // we use input time scale straight away to avoid rounding issues on frame duration / cts computation\n videoTrack.timescale = videoTrack.inputTimeScale;\n tracks.video = {\n id: 'main',\n container: 'video/mp4',\n codec: videoTrack.codec,\n initSegment: MP4.initSegment([videoTrack]),\n metadata: {\n width: videoTrack.width,\n height: videoTrack.height\n }\n };\n if (computePTSDTS) {\n timescale = videoTrack.inputTimeScale;\n if (!_initPTS || timescale !== _initPTS.timescale) {\n var startPTS = this.getVideoStartPts(videoSamples);\n var startOffset = Math.round(timescale * timeOffset);\n initDTS = Math.min(initDTS, normalizePts(videoSamples[0].dts, startPTS) - startOffset);\n initPTS = Math.min(initPTS, startPTS - startOffset);\n } else {\n computePTSDTS = false;\n }\n }\n this.videoTrackConfig = {\n width: videoTrack.width,\n height: videoTrack.height,\n pixelRatio: videoTrack.pixelRatio\n };\n }\n if (Object.keys(tracks).length) {\n this.ISGenerated = true;\n if (computePTSDTS) {\n this._initPTS = {\n baseTime: initPTS,\n timescale: timescale\n };\n this._initDTS = {\n baseTime: initDTS,\n timescale: timescale\n };\n } else {\n initPTS = timescale = undefined;\n }\n return {\n tracks: tracks,\n initPTS: initPTS,\n timescale: timescale\n };\n }\n };\n _proto.remuxVideo = function remuxVideo(track, timeOffset, contiguous, audioTrackLength) {\n var timeScale = track.inputTimeScale;\n var inputSamples = track.samples;\n var outputSamples = [];\n var nbSamples = inputSamples.length;\n var initPTS = this._initPTS;\n var nextAvcDts = this.nextAvcDts;\n var offset = 8;\n var mp4SampleDuration = this.videoSampleDuration;\n var firstDTS;\n var lastDTS;\n var minPTS = Number.POSITIVE_INFINITY;\n var maxPTS = Number.NEGATIVE_INFINITY;\n var sortSamples = false;\n\n // if parsed fragment is contiguous with last one, let's use last DTS value as reference\n if (!contiguous || nextAvcDts === null) {\n var pts = timeOffset * timeScale;\n var cts = inputSamples[0].pts - normalizePts(inputSamples[0].dts, inputSamples[0].pts);\n if (chromeVersion && nextAvcDts !== null && Math.abs(pts - cts - nextAvcDts) < 15000) {\n // treat as contigous to adjust samples that would otherwise produce video buffer gaps in Chrome\n contiguous = true;\n } else {\n // if not contiguous, let's use target timeOffset\n nextAvcDts = pts - cts;\n }\n }\n\n // PTS is coded on 33bits, and can loop from -2^32 to 2^32\n // PTSNormalize will make PTS/DTS value monotonic, we use last known DTS value as reference value\n var initTime = initPTS.baseTime * timeScale / initPTS.timescale;\n for (var i = 0; i < nbSamples; i++) {\n var sample = inputSamples[i];\n sample.pts = normalizePts(sample.pts - initTime, nextAvcDts);\n sample.dts = normalizePts(sample.dts - initTime, nextAvcDts);\n if (sample.dts < inputSamples[i > 0 ? i - 1 : i].dts) {\n sortSamples = true;\n }\n }\n\n // sort video samples by DTS then PTS then demux id order\n if (sortSamples) {\n inputSamples.sort(function (a, b) {\n var deltadts = a.dts - b.dts;\n var deltapts = a.pts - b.pts;\n return deltadts || deltapts;\n });\n }\n\n // Get first/last DTS\n firstDTS = inputSamples[0].dts;\n lastDTS = inputSamples[inputSamples.length - 1].dts;\n\n // Sample duration (as expected by trun MP4 boxes), should be the delta between sample DTS\n // set this constant duration as being the avg delta between consecutive DTS.\n var inputDuration = lastDTS - firstDTS;\n var averageSampleDuration = inputDuration ? Math.round(inputDuration / (nbSamples - 1)) : mp4SampleDuration || track.inputTimeScale / 30;\n\n // if fragment are contiguous, detect hole/overlapping between fragments\n if (contiguous) {\n // check timestamp continuity across consecutive fragments (this is to remove inter-fragment gap/hole)\n var delta = firstDTS - nextAvcDts;\n var foundHole = delta > averageSampleDuration;\n var foundOverlap = delta < -1;\n if (foundHole || foundOverlap) {\n if (foundHole) {\n logger.warn(\"AVC: \" + toMsFromMpegTsClock(delta, true) + \" ms (\" + delta + \"dts) hole between fragments detected at \" + timeOffset.toFixed(3));\n } else {\n logger.warn(\"AVC: \" + toMsFromMpegTsClock(-delta, true) + \" ms (\" + delta + \"dts) overlapping between fragments detected at \" + timeOffset.toFixed(3));\n }\n if (!foundOverlap || nextAvcDts >= inputSamples[0].pts || chromeVersion) {\n firstDTS = nextAvcDts;\n var firstPTS = inputSamples[0].pts - delta;\n if (foundHole) {\n inputSamples[0].dts = firstDTS;\n inputSamples[0].pts = firstPTS;\n } else {\n for (var _i = 0; _i < inputSamples.length; _i++) {\n if (inputSamples[_i].dts > firstPTS) {\n break;\n }\n inputSamples[_i].dts -= delta;\n inputSamples[_i].pts -= delta;\n }\n }\n logger.log(\"Video: Initial PTS/DTS adjusted: \" + toMsFromMpegTsClock(firstPTS, true) + \"/\" + toMsFromMpegTsClock(firstDTS, true) + \", delta: \" + toMsFromMpegTsClock(delta, true) + \" ms\");\n }\n }\n }\n firstDTS = Math.max(0, firstDTS);\n var nbNalu = 0;\n var naluLen = 0;\n var dtsStep = firstDTS;\n for (var _i2 = 0; _i2 < nbSamples; _i2++) {\n // compute total/avc sample length and nb of NAL units\n var _sample = inputSamples[_i2];\n var units = _sample.units;\n var nbUnits = units.length;\n var sampleLen = 0;\n for (var j = 0; j < nbUnits; j++) {\n sampleLen += units[j].data.length;\n }\n naluLen += sampleLen;\n nbNalu += nbUnits;\n _sample.length = sampleLen;\n\n // ensure sample monotonic DTS\n if (_sample.dts < dtsStep) {\n _sample.dts = dtsStep;\n dtsStep += averageSampleDuration / 4 | 0 || 1;\n } else {\n dtsStep = _sample.dts;\n }\n minPTS = Math.min(_sample.pts, minPTS);\n maxPTS = Math.max(_sample.pts, maxPTS);\n }\n lastDTS = inputSamples[nbSamples - 1].dts;\n\n /* concatenate the video data and construct the mdat in place\n (need 8 more bytes to fill length and mpdat type) */\n var mdatSize = naluLen + 4 * nbNalu + 8;\n var mdat;\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.emit(Events.ERROR, Events.ERROR, {\n type: ErrorTypes.MUX_ERROR,\n details: ErrorDetails.REMUX_ALLOC_ERROR,\n fatal: false,\n error: err,\n bytes: mdatSize,\n reason: \"fail allocating video mdat \" + mdatSize\n });\n return;\n }\n var view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(MP4.types.mdat, 4);\n var stretchedLastFrame = false;\n var minDtsDelta = Number.POSITIVE_INFINITY;\n var minPtsDelta = Number.POSITIVE_INFINITY;\n var maxDtsDelta = Number.NEGATIVE_INFINITY;\n var maxPtsDelta = Number.NEGATIVE_INFINITY;\n for (var _i3 = 0; _i3 < nbSamples; _i3++) {\n var _VideoSample = inputSamples[_i3];\n var VideoSampleUnits = _VideoSample.units;\n var mp4SampleLength = 0;\n // convert NALU bitstream to MP4 format (prepend NALU with size field)\n for (var _j = 0, _nbUnits = VideoSampleUnits.length; _j < _nbUnits; _j++) {\n var unit = VideoSampleUnits[_j];\n var unitData = unit.data;\n var unitDataLen = unit.data.byteLength;\n view.setUint32(offset, unitDataLen);\n offset += 4;\n mdat.set(unitData, offset);\n offset += unitDataLen;\n mp4SampleLength += 4 + unitDataLen;\n }\n\n // expected sample duration is the Decoding Timestamp diff of consecutive samples\n var ptsDelta = void 0;\n if (_i3 < nbSamples - 1) {\n mp4SampleDuration = inputSamples[_i3 + 1].dts - _VideoSample.dts;\n ptsDelta = inputSamples[_i3 + 1].pts - _VideoSample.pts;\n } else {\n var config = this.config;\n var lastFrameDuration = _i3 > 0 ? _VideoSample.dts - inputSamples[_i3 - 1].dts : averageSampleDuration;\n ptsDelta = _i3 > 0 ? _VideoSample.pts - inputSamples[_i3 - 1].pts : averageSampleDuration;\n if (config.stretchShortVideoTrack && this.nextAudioPts !== null) {\n // In some cases, a segment's audio track duration may exceed the video track duration.\n // Since we've already remuxed audio, and we know how long the audio track is, we look to\n // see if the delta to the next segment is longer than maxBufferHole.\n // If so, playback would potentially get stuck, so we artificially inflate\n // the duration of the last frame to minimize any potential gap between segments.\n var gapTolerance = Math.floor(config.maxBufferHole * timeScale);\n var deltaToFrameEnd = (audioTrackLength ? minPTS + audioTrackLength * timeScale : this.nextAudioPts) - _VideoSample.pts;\n if (deltaToFrameEnd > gapTolerance) {\n // We subtract lastFrameDuration from deltaToFrameEnd to try to prevent any video\n // frame overlap. maxBufferHole should be >> lastFrameDuration anyway.\n mp4SampleDuration = deltaToFrameEnd - lastFrameDuration;\n if (mp4SampleDuration < 0) {\n mp4SampleDuration = lastFrameDuration;\n } else {\n stretchedLastFrame = true;\n }\n logger.log(\"[mp4-remuxer]: It is approximately \" + deltaToFrameEnd / 90 + \" ms to the next segment; using duration \" + mp4SampleDuration / 90 + \" ms for the last video frame.\");\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n }\n var compositionTimeOffset = Math.round(_VideoSample.pts - _VideoSample.dts);\n minDtsDelta = Math.min(minDtsDelta, mp4SampleDuration);\n maxDtsDelta = Math.max(maxDtsDelta, mp4SampleDuration);\n minPtsDelta = Math.min(minPtsDelta, ptsDelta);\n maxPtsDelta = Math.max(maxPtsDelta, ptsDelta);\n outputSamples.push(new Mp4Sample(_VideoSample.key, mp4SampleDuration, mp4SampleLength, compositionTimeOffset));\n }\n if (outputSamples.length) {\n if (chromeVersion) {\n if (chromeVersion < 70) {\n // Chrome workaround, mark first sample as being a Random Access Point (keyframe) to avoid sourcebuffer append issue\n // https://code.google.com/p/chromium/issues/detail?id=229412\n var flags = outputSamples[0].flags;\n flags.dependsOn = 2;\n flags.isNonSync = 0;\n }\n } else if (safariWebkitVersion) {\n // Fix for \"CNN special report, with CC\" in test-streams (Safari browser only)\n // Ignore DTS when frame durations are irregular. Safari MSE does not handle this leading to gaps.\n if (maxPtsDelta - minPtsDelta < maxDtsDelta - minDtsDelta && averageSampleDuration / maxDtsDelta < 0.025 && outputSamples[0].cts === 0) {\n logger.warn('Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.');\n var dts = firstDTS;\n for (var _i4 = 0, len = outputSamples.length; _i4 < len; _i4++) {\n var nextDts = dts + outputSamples[_i4].duration;\n var _pts = dts + outputSamples[_i4].cts;\n if (_i4 < len - 1) {\n var nextPts = nextDts + outputSamples[_i4 + 1].cts;\n outputSamples[_i4].duration = nextPts - _pts;\n } else {\n outputSamples[_i4].duration = _i4 ? outputSamples[_i4 - 1].duration : averageSampleDuration;\n }\n outputSamples[_i4].cts = 0;\n dts = nextDts;\n }\n }\n }\n }\n // next AVC sample DTS should be equal to last sample DTS + last sample duration (in PES timescale)\n mp4SampleDuration = stretchedLastFrame || !mp4SampleDuration ? averageSampleDuration : mp4SampleDuration;\n this.nextAvcDts = nextAvcDts = lastDTS + mp4SampleDuration;\n this.videoSampleDuration = mp4SampleDuration;\n this.isVideoContiguous = true;\n var moof = MP4.moof(track.sequenceNumber++, firstDTS, _extends({}, track, {\n samples: outputSamples\n }));\n var type = 'video';\n var data = {\n data1: moof,\n data2: mdat,\n startPTS: minPTS / timeScale,\n endPTS: (maxPTS + mp4SampleDuration) / timeScale,\n startDTS: firstDTS / timeScale,\n endDTS: nextAvcDts / timeScale,\n type: type,\n hasAudio: false,\n hasVideo: true,\n nb: outputSamples.length,\n dropped: track.dropped\n };\n track.samples = [];\n track.dropped = 0;\n return data;\n };\n _proto.getSamplesPerFrame = function getSamplesPerFrame(track) {\n switch (track.segmentCodec) {\n case 'mp3':\n return MPEG_AUDIO_SAMPLE_PER_FRAME;\n case 'ac3':\n return AC3_SAMPLES_PER_FRAME;\n default:\n return AAC_SAMPLES_PER_FRAME;\n }\n };\n _proto.remuxAudio = function remuxAudio(track, timeOffset, contiguous, accurateTimeOffset, videoTimeOffset) {\n var inputTimeScale = track.inputTimeScale;\n var mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n var scaleFactor = inputTimeScale / mp4timeScale;\n var mp4SampleDuration = this.getSamplesPerFrame(track);\n var inputSampleDuration = mp4SampleDuration * scaleFactor;\n var initPTS = this._initPTS;\n var rawMPEG = track.segmentCodec === 'mp3' && this.typeSupported.mpeg;\n var outputSamples = [];\n var alignedWithVideo = videoTimeOffset !== undefined;\n var inputSamples = track.samples;\n var offset = rawMPEG ? 0 : 8;\n var nextAudioPts = this.nextAudioPts || -1;\n\n // window.audioSamples ? window.audioSamples.push(inputSamples.map(s => s.pts)) : (window.audioSamples = [inputSamples.map(s => s.pts)]);\n\n // for audio samples, also consider consecutive fragments as being contiguous (even if a level switch occurs),\n // for sake of clarity:\n // consecutive fragments are frags with\n // - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR\n // - less than 20 audio frames distance\n // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1)\n // this helps ensuring audio continuity\n // and this also avoids audio glitches/cut when switching quality, or reporting wrong duration on first audio frame\n var timeOffsetMpegTS = timeOffset * inputTimeScale;\n var initTime = initPTS.baseTime * inputTimeScale / initPTS.timescale;\n this.isAudioContiguous = contiguous = contiguous || inputSamples.length && nextAudioPts > 0 && (accurateTimeOffset && Math.abs(timeOffsetMpegTS - nextAudioPts) < 9000 || Math.abs(normalizePts(inputSamples[0].pts - initTime, timeOffsetMpegTS) - nextAudioPts) < 20 * inputSampleDuration);\n\n // compute normalized PTS\n inputSamples.forEach(function (sample) {\n sample.pts = normalizePts(sample.pts - initTime, timeOffsetMpegTS);\n });\n if (!contiguous || nextAudioPts < 0) {\n // filter out sample with negative PTS that are not playable anyway\n // if we don't remove these negative samples, they will shift all audio samples forward.\n // leading to audio overlap between current / next fragment\n inputSamples = inputSamples.filter(function (sample) {\n return sample.pts >= 0;\n });\n\n // in case all samples have negative PTS, and have been filtered out, return now\n if (!inputSamples.length) {\n return;\n }\n if (videoTimeOffset === 0) {\n // Set the start to 0 to match video so that start gaps larger than inputSampleDuration are filled with silence\n nextAudioPts = 0;\n } else if (accurateTimeOffset && !alignedWithVideo) {\n // When not seeking, not live, and LevelDetails.PTSKnown, use fragment start as predicted next audio PTS\n nextAudioPts = Math.max(0, timeOffsetMpegTS);\n } else {\n // if frags are not contiguous and if we cant trust time offset, let's use first sample PTS as next audio PTS\n nextAudioPts = inputSamples[0].pts;\n }\n }\n\n // If the audio track is missing samples, the frames seem to get \"left-shifted\" within the\n // resulting mp4 segment, causing sync issues and leaving gaps at the end of the audio segment.\n // In an effort to prevent this from happening, we inject frames here where there are gaps.\n // When possible, we inject a silent frame; when that's not possible, we duplicate the last\n // frame.\n\n if (track.segmentCodec === 'aac') {\n var maxAudioFramesDrift = this.config.maxAudioFramesDrift;\n for (var i = 0, nextPts = nextAudioPts; i < inputSamples.length; i++) {\n // First, let's see how far off this frame is from where we expect it to be\n var sample = inputSamples[i];\n var pts = sample.pts;\n var delta = pts - nextPts;\n var duration = Math.abs(1000 * delta / inputTimeScale);\n\n // When remuxing with video, if we're overlapping by more than a duration, drop this sample to stay in sync\n if (delta <= -maxAudioFramesDrift * inputSampleDuration && alignedWithVideo) {\n if (i === 0) {\n logger.warn(\"Audio frame @ \" + (pts / inputTimeScale).toFixed(3) + \"s overlaps nextAudioPts by \" + Math.round(1000 * delta / inputTimeScale) + \" ms.\");\n this.nextAudioPts = nextAudioPts = nextPts = pts;\n }\n } // eslint-disable-line brace-style\n\n // Insert missing frames if:\n // 1: We're more than maxAudioFramesDrift frame away\n // 2: Not more than MAX_SILENT_FRAME_DURATION away\n // 3: currentTime (aka nextPtsNorm) is not 0\n // 4: remuxing with video (videoTimeOffset !== undefined)\n else if (delta >= maxAudioFramesDrift * inputSampleDuration && duration < MAX_SILENT_FRAME_DURATION && alignedWithVideo) {\n var missing = Math.round(delta / inputSampleDuration);\n // Adjust nextPts so that silent samples are aligned with media pts. This will prevent media samples from\n // later being shifted if nextPts is based on timeOffset and delta is not a multiple of inputSampleDuration.\n nextPts = pts - missing * inputSampleDuration;\n if (nextPts < 0) {\n missing--;\n nextPts += inputSampleDuration;\n }\n if (i === 0) {\n this.nextAudioPts = nextAudioPts = nextPts;\n }\n logger.warn(\"[mp4-remuxer]: Injecting \" + missing + \" audio frame @ \" + (nextPts / inputTimeScale).toFixed(3) + \"s due to \" + Math.round(1000 * delta / inputTimeScale) + \" ms gap.\");\n for (var j = 0; j < missing; j++) {\n var newStamp = Math.max(nextPts, 0);\n var fillFrame = AAC.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n if (!fillFrame) {\n logger.log('[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.');\n fillFrame = sample.unit.subarray();\n }\n inputSamples.splice(i, 0, {\n unit: fillFrame,\n pts: newStamp\n });\n nextPts += inputSampleDuration;\n i++;\n }\n }\n sample.pts = nextPts;\n nextPts += inputSampleDuration;\n }\n }\n var firstPTS = null;\n var lastPTS = null;\n var mdat;\n var mdatSize = 0;\n var sampleLength = inputSamples.length;\n while (sampleLength--) {\n mdatSize += inputSamples[sampleLength].unit.byteLength;\n }\n for (var _j2 = 0, _nbSamples = inputSamples.length; _j2 < _nbSamples; _j2++) {\n var audioSample = inputSamples[_j2];\n var unit = audioSample.unit;\n var _pts2 = audioSample.pts;\n if (lastPTS !== null) {\n // If we have more than one sample, set the duration of the sample to the \"real\" duration; the PTS diff with\n // the previous sample\n var prevSample = outputSamples[_j2 - 1];\n prevSample.duration = Math.round((_pts2 - lastPTS) / scaleFactor);\n } else {\n if (contiguous && track.segmentCodec === 'aac') {\n // set PTS/DTS to expected PTS/DTS\n _pts2 = nextAudioPts;\n }\n // remember first PTS of our audioSamples\n firstPTS = _pts2;\n if (mdatSize > 0) {\n /* concatenate the audio data and construct the mdat in place\n (need 8 more bytes to fill length and mdat type) */\n mdatSize += offset;\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.emit(Events.ERROR, Events.ERROR, {\n type: ErrorTypes.MUX_ERROR,\n details: ErrorDetails.REMUX_ALLOC_ERROR,\n fatal: false,\n error: err,\n bytes: mdatSize,\n reason: \"fail allocating audio mdat \" + mdatSize\n });\n return;\n }\n if (!rawMPEG) {\n var view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(MP4.types.mdat, 4);\n }\n } else {\n // no audio samples\n return;\n }\n }\n mdat.set(unit, offset);\n var unitLen = unit.byteLength;\n offset += unitLen;\n // Default the sample's duration to the computed mp4SampleDuration, which will either be 1024 for AAC or 1152 for MPEG\n // In the case that we have 1 sample, this will be the duration. If we have more than one sample, the duration\n // becomes the PTS diff with the previous sample\n outputSamples.push(new Mp4Sample(true, mp4SampleDuration, unitLen, 0));\n lastPTS = _pts2;\n }\n\n // We could end up with no audio samples if all input samples were overlapping with the previously remuxed ones\n var nbSamples = outputSamples.length;\n if (!nbSamples) {\n return;\n }\n\n // The next audio sample PTS should be equal to last sample PTS + duration\n var lastSample = outputSamples[outputSamples.length - 1];\n this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSample.duration;\n\n // Set the track samples from inputSamples to outputSamples before remuxing\n var moof = rawMPEG ? new Uint8Array(0) : MP4.moof(track.sequenceNumber++, firstPTS / scaleFactor, _extends({}, track, {\n samples: outputSamples\n }));\n\n // Clear the track samples. This also clears the samples array in the demuxer, since the reference is shared\n track.samples = [];\n var start = firstPTS / inputTimeScale;\n var end = nextAudioPts / inputTimeScale;\n var type = 'audio';\n var audioData = {\n data1: moof,\n data2: mdat,\n startPTS: start,\n endPTS: end,\n startDTS: start,\n endDTS: end,\n type: type,\n hasAudio: true,\n hasVideo: false,\n nb: nbSamples\n };\n this.isAudioContiguous = true;\n return audioData;\n };\n _proto.remuxEmptyAudio = function remuxEmptyAudio(track, timeOffset, contiguous, videoData) {\n var inputTimeScale = track.inputTimeScale;\n var mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n var scaleFactor = inputTimeScale / mp4timeScale;\n var nextAudioPts = this.nextAudioPts;\n // sync with video's timestamp\n var initDTS = this._initDTS;\n var init90kHz = initDTS.baseTime * 90000 / initDTS.timescale;\n var startDTS = (nextAudioPts !== null ? nextAudioPts : videoData.startDTS * inputTimeScale) + init90kHz;\n var endDTS = videoData.endDTS * inputTimeScale + init90kHz;\n // one sample's duration value\n var frameDuration = scaleFactor * AAC_SAMPLES_PER_FRAME;\n // samples count of this segment's duration\n var nbSamples = Math.ceil((endDTS - startDTS) / frameDuration);\n // silent frame\n var silentFrame = AAC.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n logger.warn('[mp4-remuxer]: remux empty Audio');\n // Can't remux if we can't generate a silent frame...\n if (!silentFrame) {\n logger.trace('[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec');\n return;\n }\n var samples = [];\n for (var i = 0; i < nbSamples; i++) {\n var stamp = startDTS + i * frameDuration;\n samples.push({\n unit: silentFrame,\n pts: stamp,\n dts: stamp\n });\n }\n track.samples = samples;\n return this.remuxAudio(track, timeOffset, contiguous, false);\n };\n return MP4Remuxer;\n }();\n function normalizePts(value, reference) {\n var offset;\n if (reference === null) {\n return value;\n }\n if (reference < value) {\n // - 2^33\n offset = -8589934592;\n } else {\n // + 2^33\n offset = 8589934592;\n }\n /* PTS is 33bit (from 0 to 2^33 -1)\n if diff between value and reference is bigger than half of the amplitude (2^32) then it means that\n PTS looping occured. fill the gap */\n while (Math.abs(value - reference) > 4294967296) {\n value += offset;\n }\n return value;\n }\n function findKeyframeIndex(samples) {\n for (var i = 0; i < samples.length; i++) {\n if (samples[i].key) {\n return i;\n }\n }\n return -1;\n }\n function flushTextTrackMetadataCueSamples(track, timeOffset, initPTS, initDTS) {\n var length = track.samples.length;\n if (!length) {\n return;\n }\n var inputTimeScale = track.inputTimeScale;\n for (var index = 0; index < length; index++) {\n var sample = track.samples[index];\n // setting id3 pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n sample.pts = normalizePts(sample.pts - initPTS.baseTime * inputTimeScale / initPTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n sample.dts = normalizePts(sample.dts - initDTS.baseTime * inputTimeScale / initDTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n }\n var samples = track.samples;\n track.samples = [];\n return {\n samples: samples\n };\n }\n function flushTextTrackUserdataCueSamples(track, timeOffset, initPTS) {\n var length = track.samples.length;\n if (!length) {\n return;\n }\n var inputTimeScale = track.inputTimeScale;\n for (var index = 0; index < length; index++) {\n var sample = track.samples[index];\n // setting text pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n sample.pts = normalizePts(sample.pts - initPTS.baseTime * inputTimeScale / initPTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n }\n track.samples.sort(function (a, b) {\n return a.pts - b.pts;\n });\n var samples = track.samples;\n track.samples = [];\n return {\n samples: samples\n };\n }\n var Mp4Sample = function Mp4Sample(isKeyframe, duration, size, cts) {\n this.size = void 0;\n this.duration = void 0;\n this.cts = void 0;\n this.flags = void 0;\n this.duration = duration;\n this.size = size;\n this.cts = cts;\n this.flags = {\n isLeading: 0,\n isDependedOn: 0,\n hasRedundancy: 0,\n degradPrio: 0,\n dependsOn: isKeyframe ? 2 : 1,\n isNonSync: isKeyframe ? 0 : 1\n };\n };\n\n var PassThroughRemuxer = /*#__PURE__*/function () {\n function PassThroughRemuxer() {\n this.emitInitSegment = false;\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this.initData = void 0;\n this.initPTS = null;\n this.initTracks = void 0;\n this.lastEndTime = null;\n }\n var _proto = PassThroughRemuxer.prototype;\n _proto.destroy = function destroy() {};\n _proto.resetTimeStamp = function resetTimeStamp(defaultInitPTS) {\n this.initPTS = defaultInitPTS;\n this.lastEndTime = null;\n };\n _proto.resetNextTimestamp = function resetNextTimestamp() {\n this.lastEndTime = null;\n };\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, decryptdata) {\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.generateInitSegment(patchEncyptionData(initSegment, decryptdata));\n this.emitInitSegment = true;\n };\n _proto.generateInitSegment = function generateInitSegment(initSegment) {\n var audioCodec = this.audioCodec,\n videoCodec = this.videoCodec;\n if (!(initSegment != null && initSegment.byteLength)) {\n this.initTracks = undefined;\n this.initData = undefined;\n return;\n }\n var initData = this.initData = parseInitSegment(initSegment);\n\n // Get codec from initSegment or fallback to default\n if (initData.audio) {\n audioCodec = getParsedTrackCodec(initData.audio, ElementaryStreamTypes.AUDIO);\n }\n if (initData.video) {\n videoCodec = getParsedTrackCodec(initData.video, ElementaryStreamTypes.VIDEO);\n }\n var tracks = {};\n if (initData.audio && initData.video) {\n tracks.audiovideo = {\n container: 'video/mp4',\n codec: audioCodec + ',' + videoCodec,\n initSegment: initSegment,\n id: 'main'\n };\n } else if (initData.audio) {\n tracks.audio = {\n container: 'audio/mp4',\n codec: audioCodec,\n initSegment: initSegment,\n id: 'audio'\n };\n } else if (initData.video) {\n tracks.video = {\n container: 'video/mp4',\n codec: videoCodec,\n initSegment: initSegment,\n id: 'main'\n };\n } else {\n logger.warn('[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.');\n }\n this.initTracks = tracks;\n };\n _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset) {\n var _initData, _initData2;\n var initPTS = this.initPTS,\n lastEndTime = this.lastEndTime;\n var result = {\n audio: undefined,\n video: undefined,\n text: textTrack,\n id3: id3Track,\n initSegment: undefined\n };\n\n // If we haven't yet set a lastEndDTS, or it was reset, set it to the provided timeOffset. We want to use the\n // lastEndDTS over timeOffset whenever possible; during progressive playback, the media source will not update\n // the media duration (which is what timeOffset is provided as) before we need to process the next chunk.\n if (!isFiniteNumber(lastEndTime)) {\n lastEndTime = this.lastEndTime = timeOffset || 0;\n }\n\n // The binary segment data is added to the videoTrack in the mp4demuxer. We don't check to see if the data is only\n // audio or video (or both); adding it to video was an arbitrary choice.\n var data = videoTrack.samples;\n if (!(data != null && data.length)) {\n return result;\n }\n var initSegment = {\n initPTS: undefined,\n timescale: 1\n };\n var initData = this.initData;\n if (!((_initData = initData) != null && _initData.length)) {\n this.generateInitSegment(data);\n initData = this.initData;\n }\n if (!((_initData2 = initData) != null && _initData2.length)) {\n // We can't remux if the initSegment could not be generated\n logger.warn('[passthrough-remuxer.ts]: Failed to generate initSegment.');\n return result;\n }\n if (this.emitInitSegment) {\n initSegment.tracks = this.initTracks;\n this.emitInitSegment = false;\n }\n var duration = getDuration(data, initData);\n var startDTS = getStartDTS(initData, data);\n var decodeTime = startDTS === null ? timeOffset : startDTS;\n if (isInvalidInitPts(initPTS, decodeTime, timeOffset, duration) || initSegment.timescale !== initPTS.timescale && accurateTimeOffset) {\n initSegment.initPTS = decodeTime - timeOffset;\n if (initPTS && initPTS.timescale === 1) {\n logger.warn(\"Adjusting initPTS by \" + (initSegment.initPTS - initPTS.baseTime));\n }\n this.initPTS = initPTS = {\n baseTime: initSegment.initPTS,\n timescale: 1\n };\n }\n var startTime = audioTrack ? decodeTime - initPTS.baseTime / initPTS.timescale : lastEndTime;\n var endTime = startTime + duration;\n offsetStartDTS(initData, data, initPTS.baseTime / initPTS.timescale);\n if (duration > 0) {\n this.lastEndTime = endTime;\n } else {\n logger.warn('Duration parsed from mp4 should be greater than zero');\n this.resetNextTimestamp();\n }\n var hasAudio = !!initData.audio;\n var hasVideo = !!initData.video;\n var type = '';\n if (hasAudio) {\n type += 'audio';\n }\n if (hasVideo) {\n type += 'video';\n }\n var track = {\n data1: data,\n startPTS: startTime,\n startDTS: startTime,\n endPTS: endTime,\n endDTS: endTime,\n type: type,\n hasAudio: hasAudio,\n hasVideo: hasVideo,\n nb: 1,\n dropped: 0\n };\n result.audio = track.type === 'audio' ? track : undefined;\n result.video = track.type !== 'audio' ? track : undefined;\n result.initSegment = initSegment;\n result.id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, initPTS, initPTS);\n if (textTrack.samples.length) {\n result.text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, initPTS);\n }\n return result;\n };\n return PassThroughRemuxer;\n }();\n function isInvalidInitPts(initPTS, startDTS, timeOffset, duration) {\n if (initPTS === null) {\n return true;\n }\n // InitPTS is invalid when distance from program would be more than segment duration or a minimum of one second\n var minDuration = Math.max(duration, 1);\n var startTime = startDTS - initPTS.baseTime / initPTS.timescale;\n return Math.abs(startTime - timeOffset) > minDuration;\n }\n function getParsedTrackCodec(track, type) {\n var parsedCodec = track == null ? void 0 : track.codec;\n if (parsedCodec && parsedCodec.length > 4) {\n return parsedCodec;\n }\n if (type === ElementaryStreamTypes.AUDIO) {\n if (parsedCodec === 'ec-3' || parsedCodec === 'ac-3' || parsedCodec === 'alac') {\n return parsedCodec;\n }\n if (parsedCodec === 'fLaC' || parsedCodec === 'Opus') {\n // Opting not to get `preferManagedMediaSource` from player config for isSupported() check for simplicity\n var preferManagedMediaSource = false;\n return getCodecCompatibleName(parsedCodec, preferManagedMediaSource);\n }\n var result = 'mp4a.40.5';\n logger.info(\"Parsed audio codec \\\"\" + parsedCodec + \"\\\" or audio object type not handled. Using \\\"\" + result + \"\\\"\");\n return result;\n }\n // Provide defaults based on codec type\n // This allows for some playback of some fmp4 playlists without CODECS defined in manifest\n logger.warn(\"Unhandled video codec \\\"\" + parsedCodec + \"\\\"\");\n if (parsedCodec === 'hvc1' || parsedCodec === 'hev1') {\n return 'hvc1.1.6.L120.90';\n }\n if (parsedCodec === 'av01') {\n return 'av01.0.04M.08';\n }\n return 'avc1.42e01e';\n }\n\n var now;\n // performance.now() not available on WebWorker, at least on Safari Desktop\n try {\n now = self.performance.now.bind(self.performance);\n } catch (err) {\n logger.debug('Unable to use Performance API on this environment');\n now = optionalSelf == null ? void 0 : optionalSelf.Date.now;\n }\n var muxConfig = [{\n demux: MP4Demuxer,\n remux: PassThroughRemuxer\n }, {\n demux: TSDemuxer,\n remux: MP4Remuxer\n }, {\n demux: AACDemuxer,\n remux: MP4Remuxer\n }, {\n demux: MP3Demuxer,\n remux: MP4Remuxer\n }];\n {\n muxConfig.splice(2, 0, {\n demux: AC3Demuxer,\n remux: MP4Remuxer\n });\n }\n var Transmuxer = /*#__PURE__*/function () {\n function Transmuxer(observer, typeSupported, config, vendor, id) {\n this.async = false;\n this.observer = void 0;\n this.typeSupported = void 0;\n this.config = void 0;\n this.vendor = void 0;\n this.id = void 0;\n this.demuxer = void 0;\n this.remuxer = void 0;\n this.decrypter = void 0;\n this.probe = void 0;\n this.decryptionPromise = null;\n this.transmuxConfig = void 0;\n this.currentTransmuxState = void 0;\n this.observer = observer;\n this.typeSupported = typeSupported;\n this.config = config;\n this.vendor = vendor;\n this.id = id;\n }\n var _proto = Transmuxer.prototype;\n _proto.configure = function configure(transmuxConfig) {\n this.transmuxConfig = transmuxConfig;\n if (this.decrypter) {\n this.decrypter.reset();\n }\n };\n _proto.push = function push(data, decryptdata, chunkMeta, state) {\n var _this = this;\n var stats = chunkMeta.transmuxing;\n stats.executeStart = now();\n var uintData = new Uint8Array(data);\n var currentTransmuxState = this.currentTransmuxState,\n transmuxConfig = this.transmuxConfig;\n if (state) {\n this.currentTransmuxState = state;\n }\n var _ref = state || currentTransmuxState,\n contiguous = _ref.contiguous,\n discontinuity = _ref.discontinuity,\n trackSwitch = _ref.trackSwitch,\n accurateTimeOffset = _ref.accurateTimeOffset,\n timeOffset = _ref.timeOffset,\n initSegmentChange = _ref.initSegmentChange;\n var audioCodec = transmuxConfig.audioCodec,\n videoCodec = transmuxConfig.videoCodec,\n defaultInitPts = transmuxConfig.defaultInitPts,\n duration = transmuxConfig.duration,\n initSegmentData = transmuxConfig.initSegmentData;\n var keyData = getEncryptionType(uintData, decryptdata);\n if (keyData && keyData.method === 'AES-128') {\n var decrypter = this.getDecrypter();\n // Software decryption is synchronous; webCrypto is not\n if (decrypter.isSync()) {\n // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n // data is handled in the flush() call\n var decryptedData = decrypter.softwareDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer);\n // For Low-Latency HLS Parts, decrypt in place, since part parsing is expected on push progress\n var loadingParts = chunkMeta.part > -1;\n if (loadingParts) {\n decryptedData = decrypter.flush();\n }\n if (!decryptedData) {\n stats.executeEnd = now();\n return emptyResult(chunkMeta);\n }\n uintData = new Uint8Array(decryptedData);\n } else {\n this.decryptionPromise = decrypter.webCryptoDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer).then(function (decryptedData) {\n // Calling push here is important; if flush() is called while this is still resolving, this ensures that\n // the decrypted data has been transmuxed\n var result = _this.push(decryptedData, null, chunkMeta);\n _this.decryptionPromise = null;\n return result;\n });\n return this.decryptionPromise;\n }\n }\n var resetMuxers = this.needsProbing(discontinuity, trackSwitch);\n if (resetMuxers) {\n var error = this.configureTransmuxer(uintData);\n if (error) {\n logger.warn(\"[transmuxer] \" + error.message);\n this.observer.emit(Events.ERROR, Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n fatal: false,\n error: error,\n reason: error.message\n });\n stats.executeEnd = now();\n return emptyResult(chunkMeta);\n }\n }\n if (discontinuity || trackSwitch || initSegmentChange || resetMuxers) {\n this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration, decryptdata);\n }\n if (discontinuity || initSegmentChange || resetMuxers) {\n this.resetInitialTimestamp(defaultInitPts);\n }\n if (!contiguous) {\n this.resetContiguity();\n }\n var result = this.transmux(uintData, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n var currentState = this.currentTransmuxState;\n currentState.contiguous = true;\n currentState.discontinuity = false;\n currentState.trackSwitch = false;\n stats.executeEnd = now();\n return result;\n }\n\n // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type)\n ;\n _proto.flush = function flush(chunkMeta) {\n var _this2 = this;\n var stats = chunkMeta.transmuxing;\n stats.executeStart = now();\n var decrypter = this.decrypter,\n currentTransmuxState = this.currentTransmuxState,\n decryptionPromise = this.decryptionPromise;\n if (decryptionPromise) {\n // Upon resolution, the decryption promise calls push() and returns its TransmuxerResult up the stack. Therefore\n // only flushing is required for async decryption\n return decryptionPromise.then(function () {\n return _this2.flush(chunkMeta);\n });\n }\n var transmuxResults = [];\n var timeOffset = currentTransmuxState.timeOffset;\n if (decrypter) {\n // The decrypter may have data cached, which needs to be demuxed. In this case we'll have two TransmuxResults\n // This happens in the case that we receive only 1 push call for a segment (either for non-progressive downloads,\n // or for progressive downloads with small segments)\n var decryptedData = decrypter.flush();\n if (decryptedData) {\n // Push always returns a TransmuxerResult if decryptdata is null\n transmuxResults.push(this.push(decryptedData, null, chunkMeta));\n }\n }\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n if (!demuxer || !remuxer) {\n // If probing failed, then Hls.js has been given content its not able to handle\n stats.executeEnd = now();\n return [emptyResult(chunkMeta)];\n }\n var demuxResultOrPromise = demuxer.flush(timeOffset);\n if (isPromise(demuxResultOrPromise)) {\n // Decrypt final SAMPLE-AES samples\n return demuxResultOrPromise.then(function (demuxResult) {\n _this2.flushRemux(transmuxResults, demuxResult, chunkMeta);\n return transmuxResults;\n });\n }\n this.flushRemux(transmuxResults, demuxResultOrPromise, chunkMeta);\n return transmuxResults;\n };\n _proto.flushRemux = function flushRemux(transmuxResults, demuxResult, chunkMeta) {\n var audioTrack = demuxResult.audioTrack,\n videoTrack = demuxResult.videoTrack,\n id3Track = demuxResult.id3Track,\n textTrack = demuxResult.textTrack;\n var _this$currentTransmux = this.currentTransmuxState,\n accurateTimeOffset = _this$currentTransmux.accurateTimeOffset,\n timeOffset = _this$currentTransmux.timeOffset;\n logger.log(\"[transmuxer.ts]: Flushed fragment \" + chunkMeta.sn + (chunkMeta.part > -1 ? ' p: ' + chunkMeta.part : '') + \" of level \" + chunkMeta.level);\n var remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, true, this.id);\n transmuxResults.push({\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n });\n chunkMeta.transmuxing.executeEnd = now();\n };\n _proto.resetInitialTimestamp = function resetInitialTimestamp(defaultInitPts) {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n if (!demuxer || !remuxer) {\n return;\n }\n demuxer.resetTimeStamp(defaultInitPts);\n remuxer.resetTimeStamp(defaultInitPts);\n };\n _proto.resetContiguity = function resetContiguity() {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n if (!demuxer || !remuxer) {\n return;\n }\n demuxer.resetContiguity();\n remuxer.resetNextTimestamp();\n };\n _proto.resetInitSegment = function resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration, decryptdata) {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n if (!demuxer || !remuxer) {\n return;\n }\n demuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration);\n remuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, decryptdata);\n };\n _proto.destroy = function destroy() {\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = undefined;\n }\n if (this.remuxer) {\n this.remuxer.destroy();\n this.remuxer = undefined;\n }\n };\n _proto.transmux = function transmux(data, keyData, timeOffset, accurateTimeOffset, chunkMeta) {\n var result;\n if (keyData && keyData.method === 'SAMPLE-AES') {\n result = this.transmuxSampleAes(data, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n } else {\n result = this.transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta);\n }\n return result;\n };\n _proto.transmuxUnencrypted = function transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta) {\n var _demux = this.demuxer.demux(data, timeOffset, false, !this.config.progressive),\n audioTrack = _demux.audioTrack,\n videoTrack = _demux.videoTrack,\n id3Track = _demux.id3Track,\n textTrack = _demux.textTrack;\n var remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, false, this.id);\n return {\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n };\n };\n _proto.transmuxSampleAes = function transmuxSampleAes(data, decryptData, timeOffset, accurateTimeOffset, chunkMeta) {\n var _this3 = this;\n return this.demuxer.demuxSampleAes(data, decryptData, timeOffset).then(function (demuxResult) {\n var remuxResult = _this3.remuxer.remux(demuxResult.audioTrack, demuxResult.videoTrack, demuxResult.id3Track, demuxResult.textTrack, timeOffset, accurateTimeOffset, false, _this3.id);\n return {\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n };\n });\n };\n _proto.configureTransmuxer = function configureTransmuxer(data) {\n var config = this.config,\n observer = this.observer,\n typeSupported = this.typeSupported,\n vendor = this.vendor;\n // probe for content type\n var mux;\n for (var i = 0, len = muxConfig.length; i < len; i++) {\n var _muxConfig$i$demux;\n if ((_muxConfig$i$demux = muxConfig[i].demux) != null && _muxConfig$i$demux.probe(data)) {\n mux = muxConfig[i];\n break;\n }\n }\n if (!mux) {\n return new Error('Failed to find demuxer by probing fragment data');\n }\n // so let's check that current remuxer and demuxer are still valid\n var demuxer = this.demuxer;\n var remuxer = this.remuxer;\n var Remuxer = mux.remux;\n var Demuxer = mux.demux;\n if (!remuxer || !(remuxer instanceof Remuxer)) {\n this.remuxer = new Remuxer(observer, config, typeSupported, vendor);\n }\n if (!demuxer || !(demuxer instanceof Demuxer)) {\n this.demuxer = new Demuxer(observer, config, typeSupported);\n this.probe = Demuxer.probe;\n }\n };\n _proto.needsProbing = function needsProbing(discontinuity, trackSwitch) {\n // in case of continuity change, or track switch\n // we might switch from content type (AAC container to TS container, or TS to fmp4 for example)\n return !this.demuxer || !this.remuxer || discontinuity || trackSwitch;\n };\n _proto.getDecrypter = function getDecrypter() {\n var decrypter = this.decrypter;\n if (!decrypter) {\n decrypter = this.decrypter = new Decrypter(this.config);\n }\n return decrypter;\n };\n return Transmuxer;\n }();\n function getEncryptionType(data, decryptData) {\n var encryptionType = null;\n if (data.byteLength > 0 && (decryptData == null ? void 0 : decryptData.key) != null && decryptData.iv !== null && decryptData.method != null) {\n encryptionType = decryptData;\n }\n return encryptionType;\n }\n var emptyResult = function emptyResult(chunkMeta) {\n return {\n remuxResult: {},\n chunkMeta: chunkMeta\n };\n };\n function isPromise(p) {\n return 'then' in p && p.then instanceof Function;\n }\n var TransmuxConfig = function TransmuxConfig(audioCodec, videoCodec, initSegmentData, duration, defaultInitPts) {\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this.initSegmentData = void 0;\n this.duration = void 0;\n this.defaultInitPts = void 0;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.initSegmentData = initSegmentData;\n this.duration = duration;\n this.defaultInitPts = defaultInitPts || null;\n };\n var TransmuxState = function TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange) {\n this.discontinuity = void 0;\n this.contiguous = void 0;\n this.accurateTimeOffset = void 0;\n this.trackSwitch = void 0;\n this.timeOffset = void 0;\n this.initSegmentChange = void 0;\n this.discontinuity = discontinuity;\n this.contiguous = contiguous;\n this.accurateTimeOffset = accurateTimeOffset;\n this.trackSwitch = trackSwitch;\n this.timeOffset = timeOffset;\n this.initSegmentChange = initSegmentChange;\n };\n\n var eventemitter3 = {exports: {}};\n\n (function (module) {\n\n \tvar has = Object.prototype.hasOwnProperty\n \t , prefix = '~';\n\n \t/**\n \t * Constructor to create a storage for our `EE` objects.\n \t * An `Events` instance is a plain object whose properties are event names.\n \t *\n \t * @constructor\n \t * @private\n \t */\n \tfunction Events() {}\n\n \t//\n \t// We try to not inherit from `Object.prototype`. In some engines creating an\n \t// instance in this way is faster than calling `Object.create(null)` directly.\n \t// If `Object.create(null)` is not supported we prefix the event names with a\n \t// character to make sure that the built-in object properties are not\n \t// overridden or used as an attack vector.\n \t//\n \tif (Object.create) {\n \t Events.prototype = Object.create(null);\n\n \t //\n \t // This hack is needed because the `__proto__` property is still inherited in\n \t // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n \t //\n \t if (!new Events().__proto__) prefix = false;\n \t}\n\n \t/**\n \t * Representation of a single event listener.\n \t *\n \t * @param {Function} fn The listener function.\n \t * @param {*} context The context to invoke the listener with.\n \t * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n \t * @constructor\n \t * @private\n \t */\n \tfunction EE(fn, context, once) {\n \t this.fn = fn;\n \t this.context = context;\n \t this.once = once || false;\n \t}\n\n \t/**\n \t * Add a listener for a given event.\n \t *\n \t * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n \t * @param {(String|Symbol)} event The event name.\n \t * @param {Function} fn The listener function.\n \t * @param {*} context The context to invoke the listener with.\n \t * @param {Boolean} once Specify if the listener is a one-time listener.\n \t * @returns {EventEmitter}\n \t * @private\n \t */\n \tfunction addListener(emitter, event, fn, context, once) {\n \t if (typeof fn !== 'function') {\n \t throw new TypeError('The listener must be a function');\n \t }\n\n \t var listener = new EE(fn, context || emitter, once)\n \t , evt = prefix ? prefix + event : event;\n\n \t if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n \t else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n \t else emitter._events[evt] = [emitter._events[evt], listener];\n\n \t return emitter;\n \t}\n\n \t/**\n \t * Clear event by name.\n \t *\n \t * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n \t * @param {(String|Symbol)} evt The Event name.\n \t * @private\n \t */\n \tfunction clearEvent(emitter, evt) {\n \t if (--emitter._eventsCount === 0) emitter._events = new Events();\n \t else delete emitter._events[evt];\n \t}\n\n \t/**\n \t * Minimal `EventEmitter` interface that is molded against the Node.js\n \t * `EventEmitter` interface.\n \t *\n \t * @constructor\n \t * @public\n \t */\n \tfunction EventEmitter() {\n \t this._events = new Events();\n \t this._eventsCount = 0;\n \t}\n\n \t/**\n \t * Return an array listing the events for which the emitter has registered\n \t * listeners.\n \t *\n \t * @returns {Array}\n \t * @public\n \t */\n \tEventEmitter.prototype.eventNames = function eventNames() {\n \t var names = []\n \t , events\n \t , name;\n\n \t if (this._eventsCount === 0) return names;\n\n \t for (name in (events = this._events)) {\n \t if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n \t }\n\n \t if (Object.getOwnPropertySymbols) {\n \t return names.concat(Object.getOwnPropertySymbols(events));\n \t }\n\n \t return names;\n \t};\n\n \t/**\n \t * Return the listeners registered for a given event.\n \t *\n \t * @param {(String|Symbol)} event The event name.\n \t * @returns {Array} The registered listeners.\n \t * @public\n \t */\n \tEventEmitter.prototype.listeners = function listeners(event) {\n \t var evt = prefix ? prefix + event : event\n \t , handlers = this._events[evt];\n\n \t if (!handlers) return [];\n \t if (handlers.fn) return [handlers.fn];\n\n \t for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n \t ee[i] = handlers[i].fn;\n \t }\n\n \t return ee;\n \t};\n\n \t/**\n \t * Return the number of listeners listening to a given event.\n \t *\n \t * @param {(String|Symbol)} event The event name.\n \t * @returns {Number} The number of listeners.\n \t * @public\n \t */\n \tEventEmitter.prototype.listenerCount = function listenerCount(event) {\n \t var evt = prefix ? prefix + event : event\n \t , listeners = this._events[evt];\n\n \t if (!listeners) return 0;\n \t if (listeners.fn) return 1;\n \t return listeners.length;\n \t};\n\n \t/**\n \t * Calls each of the listeners registered for a given event.\n \t *\n \t * @param {(String|Symbol)} event The event name.\n \t * @returns {Boolean} `true` if the event had listeners, else `false`.\n \t * @public\n \t */\n \tEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n \t var evt = prefix ? prefix + event : event;\n\n \t if (!this._events[evt]) return false;\n\n \t var listeners = this._events[evt]\n \t , len = arguments.length\n \t , args\n \t , i;\n\n \t if (listeners.fn) {\n \t if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n \t switch (len) {\n \t case 1: return listeners.fn.call(listeners.context), true;\n \t case 2: return listeners.fn.call(listeners.context, a1), true;\n \t case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n \t case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n \t case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n \t case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n \t }\n\n \t for (i = 1, args = new Array(len -1); i < len; i++) {\n \t args[i - 1] = arguments[i];\n \t }\n\n \t listeners.fn.apply(listeners.context, args);\n \t } else {\n \t var length = listeners.length\n \t , j;\n\n \t for (i = 0; i < length; i++) {\n \t if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n \t switch (len) {\n \t case 1: listeners[i].fn.call(listeners[i].context); break;\n \t case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n \t case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n \t case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n \t default:\n \t if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n \t args[j - 1] = arguments[j];\n \t }\n\n \t listeners[i].fn.apply(listeners[i].context, args);\n \t }\n \t }\n \t }\n\n \t return true;\n \t};\n\n \t/**\n \t * Add a listener for a given event.\n \t *\n \t * @param {(String|Symbol)} event The event name.\n \t * @param {Function} fn The listener function.\n \t * @param {*} [context=this] The context to invoke the listener with.\n \t * @returns {EventEmitter} `this`.\n \t * @public\n \t */\n \tEventEmitter.prototype.on = function on(event, fn, context) {\n \t return addListener(this, event, fn, context, false);\n \t};\n\n \t/**\n \t * Add a one-time listener for a given event.\n \t *\n \t * @param {(String|Symbol)} event The event name.\n \t * @param {Function} fn The listener function.\n \t * @param {*} [context=this] The context to invoke the listener with.\n \t * @returns {EventEmitter} `this`.\n \t * @public\n \t */\n \tEventEmitter.prototype.once = function once(event, fn, context) {\n \t return addListener(this, event, fn, context, true);\n \t};\n\n \t/**\n \t * Remove the listeners of a given event.\n \t *\n \t * @param {(String|Symbol)} event The event name.\n \t * @param {Function} fn Only remove the listeners that match this function.\n \t * @param {*} context Only remove the listeners that have this context.\n \t * @param {Boolean} once Only remove one-time listeners.\n \t * @returns {EventEmitter} `this`.\n \t * @public\n \t */\n \tEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n \t var evt = prefix ? prefix + event : event;\n\n \t if (!this._events[evt]) return this;\n \t if (!fn) {\n \t clearEvent(this, evt);\n \t return this;\n \t }\n\n \t var listeners = this._events[evt];\n\n \t if (listeners.fn) {\n \t if (\n \t listeners.fn === fn &&\n \t (!once || listeners.once) &&\n \t (!context || listeners.context === context)\n \t ) {\n \t clearEvent(this, evt);\n \t }\n \t } else {\n \t for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n \t if (\n \t listeners[i].fn !== fn ||\n \t (once && !listeners[i].once) ||\n \t (context && listeners[i].context !== context)\n \t ) {\n \t events.push(listeners[i]);\n \t }\n \t }\n\n \t //\n \t // Reset the array, or remove it completely if we have no more listeners.\n \t //\n \t if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n \t else clearEvent(this, evt);\n \t }\n\n \t return this;\n \t};\n\n \t/**\n \t * Remove all listeners, or those of the specified event.\n \t *\n \t * @param {(String|Symbol)} [event] The event name.\n \t * @returns {EventEmitter} `this`.\n \t * @public\n \t */\n \tEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n \t var evt;\n\n \t if (event) {\n \t evt = prefix ? prefix + event : event;\n \t if (this._events[evt]) clearEvent(this, evt);\n \t } else {\n \t this._events = new Events();\n \t this._eventsCount = 0;\n \t }\n\n \t return this;\n \t};\n\n \t//\n \t// Alias methods names because people roll like that.\n \t//\n \tEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n \tEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n \t//\n \t// Expose the prefix.\n \t//\n \tEventEmitter.prefixed = prefix;\n\n \t//\n \t// Allow `EventEmitter` to be imported as module namespace.\n \t//\n \tEventEmitter.EventEmitter = EventEmitter;\n\n \t//\n \t// Expose the module.\n \t//\n \t{\n \t module.exports = EventEmitter;\n \t} \n } (eventemitter3));\n\n var eventemitter3Exports = eventemitter3.exports;\n var EventEmitter = /*@__PURE__*/getDefaultExportFromCjs(eventemitter3Exports);\n\n if (typeof __IN_WORKER__ !== 'undefined' && __IN_WORKER__) {\n startWorker(self);\n }\n function startWorker(self) {\n var observer = new EventEmitter();\n var forwardMessage = function forwardMessage(ev, data) {\n self.postMessage({\n event: ev,\n data: data\n });\n };\n\n // forward events to main thread\n observer.on(Events.FRAG_DECRYPTED, forwardMessage);\n observer.on(Events.ERROR, forwardMessage);\n\n // forward logger events to main thread\n var forwardWorkerLogs = function forwardWorkerLogs() {\n var _loop = function _loop(logFn) {\n var func = function func(message) {\n forwardMessage('workerLog', {\n logType: logFn,\n message: message\n });\n };\n logger[logFn] = func;\n };\n for (var logFn in logger) {\n _loop(logFn);\n }\n };\n self.addEventListener('message', function (ev) {\n var data = ev.data;\n switch (data.cmd) {\n case 'init':\n {\n var config = JSON.parse(data.config);\n self.transmuxer = new Transmuxer(observer, data.typeSupported, config, '', data.id);\n enableLogs(config.debug, data.id);\n forwardWorkerLogs();\n forwardMessage('init', null);\n break;\n }\n case 'configure':\n {\n self.transmuxer.configure(data.config);\n break;\n }\n case 'demux':\n {\n var transmuxResult = self.transmuxer.push(data.data, data.decryptdata, data.chunkMeta, data.state);\n if (isPromise(transmuxResult)) {\n self.transmuxer.async = true;\n transmuxResult.then(function (data) {\n emitTransmuxComplete(self, data);\n }).catch(function (error) {\n forwardMessage(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n chunkMeta: data.chunkMeta,\n fatal: false,\n error: error,\n err: error,\n reason: \"transmuxer-worker push error\"\n });\n });\n } else {\n self.transmuxer.async = false;\n emitTransmuxComplete(self, transmuxResult);\n }\n break;\n }\n case 'flush':\n {\n var id = data.chunkMeta;\n var _transmuxResult = self.transmuxer.flush(id);\n var asyncFlush = isPromise(_transmuxResult);\n if (asyncFlush || self.transmuxer.async) {\n if (!isPromise(_transmuxResult)) {\n _transmuxResult = Promise.resolve(_transmuxResult);\n }\n _transmuxResult.then(function (results) {\n handleFlushResult(self, results, id);\n }).catch(function (error) {\n forwardMessage(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n chunkMeta: data.chunkMeta,\n fatal: false,\n error: error,\n err: error,\n reason: \"transmuxer-worker flush error\"\n });\n });\n } else {\n handleFlushResult(self, _transmuxResult, id);\n }\n break;\n }\n }\n });\n }\n function emitTransmuxComplete(self, transmuxResult) {\n if (isEmptyResult(transmuxResult.remuxResult)) {\n return false;\n }\n var transferable = [];\n var _transmuxResult$remux = transmuxResult.remuxResult,\n audio = _transmuxResult$remux.audio,\n video = _transmuxResult$remux.video;\n if (audio) {\n addToTransferable(transferable, audio);\n }\n if (video) {\n addToTransferable(transferable, video);\n }\n self.postMessage({\n event: 'transmuxComplete',\n data: transmuxResult\n }, transferable);\n return true;\n }\n\n // Converts data to a transferable object https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast)\n // in order to minimize message passing overhead\n function addToTransferable(transferable, track) {\n if (track.data1) {\n transferable.push(track.data1.buffer);\n }\n if (track.data2) {\n transferable.push(track.data2.buffer);\n }\n }\n function handleFlushResult(self, results, chunkMeta) {\n var parsed = results.reduce(function (parsed, result) {\n return emitTransmuxComplete(self, result) || parsed;\n }, false);\n if (!parsed) {\n // Emit at least one \"transmuxComplete\" message even if media is not found to update stream-controller state to PARSING\n self.postMessage({\n event: 'transmuxComplete',\n data: results[0]\n });\n }\n self.postMessage({\n event: 'flush',\n data: chunkMeta\n });\n }\n function isEmptyResult(remuxResult) {\n return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment;\n }\n\n // ensure the worker ends up in the bundle\n // If the worker should not be included this gets aliased to empty.js\n function hasUMDWorker() {\n return typeof __HLS_WORKER_BUNDLE__ === 'function';\n }\n function injectWorker() {\n var blob = new self.Blob([\"var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(\" + __HLS_WORKER_BUNDLE__.toString() + \")(true);\"], {\n type: 'text/javascript'\n });\n var objectURL = self.URL.createObjectURL(blob);\n var worker = new self.Worker(objectURL);\n return {\n worker: worker,\n objectURL: objectURL\n };\n }\n function loadWorker(path) {\n var scriptURL = new self.URL(path, self.location.href).href;\n var worker = new self.Worker(scriptURL);\n return {\n worker: worker,\n scriptURL: scriptURL\n };\n }\n\n var TransmuxerInterface = /*#__PURE__*/function () {\n function TransmuxerInterface(hls, id, onTransmuxComplete, onFlush) {\n var _this = this;\n this.error = null;\n this.hls = void 0;\n this.id = void 0;\n this.observer = void 0;\n this.frag = null;\n this.part = null;\n this.useWorker = void 0;\n this.workerContext = null;\n this.onwmsg = void 0;\n this.transmuxer = null;\n this.onTransmuxComplete = void 0;\n this.onFlush = void 0;\n var config = hls.config;\n this.hls = hls;\n this.id = id;\n this.useWorker = !!config.enableWorker;\n this.onTransmuxComplete = onTransmuxComplete;\n this.onFlush = onFlush;\n var forwardMessage = function forwardMessage(ev, data) {\n data = data || {};\n data.frag = _this.frag;\n data.id = _this.id;\n if (ev === Events.ERROR) {\n _this.error = data.error;\n }\n _this.hls.trigger(ev, data);\n };\n\n // forward events to main thread\n this.observer = new EventEmitter();\n this.observer.on(Events.FRAG_DECRYPTED, forwardMessage);\n this.observer.on(Events.ERROR, forwardMessage);\n var MediaSource = getMediaSource(config.preferManagedMediaSource) || {\n isTypeSupported: function isTypeSupported() {\n return false;\n }\n };\n var m2tsTypeSupported = {\n mpeg: MediaSource.isTypeSupported('audio/mpeg'),\n mp3: MediaSource.isTypeSupported('audio/mp4; codecs=\"mp3\"'),\n ac3: MediaSource.isTypeSupported('audio/mp4; codecs=\"ac-3\"') \n };\n if (this.useWorker && typeof Worker !== 'undefined') {\n var canCreateWorker = config.workerPath || hasUMDWorker();\n if (canCreateWorker) {\n try {\n if (config.workerPath) {\n logger.log(\"loading Web Worker \" + config.workerPath + \" for \\\"\" + id + \"\\\"\");\n this.workerContext = loadWorker(config.workerPath);\n } else {\n logger.log(\"injecting Web Worker for \\\"\" + id + \"\\\"\");\n this.workerContext = injectWorker();\n }\n this.onwmsg = function (event) {\n return _this.onWorkerMessage(event);\n };\n var worker = this.workerContext.worker;\n worker.addEventListener('message', this.onwmsg);\n worker.onerror = function (event) {\n var error = new Error(event.message + \" (\" + event.filename + \":\" + event.lineno + \")\");\n config.enableWorker = false;\n logger.warn(\"Error in \\\"\" + id + \"\\\" Web Worker, fallback to inline\");\n _this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.OTHER_ERROR,\n details: ErrorDetails.INTERNAL_EXCEPTION,\n fatal: false,\n event: 'demuxerWorker',\n error: error\n });\n };\n worker.postMessage({\n cmd: 'init',\n typeSupported: m2tsTypeSupported,\n vendor: '',\n id: id,\n config: JSON.stringify(config)\n });\n } catch (err) {\n logger.warn(\"Error setting up \\\"\" + id + \"\\\" Web Worker, fallback to inline\", err);\n this.resetWorker();\n this.error = null;\n this.transmuxer = new Transmuxer(this.observer, m2tsTypeSupported, config, '', id);\n }\n return;\n }\n }\n this.transmuxer = new Transmuxer(this.observer, m2tsTypeSupported, config, '', id);\n }\n var _proto = TransmuxerInterface.prototype;\n _proto.resetWorker = function resetWorker() {\n if (this.workerContext) {\n var _this$workerContext = this.workerContext,\n worker = _this$workerContext.worker,\n objectURL = _this$workerContext.objectURL;\n if (objectURL) {\n // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n self.URL.revokeObjectURL(objectURL);\n }\n worker.removeEventListener('message', this.onwmsg);\n worker.onerror = null;\n worker.terminate();\n this.workerContext = null;\n }\n };\n _proto.destroy = function destroy() {\n if (this.workerContext) {\n this.resetWorker();\n this.onwmsg = undefined;\n } else {\n var transmuxer = this.transmuxer;\n if (transmuxer) {\n transmuxer.destroy();\n this.transmuxer = null;\n }\n }\n var observer = this.observer;\n if (observer) {\n observer.removeAllListeners();\n }\n this.frag = null;\n // @ts-ignore\n this.observer = null;\n // @ts-ignore\n this.hls = null;\n };\n _proto.push = function push(data, initSegmentData, audioCodec, videoCodec, frag, part, duration, accurateTimeOffset, chunkMeta, defaultInitPTS) {\n var _frag$initSegment,\n _lastFrag$initSegment,\n _this2 = this;\n chunkMeta.transmuxing.start = self.performance.now();\n var transmuxer = this.transmuxer;\n var timeOffset = part ? part.start : frag.start;\n // TODO: push \"clear-lead\" decrypt data for unencrypted fragments in streams with encrypted ones\n var decryptdata = frag.decryptdata;\n var lastFrag = this.frag;\n var discontinuity = !(lastFrag && frag.cc === lastFrag.cc);\n var trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);\n var snDiff = lastFrag ? chunkMeta.sn - lastFrag.sn : -1;\n var partDiff = this.part ? chunkMeta.part - this.part.index : -1;\n var progressive = snDiff === 0 && chunkMeta.id > 1 && chunkMeta.id === (lastFrag == null ? void 0 : lastFrag.stats.chunkCount);\n var contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && (partDiff === 1 || progressive && partDiff <= 0));\n var now = self.performance.now();\n if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {\n frag.stats.parsing.start = now;\n }\n if (part && (partDiff || !contiguous)) {\n part.stats.parsing.start = now;\n }\n var initSegmentChange = !(lastFrag && ((_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.url) === ((_lastFrag$initSegment = lastFrag.initSegment) == null ? void 0 : _lastFrag$initSegment.url));\n var state = new TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange);\n if (!contiguous || discontinuity || initSegmentChange) {\n logger.log(\"[transmuxer-interface, \" + frag.type + \"]: Starting new transmux session for sn: \" + chunkMeta.sn + \" p: \" + chunkMeta.part + \" level: \" + chunkMeta.level + \" id: \" + chunkMeta.id + \"\\n discontinuity: \" + discontinuity + \"\\n trackSwitch: \" + trackSwitch + \"\\n contiguous: \" + contiguous + \"\\n accurateTimeOffset: \" + accurateTimeOffset + \"\\n timeOffset: \" + timeOffset + \"\\n initSegmentChange: \" + initSegmentChange);\n var config = new TransmuxConfig(audioCodec, videoCodec, initSegmentData, duration, defaultInitPTS);\n this.configureTransmuxer(config);\n }\n this.frag = frag;\n this.part = part;\n\n // Frags with sn of 'initSegment' are not transmuxed\n if (this.workerContext) {\n // post fragment payload as transferable objects for ArrayBuffer (no copy)\n this.workerContext.worker.postMessage({\n cmd: 'demux',\n data: data,\n decryptdata: decryptdata,\n chunkMeta: chunkMeta,\n state: state\n }, data instanceof ArrayBuffer ? [data] : []);\n } else if (transmuxer) {\n var _transmuxResult = transmuxer.push(data, decryptdata, chunkMeta, state);\n if (isPromise(_transmuxResult)) {\n transmuxer.async = true;\n _transmuxResult.then(function (data) {\n _this2.handleTransmuxComplete(data);\n }).catch(function (error) {\n _this2.transmuxerError(error, chunkMeta, 'transmuxer-interface push error');\n });\n } else {\n transmuxer.async = false;\n this.handleTransmuxComplete(_transmuxResult);\n }\n }\n };\n _proto.flush = function flush(chunkMeta) {\n var _this3 = this;\n chunkMeta.transmuxing.start = self.performance.now();\n var transmuxer = this.transmuxer;\n if (this.workerContext) {\n this.workerContext.worker.postMessage({\n cmd: 'flush',\n chunkMeta: chunkMeta\n });\n } else if (transmuxer) {\n var _transmuxResult2 = transmuxer.flush(chunkMeta);\n var asyncFlush = isPromise(_transmuxResult2);\n if (asyncFlush || transmuxer.async) {\n if (!isPromise(_transmuxResult2)) {\n _transmuxResult2 = Promise.resolve(_transmuxResult2);\n }\n _transmuxResult2.then(function (data) {\n _this3.handleFlushResult(data, chunkMeta);\n }).catch(function (error) {\n _this3.transmuxerError(error, chunkMeta, 'transmuxer-interface flush error');\n });\n } else {\n this.handleFlushResult(_transmuxResult2, chunkMeta);\n }\n }\n };\n _proto.transmuxerError = function transmuxerError(error, chunkMeta, reason) {\n if (!this.hls) {\n return;\n }\n this.error = error;\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n chunkMeta: chunkMeta,\n frag: this.frag || undefined,\n fatal: false,\n error: error,\n err: error,\n reason: reason\n });\n };\n _proto.handleFlushResult = function handleFlushResult(results, chunkMeta) {\n var _this4 = this;\n results.forEach(function (result) {\n _this4.handleTransmuxComplete(result);\n });\n this.onFlush(chunkMeta);\n };\n _proto.onWorkerMessage = function onWorkerMessage(event) {\n var data = event.data;\n if (!(data != null && data.event)) {\n logger.warn(\"worker message received with no \" + (data ? 'event name' : 'data'));\n return;\n }\n var hls = this.hls;\n if (!this.hls) {\n return;\n }\n switch (data.event) {\n case 'init':\n {\n var _this$workerContext2;\n var objectURL = (_this$workerContext2 = this.workerContext) == null ? void 0 : _this$workerContext2.objectURL;\n if (objectURL) {\n // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n self.URL.revokeObjectURL(objectURL);\n }\n break;\n }\n case 'transmuxComplete':\n {\n this.handleTransmuxComplete(data.data);\n break;\n }\n case 'flush':\n {\n this.onFlush(data.data);\n break;\n }\n\n // pass logs from the worker thread to the main logger\n case 'workerLog':\n if (logger[data.data.logType]) {\n logger[data.data.logType](data.data.message);\n }\n break;\n default:\n {\n data.data = data.data || {};\n data.data.frag = this.frag;\n data.data.id = this.id;\n hls.trigger(data.event, data.data);\n break;\n }\n }\n };\n _proto.configureTransmuxer = function configureTransmuxer(config) {\n var transmuxer = this.transmuxer;\n if (this.workerContext) {\n this.workerContext.worker.postMessage({\n cmd: 'configure',\n config: config\n });\n } else if (transmuxer) {\n transmuxer.configure(config);\n }\n };\n _proto.handleTransmuxComplete = function handleTransmuxComplete(result) {\n result.chunkMeta.transmuxing.end = self.performance.now();\n this.onTransmuxComplete(result);\n };\n return TransmuxerInterface;\n }();\n\n function subtitleOptionsIdentical(trackList1, trackList2) {\n if (trackList1.length !== trackList2.length) {\n return false;\n }\n for (var i = 0; i < trackList1.length; i++) {\n if (!mediaAttributesIdentical(trackList1[i].attrs, trackList2[i].attrs)) {\n return false;\n }\n }\n return true;\n }\n function mediaAttributesIdentical(attrs1, attrs2, customAttributes) {\n // Media options with the same rendition ID must be bit identical\n var stableRenditionId = attrs1['STABLE-RENDITION-ID'];\n if (stableRenditionId && !customAttributes) {\n return stableRenditionId === attrs2['STABLE-RENDITION-ID'];\n }\n // When rendition ID is not present, compare attributes\n return !(customAttributes || ['LANGUAGE', 'NAME', 'CHARACTERISTICS', 'AUTOSELECT', 'DEFAULT', 'FORCED', 'ASSOC-LANGUAGE']).some(function (subtitleAttribute) {\n return attrs1[subtitleAttribute] !== attrs2[subtitleAttribute];\n });\n }\n function subtitleTrackMatchesTextTrack(subtitleTrack, textTrack) {\n return textTrack.label.toLowerCase() === subtitleTrack.name.toLowerCase() && (!textTrack.language || textTrack.language.toLowerCase() === (subtitleTrack.lang || '').toLowerCase());\n }\n\n var TICK_INTERVAL$2 = 100; // how often to tick in ms\n var AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(AudioStreamController, _BaseStreamController);\n function AudioStreamController(hls, fragmentTracker, keyLoader) {\n var _this;\n _this = _BaseStreamController.call(this, hls, fragmentTracker, keyLoader, '[audio-stream-controller]', PlaylistLevelType.AUDIO) || this;\n _this.videoBuffer = null;\n _this.videoTrackCC = -1;\n _this.waitingVideoCC = -1;\n _this.bufferedTrack = null;\n _this.switchingTrack = null;\n _this.trackId = -1;\n _this.waitingData = null;\n _this.mainDetails = null;\n _this.flushing = false;\n _this.bufferFlushed = false;\n _this.cachedTrackLoadedData = null;\n _this._registerListeners();\n return _this;\n }\n var _proto = AudioStreamController.prototype;\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n _BaseStreamController.prototype.onHandlerDestroying.call(this);\n this.mainDetails = null;\n this.bufferedTrack = null;\n this.switchingTrack = null;\n };\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.on(Events.ERROR, this.onError, this);\n hls.on(Events.BUFFER_RESET, this.onBufferReset, this);\n hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n };\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.off(Events.ERROR, this.onError, this);\n hls.off(Events.BUFFER_RESET, this.onBufferReset, this);\n hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n }\n\n // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value\n ;\n _proto.onInitPtsFound = function onInitPtsFound(event, _ref) {\n var frag = _ref.frag,\n id = _ref.id,\n initPTS = _ref.initPTS,\n timescale = _ref.timescale;\n // Always update the new INIT PTS\n // Can change due level switch\n if (id === 'main') {\n var cc = frag.cc;\n this.initPTS[frag.cc] = {\n baseTime: initPTS,\n timescale: timescale\n };\n this.log(\"InitPTS for cc: \" + cc + \" found from main: \" + initPTS);\n this.videoTrackCC = cc;\n // If we are waiting, tick immediately to unblock audio fragment transmuxing\n if (this.state === State.WAITING_INIT_PTS) {\n this.tick();\n }\n }\n };\n _proto.startLoad = function startLoad(startPosition) {\n if (!this.levels) {\n this.startPosition = startPosition;\n this.state = State.STOPPED;\n return;\n }\n var lastCurrentTime = this.lastCurrentTime;\n this.stopLoad();\n this.setInterval(TICK_INTERVAL$2);\n if (lastCurrentTime > 0 && startPosition === -1) {\n this.log(\"Override startPosition with lastCurrentTime @\" + lastCurrentTime.toFixed(3));\n startPosition = lastCurrentTime;\n this.state = State.IDLE;\n } else {\n this.loadedmetadata = false;\n this.state = State.WAITING_TRACK;\n }\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n };\n _proto.doTick = function doTick() {\n switch (this.state) {\n case State.IDLE:\n this.doTickIdle();\n break;\n case State.WAITING_TRACK:\n {\n var _levels$trackId;\n var levels = this.levels,\n trackId = this.trackId;\n var details = levels == null ? void 0 : (_levels$trackId = levels[trackId]) == null ? void 0 : _levels$trackId.details;\n if (details) {\n if (this.waitForCdnTuneIn(details)) {\n break;\n }\n this.state = State.WAITING_INIT_PTS;\n }\n break;\n }\n case State.FRAG_LOADING_WAITING_RETRY:\n {\n var _this$media;\n var now = performance.now();\n var retryDate = this.retryDate;\n // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n if (!retryDate || now >= retryDate || (_this$media = this.media) != null && _this$media.seeking) {\n var _levels = this.levels,\n _trackId = this.trackId;\n this.log('RetryDate reached, switch back to IDLE state');\n this.resetStartWhenNotLoaded((_levels == null ? void 0 : _levels[_trackId]) || null);\n this.state = State.IDLE;\n }\n break;\n }\n case State.WAITING_INIT_PTS:\n {\n // Ensure we don't get stuck in the WAITING_INIT_PTS state if the waiting frag CC doesn't match any initPTS\n var waitingData = this.waitingData;\n if (waitingData) {\n var frag = waitingData.frag,\n part = waitingData.part,\n cache = waitingData.cache,\n complete = waitingData.complete;\n if (this.initPTS[frag.cc] !== undefined) {\n this.waitingData = null;\n this.waitingVideoCC = -1;\n this.state = State.FRAG_LOADING;\n var payload = cache.flush();\n var data = {\n frag: frag,\n part: part,\n payload: payload,\n networkDetails: null\n };\n this._handleFragmentLoadProgress(data);\n if (complete) {\n _BaseStreamController.prototype._handleFragmentLoadComplete.call(this, data);\n }\n } else if (this.videoTrackCC !== this.waitingVideoCC) {\n // Drop waiting fragment if videoTrackCC has changed since waitingFragment was set and initPTS was not found\n this.log(\"Waiting fragment cc (\" + frag.cc + \") cancelled because video is at cc \" + this.videoTrackCC);\n this.clearWaitingFragment();\n } else {\n // Drop waiting fragment if an earlier fragment is needed\n var pos = this.getLoadPosition();\n var bufferInfo = BufferHelper.bufferInfo(this.mediaBuffer, pos, this.config.maxBufferHole);\n var waitingFragmentAtPosition = fragmentWithinToleranceTest(bufferInfo.end, this.config.maxFragLookUpTolerance, frag);\n if (waitingFragmentAtPosition < 0) {\n this.log(\"Waiting fragment cc (\" + frag.cc + \") @ \" + frag.start + \" cancelled because another fragment at \" + bufferInfo.end + \" is needed\");\n this.clearWaitingFragment();\n }\n }\n } else {\n this.state = State.IDLE;\n }\n }\n }\n this.onTickEnd();\n };\n _proto.clearWaitingFragment = function clearWaitingFragment() {\n var waitingData = this.waitingData;\n if (waitingData) {\n this.fragmentTracker.removeFragment(waitingData.frag);\n this.waitingData = null;\n this.waitingVideoCC = -1;\n this.state = State.IDLE;\n }\n };\n _proto.resetLoadingState = function resetLoadingState() {\n this.clearWaitingFragment();\n _BaseStreamController.prototype.resetLoadingState.call(this);\n };\n _proto.onTickEnd = function onTickEnd() {\n var media = this.media;\n if (!(media != null && media.readyState)) {\n // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n return;\n }\n this.lastCurrentTime = media.currentTime;\n };\n _proto.doTickIdle = function doTickIdle() {\n var hls = this.hls,\n levels = this.levels,\n media = this.media,\n trackId = this.trackId;\n var config = hls.config;\n\n // 1. if video not attached AND\n // start fragment already requested OR start frag prefetch not enabled\n // 2. if tracks or track not loaded and selected\n // then exit loop\n // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop\n if (!media && (this.startFragRequested || !config.startFragPrefetch) || !(levels != null && levels[trackId])) {\n return;\n }\n var levelInfo = levels[trackId];\n var trackDetails = levelInfo.details;\n if (!trackDetails || trackDetails.live && this.levelLastLoaded !== levelInfo || this.waitForCdnTuneIn(trackDetails)) {\n this.state = State.WAITING_TRACK;\n return;\n }\n var bufferable = this.mediaBuffer ? this.mediaBuffer : this.media;\n if (this.bufferFlushed && bufferable) {\n this.bufferFlushed = false;\n this.afterBufferFlushed(bufferable, ElementaryStreamTypes.AUDIO, PlaylistLevelType.AUDIO);\n }\n var bufferInfo = this.getFwdBufferInfo(bufferable, PlaylistLevelType.AUDIO);\n if (bufferInfo === null) {\n return;\n }\n var bufferedTrack = this.bufferedTrack,\n switchingTrack = this.switchingTrack;\n if (!switchingTrack && this._streamEnded(bufferInfo, trackDetails)) {\n hls.trigger(Events.BUFFER_EOS, {\n type: 'audio'\n });\n this.state = State.ENDED;\n return;\n }\n var mainBufferInfo = this.getFwdBufferInfo(this.videoBuffer ? this.videoBuffer : this.media, PlaylistLevelType.MAIN);\n var bufferLen = bufferInfo.len;\n var maxBufLen = this.getMaxBufferLength(mainBufferInfo == null ? void 0 : mainBufferInfo.len);\n var fragments = trackDetails.fragments;\n var start = fragments[0].start;\n var targetBufferTime = this.flushing ? this.getLoadPosition() : bufferInfo.end;\n if (switchingTrack && media) {\n var pos = this.getLoadPosition();\n // STABLE\n if (bufferedTrack && !mediaAttributesIdentical(switchingTrack.attrs, bufferedTrack.attrs)) {\n targetBufferTime = pos;\n }\n // if currentTime (pos) is less than alt audio playlist start time, it means that alt audio is ahead of currentTime\n if (trackDetails.PTSKnown && pos < start) {\n // if everything is buffered from pos to start or if audio buffer upfront, let's seek to start\n if (bufferInfo.end > start || bufferInfo.nextStart) {\n this.log('Alt audio track ahead of main track, seek to start of alt audio track');\n media.currentTime = start + 0.05;\n }\n }\n }\n\n // if buffer length is less than maxBufLen, or near the end, find a fragment to load\n if (bufferLen >= maxBufLen && !switchingTrack && targetBufferTime < fragments[fragments.length - 1].start) {\n return;\n }\n var frag = this.getNextFragment(targetBufferTime, trackDetails);\n var atGap = false;\n // Avoid loop loading by using nextLoadPosition set for backtracking and skipping consecutive GAP tags\n if (frag && this.isLoopLoading(frag, targetBufferTime)) {\n atGap = !!frag.gap;\n frag = this.getNextFragmentLoopLoading(frag, trackDetails, bufferInfo, PlaylistLevelType.MAIN, maxBufLen);\n }\n if (!frag) {\n this.bufferFlushed = true;\n return;\n }\n\n // Buffer audio up to one target duration ahead of main buffer\n var atBufferSyncLimit = mainBufferInfo && frag.start > mainBufferInfo.end + trackDetails.targetduration;\n if (atBufferSyncLimit ||\n // Or wait for main buffer after buffing some audio\n !(mainBufferInfo != null && mainBufferInfo.len) && bufferInfo.len) {\n // Check fragment-tracker for main fragments since GAP segments do not show up in bufferInfo\n var mainFrag = this.getAppendedFrag(frag.start, PlaylistLevelType.MAIN);\n if (mainFrag === null) {\n return;\n }\n // Bridge gaps in main buffer\n atGap || (atGap = !!mainFrag.gap || !!atBufferSyncLimit && mainBufferInfo.len === 0);\n if (atBufferSyncLimit && !atGap || atGap && bufferInfo.nextStart && bufferInfo.nextStart < mainFrag.end) {\n return;\n }\n }\n this.loadFragment(frag, levelInfo, targetBufferTime);\n };\n _proto.getMaxBufferLength = function getMaxBufferLength(mainBufferLength) {\n var maxConfigBuffer = _BaseStreamController.prototype.getMaxBufferLength.call(this);\n if (!mainBufferLength) {\n return maxConfigBuffer;\n }\n return Math.min(Math.max(maxConfigBuffer, mainBufferLength), this.config.maxMaxBufferLength);\n };\n _proto.onMediaDetaching = function onMediaDetaching() {\n this.videoBuffer = null;\n this.bufferFlushed = this.flushing = false;\n _BaseStreamController.prototype.onMediaDetaching.call(this);\n };\n _proto.onAudioTracksUpdated = function onAudioTracksUpdated(event, _ref2) {\n var audioTracks = _ref2.audioTracks;\n // Reset tranxmuxer is essential for large context switches (Content Steering)\n this.resetTransmuxer();\n this.levels = audioTracks.map(function (mediaPlaylist) {\n return new Level(mediaPlaylist);\n });\n };\n _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) {\n // if any URL found on new audio track, it is an alternate audio track\n var altAudio = !!data.url;\n this.trackId = data.id;\n var fragCurrent = this.fragCurrent;\n if (fragCurrent) {\n fragCurrent.abortRequests();\n this.removeUnbufferedFrags(fragCurrent.start);\n }\n this.resetLoadingState();\n // destroy useless transmuxer when switching audio to main\n if (!altAudio) {\n this.resetTransmuxer();\n } else {\n // switching to audio track, start timer if not already started\n this.setInterval(TICK_INTERVAL$2);\n }\n\n // should we switch tracks ?\n if (altAudio) {\n this.switchingTrack = data;\n // main audio track are handled by stream-controller, just do something if switching to alt audio track\n this.state = State.IDLE;\n this.flushAudioIfNeeded(data);\n } else {\n this.switchingTrack = null;\n this.bufferedTrack = data;\n this.state = State.STOPPED;\n }\n this.tick();\n };\n _proto.onManifestLoading = function onManifestLoading() {\n this.fragmentTracker.removeAllFragments();\n this.startPosition = this.lastCurrentTime = 0;\n this.bufferFlushed = this.flushing = false;\n this.levels = this.mainDetails = this.waitingData = this.bufferedTrack = this.cachedTrackLoadedData = this.switchingTrack = null;\n this.startFragRequested = false;\n this.trackId = this.videoTrackCC = this.waitingVideoCC = -1;\n };\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n this.mainDetails = data.details;\n if (this.cachedTrackLoadedData !== null) {\n this.hls.trigger(Events.AUDIO_TRACK_LOADED, this.cachedTrackLoadedData);\n this.cachedTrackLoadedData = null;\n }\n };\n _proto.onAudioTrackLoaded = function onAudioTrackLoaded(event, data) {\n var _track$details;\n if (this.mainDetails == null) {\n this.cachedTrackLoadedData = data;\n return;\n }\n var levels = this.levels;\n var newDetails = data.details,\n trackId = data.id;\n if (!levels) {\n this.warn(\"Audio tracks were reset while loading level \" + trackId);\n return;\n }\n this.log(\"Audio track \" + trackId + \" loaded [\" + newDetails.startSN + \",\" + newDetails.endSN + \"]\" + (newDetails.lastPartSn ? \"[part-\" + newDetails.lastPartSn + \"-\" + newDetails.lastPartIndex + \"]\" : '') + \",duration:\" + newDetails.totalduration);\n var track = levels[trackId];\n var sliding = 0;\n if (newDetails.live || (_track$details = track.details) != null && _track$details.live) {\n this.checkLiveUpdate(newDetails);\n var mainDetails = this.mainDetails;\n if (newDetails.deltaUpdateFailed || !mainDetails) {\n return;\n }\n if (!track.details && newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n // Make sure our audio rendition is aligned with the \"main\" rendition, using\n // pdt as our reference times.\n alignMediaPlaylistByPDT(newDetails, mainDetails);\n sliding = newDetails.fragments[0].start;\n } else {\n var _this$levelLastLoaded;\n sliding = this.alignPlaylists(newDetails, track.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n }\n }\n track.details = newDetails;\n this.levelLastLoaded = track;\n\n // compute start position if we are aligned with the main playlist\n if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n this.setStartPosition(this.mainDetails || newDetails, sliding);\n }\n // only switch back to IDLE state if we were waiting for track to start downloading a new fragment\n if (this.state === State.WAITING_TRACK && !this.waitForCdnTuneIn(newDetails)) {\n this.state = State.IDLE;\n }\n\n // trigger handler right now\n this.tick();\n };\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(data) {\n var _frag$initSegment;\n var frag = data.frag,\n part = data.part,\n payload = data.payload;\n var config = this.config,\n trackId = this.trackId,\n levels = this.levels;\n if (!levels) {\n this.warn(\"Audio tracks were reset while fragment load was in progress. Fragment \" + frag.sn + \" of level \" + frag.level + \" will not be buffered\");\n return;\n }\n var track = levels[trackId];\n if (!track) {\n this.warn('Audio track is undefined on fragment load progress');\n return;\n }\n var details = track.details;\n if (!details) {\n this.warn('Audio track details undefined on fragment load progress');\n this.removeUnbufferedFrags(frag.start);\n return;\n }\n var audioCodec = config.defaultAudioCodec || track.audioCodec || 'mp4a.40.2';\n var transmuxer = this.transmuxer;\n if (!transmuxer) {\n transmuxer = this.transmuxer = new TransmuxerInterface(this.hls, PlaylistLevelType.AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n }\n\n // Check if we have video initPTS\n // If not we need to wait for it\n var initPTS = this.initPTS[frag.cc];\n var initSegmentData = (_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.data;\n if (initPTS !== undefined) {\n // this.log(`Transmuxing ${sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`);\n // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n var accurateTimeOffset = false; // details.PTSKnown || !details.live;\n var partIndex = part ? part.index : -1;\n var partial = partIndex !== -1;\n var chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n transmuxer.push(payload, initSegmentData, audioCodec, '', frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n } else {\n this.log(\"Unknown video PTS for cc \" + frag.cc + \", waiting for video PTS before demuxing audio frag \" + frag.sn + \" of [\" + details.startSN + \" ,\" + details.endSN + \"],track \" + trackId);\n var _this$waitingData = this.waitingData = this.waitingData || {\n frag: frag,\n part: part,\n cache: new ChunkCache(),\n complete: false\n },\n cache = _this$waitingData.cache;\n cache.push(new Uint8Array(payload));\n this.waitingVideoCC = this.videoTrackCC;\n this.state = State.WAITING_INIT_PTS;\n }\n };\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedData) {\n if (this.waitingData) {\n this.waitingData.complete = true;\n return;\n }\n _BaseStreamController.prototype._handleFragmentLoadComplete.call(this, fragLoadedData);\n };\n _proto.onBufferReset = function onBufferReset( /* event: Events.BUFFER_RESET */\n ) {\n // reset reference to sourcebuffers\n this.mediaBuffer = this.videoBuffer = null;\n this.loadedmetadata = false;\n };\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var audioTrack = data.tracks.audio;\n if (audioTrack) {\n this.mediaBuffer = audioTrack.buffer || null;\n }\n if (data.tracks.video) {\n this.videoBuffer = data.tracks.video.buffer || null;\n }\n };\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n if (frag.type !== PlaylistLevelType.AUDIO) {\n if (!this.loadedmetadata && frag.type === PlaylistLevelType.MAIN) {\n var bufferable = this.videoBuffer || this.media;\n if (bufferable) {\n var bufferedTimeRanges = BufferHelper.getBuffered(bufferable);\n if (bufferedTimeRanges.length) {\n this.loadedmetadata = true;\n }\n }\n }\n return;\n }\n if (this.fragContextChanged(frag)) {\n // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n // Avoid setting state back to IDLE or concluding the audio switch; otherwise, the switched-to track will not buffer\n this.warn(\"Fragment \" + frag.sn + (part ? ' p: ' + part.index : '') + \" of level \" + frag.level + \" finished buffering, but was aborted. state: \" + this.state + \", audioSwitch: \" + (this.switchingTrack ? this.switchingTrack.name : 'false'));\n return;\n }\n if (frag.sn !== 'initSegment') {\n this.fragPrevious = frag;\n var track = this.switchingTrack;\n if (track) {\n this.bufferedTrack = track;\n this.switchingTrack = null;\n this.hls.trigger(Events.AUDIO_TRACK_SWITCHED, _objectSpread2({}, track));\n }\n }\n this.fragBufferedComplete(frag, part);\n };\n _proto.onError = function onError(event, data) {\n var _data$context;\n if (data.fatal) {\n this.state = State.ERROR;\n return;\n }\n switch (data.details) {\n case ErrorDetails.FRAG_GAP:\n case ErrorDetails.FRAG_PARSING_ERROR:\n case ErrorDetails.FRAG_DECRYPT_ERROR:\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n this.onFragmentOrKeyLoadError(PlaylistLevelType.AUDIO, data);\n break;\n case ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n case ErrorDetails.LEVEL_PARSING_ERROR:\n // in case of non fatal error while loading track, if not retrying to load track, switch back to IDLE\n if (!data.levelRetry && this.state === State.WAITING_TRACK && ((_data$context = data.context) == null ? void 0 : _data$context.type) === PlaylistContextType.AUDIO_TRACK) {\n this.state = State.IDLE;\n }\n break;\n case ErrorDetails.BUFFER_APPEND_ERROR:\n case ErrorDetails.BUFFER_FULL_ERROR:\n if (!data.parent || data.parent !== 'audio') {\n return;\n }\n if (data.details === ErrorDetails.BUFFER_APPEND_ERROR) {\n this.resetLoadingState();\n return;\n }\n if (this.reduceLengthAndFlushBuffer(data)) {\n this.bufferedTrack = null;\n _BaseStreamController.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio');\n }\n break;\n case ErrorDetails.INTERNAL_EXCEPTION:\n this.recoverWorkerError(data);\n break;\n }\n };\n _proto.onBufferFlushing = function onBufferFlushing(event, _ref3) {\n var type = _ref3.type;\n if (type !== ElementaryStreamTypes.VIDEO) {\n this.flushing = true;\n }\n };\n _proto.onBufferFlushed = function onBufferFlushed(event, _ref4) {\n var type = _ref4.type;\n if (type !== ElementaryStreamTypes.VIDEO) {\n this.flushing = false;\n this.bufferFlushed = true;\n if (this.state === State.ENDED) {\n this.state = State.IDLE;\n }\n var mediaBuffer = this.mediaBuffer || this.media;\n if (mediaBuffer) {\n this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.AUDIO);\n this.tick();\n }\n }\n };\n _proto._handleTransmuxComplete = function _handleTransmuxComplete(transmuxResult) {\n var _id3$samples;\n var id = 'audio';\n var hls = this.hls;\n var remuxResult = transmuxResult.remuxResult,\n chunkMeta = transmuxResult.chunkMeta;\n var context = this.getCurrentContext(chunkMeta);\n if (!context) {\n this.resetWhenMissingContext(chunkMeta);\n return;\n }\n var frag = context.frag,\n part = context.part,\n level = context.level;\n var details = level.details;\n var audio = remuxResult.audio,\n text = remuxResult.text,\n id3 = remuxResult.id3,\n initSegment = remuxResult.initSegment;\n\n // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n if (this.fragContextChanged(frag) || !details) {\n this.fragmentTracker.removeFragment(frag);\n return;\n }\n this.state = State.PARSING;\n if (this.switchingTrack && audio) {\n this.completeAudioSwitch(this.switchingTrack);\n }\n if (initSegment != null && initSegment.tracks) {\n var mapFragment = frag.initSegment || frag;\n this._bufferInitSegment(level, initSegment.tracks, mapFragment, chunkMeta);\n hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, {\n frag: mapFragment,\n id: id,\n tracks: initSegment.tracks\n });\n // Only flush audio from old audio tracks when PTS is known on new audio track\n }\n if (audio) {\n var startPTS = audio.startPTS,\n endPTS = audio.endPTS,\n startDTS = audio.startDTS,\n endDTS = audio.endDTS;\n if (part) {\n part.elementaryStreams[ElementaryStreamTypes.AUDIO] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS\n };\n }\n frag.setElementaryStreamInfo(ElementaryStreamTypes.AUDIO, startPTS, endPTS, startDTS, endDTS);\n this.bufferFragmentData(audio, frag, part, chunkMeta);\n }\n if (id3 != null && (_id3$samples = id3.samples) != null && _id3$samples.length) {\n var emittedID3 = _extends({\n id: id,\n frag: frag,\n details: details\n }, id3);\n hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3);\n }\n if (text) {\n var emittedText = _extends({\n id: id,\n frag: frag,\n details: details\n }, text);\n hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText);\n }\n };\n _proto._bufferInitSegment = function _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n if (this.state !== State.PARSING) {\n return;\n }\n // delete any video track found on audio transmuxer\n if (tracks.video) {\n delete tracks.video;\n }\n\n // include levelCodec in audio and video tracks\n var track = tracks.audio;\n if (!track) {\n return;\n }\n track.id = 'audio';\n var variantAudioCodecs = currentLevel.audioCodec;\n this.log(\"Init audio buffer, container:\" + track.container + \", codecs[level/parsed]=[\" + variantAudioCodecs + \"/\" + track.codec + \"]\");\n // SourceBuffer will use track.levelCodec if defined\n if (variantAudioCodecs && variantAudioCodecs.split(',').length === 1) {\n track.levelCodec = variantAudioCodecs;\n }\n this.hls.trigger(Events.BUFFER_CODECS, tracks);\n var initSegment = track.initSegment;\n if (initSegment != null && initSegment.byteLength) {\n var segment = {\n type: 'audio',\n frag: frag,\n part: null,\n chunkMeta: chunkMeta,\n parent: frag.type,\n data: initSegment\n };\n this.hls.trigger(Events.BUFFER_APPENDING, segment);\n }\n // trigger handler right now\n this.tickImmediate();\n };\n _proto.loadFragment = function loadFragment(frag, track, targetBufferTime) {\n // only load if fragment is not loaded or if in audio switch\n var fragState = this.fragmentTracker.getState(frag);\n this.fragCurrent = frag;\n\n // we force a frag loading in audio switch as fragment tracker might not have evicted previous frags in case of quick audio switch\n if (this.switchingTrack || fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) {\n var _track$details2;\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag, track);\n } else if ((_track$details2 = track.details) != null && _track$details2.live && !this.initPTS[frag.cc]) {\n this.log(\"Waiting for video PTS in continuity counter \" + frag.cc + \" of live stream before loading audio fragment \" + frag.sn + \" of level \" + this.trackId);\n this.state = State.WAITING_INIT_PTS;\n var mainDetails = this.mainDetails;\n if (mainDetails && mainDetails.fragments[0].start !== track.details.fragments[0].start) {\n alignMediaPlaylistByPDT(track.details, mainDetails);\n }\n } else {\n this.startFragRequested = true;\n _BaseStreamController.prototype.loadFragment.call(this, frag, track, targetBufferTime);\n }\n } else {\n this.clearTrackerIfNeeded(frag);\n }\n };\n _proto.flushAudioIfNeeded = function flushAudioIfNeeded(switchingTrack) {\n var media = this.media,\n bufferedTrack = this.bufferedTrack;\n var bufferedAttributes = bufferedTrack == null ? void 0 : bufferedTrack.attrs;\n var switchAttributes = switchingTrack.attrs;\n if (media && bufferedAttributes && (bufferedAttributes.CHANNELS !== switchAttributes.CHANNELS || bufferedTrack.name !== switchingTrack.name || bufferedTrack.lang !== switchingTrack.lang)) {\n this.log('Switching audio track : flushing all audio');\n _BaseStreamController.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio');\n this.bufferedTrack = null;\n }\n };\n _proto.completeAudioSwitch = function completeAudioSwitch(switchingTrack) {\n var hls = this.hls;\n this.flushAudioIfNeeded(switchingTrack);\n this.bufferedTrack = switchingTrack;\n this.switchingTrack = null;\n hls.trigger(Events.AUDIO_TRACK_SWITCHED, _objectSpread2({}, switchingTrack));\n };\n return AudioStreamController;\n }(BaseStreamController);\n\n var AudioTrackController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(AudioTrackController, _BasePlaylistControll);\n function AudioTrackController(hls) {\n var _this;\n _this = _BasePlaylistControll.call(this, hls, '[audio-track-controller]') || this;\n _this.tracks = [];\n _this.groupIds = null;\n _this.tracksInGroup = [];\n _this.trackId = -1;\n _this.currentTrack = null;\n _this.selectDefaultTrack = true;\n _this.registerListeners();\n return _this;\n }\n var _proto = AudioTrackController.prototype;\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.on(Events.ERROR, this.onError, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.off(Events.ERROR, this.onError, this);\n };\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.tracks.length = 0;\n this.tracksInGroup.length = 0;\n this.currentTrack = null;\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n _proto.onManifestLoading = function onManifestLoading() {\n this.tracks = [];\n this.tracksInGroup = [];\n this.groupIds = null;\n this.currentTrack = null;\n this.trackId = -1;\n this.selectDefaultTrack = true;\n };\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n this.tracks = data.audioTracks || [];\n };\n _proto.onAudioTrackLoaded = function onAudioTrackLoaded(event, data) {\n var id = data.id,\n groupId = data.groupId,\n details = data.details;\n var trackInActiveGroup = this.tracksInGroup[id];\n if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) {\n this.warn(\"Audio track with id:\" + id + \" and group:\" + groupId + \" not found in active group \" + (trackInActiveGroup == null ? void 0 : trackInActiveGroup.groupId));\n return;\n }\n var curDetails = trackInActiveGroup.details;\n trackInActiveGroup.details = data.details;\n this.log(\"Audio track \" + id + \" \\\"\" + trackInActiveGroup.name + \"\\\" lang:\" + trackInActiveGroup.lang + \" group:\" + groupId + \" loaded [\" + details.startSN + \"-\" + details.endSN + \"]\");\n if (id === this.trackId) {\n this.playlistLoaded(id, data, curDetails);\n }\n };\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n this.switchLevel(data.level);\n };\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.switchLevel(data.level);\n };\n _proto.switchLevel = function switchLevel(levelIndex) {\n var levelInfo = this.hls.levels[levelIndex];\n if (!levelInfo) {\n return;\n }\n var audioGroups = levelInfo.audioGroups || null;\n var currentGroups = this.groupIds;\n var currentTrack = this.currentTrack;\n if (!audioGroups || (currentGroups == null ? void 0 : currentGroups.length) !== (audioGroups == null ? void 0 : audioGroups.length) || audioGroups != null && audioGroups.some(function (groupId) {\n return (currentGroups == null ? void 0 : currentGroups.indexOf(groupId)) === -1;\n })) {\n this.groupIds = audioGroups;\n this.trackId = -1;\n this.currentTrack = null;\n var audioTracks = this.tracks.filter(function (track) {\n return !audioGroups || audioGroups.indexOf(track.groupId) !== -1;\n });\n if (audioTracks.length) {\n // Disable selectDefaultTrack if there are no default tracks\n if (this.selectDefaultTrack && !audioTracks.some(function (track) {\n return track.default;\n })) {\n this.selectDefaultTrack = false;\n }\n // track.id should match hls.audioTracks index\n audioTracks.forEach(function (track, i) {\n track.id = i;\n });\n } else if (!currentTrack && !this.tracksInGroup.length) {\n // Do not dispatch AUDIO_TRACKS_UPDATED when there were and are no tracks\n return;\n }\n this.tracksInGroup = audioTracks;\n\n // Find preferred track\n var audioPreference = this.hls.config.audioPreference;\n if (!currentTrack && audioPreference) {\n var groupIndex = findMatchingOption(audioPreference, audioTracks, audioMatchPredicate);\n if (groupIndex > -1) {\n currentTrack = audioTracks[groupIndex];\n } else {\n var allIndex = findMatchingOption(audioPreference, this.tracks);\n currentTrack = this.tracks[allIndex];\n }\n }\n\n // Select initial track\n var trackId = this.findTrackId(currentTrack);\n if (trackId === -1 && currentTrack) {\n trackId = this.findTrackId(null);\n }\n\n // Dispatch events and load track if needed\n var audioTracksUpdated = {\n audioTracks: audioTracks\n };\n this.log(\"Updating audio tracks, \" + audioTracks.length + \" track(s) found in group(s): \" + (audioGroups == null ? void 0 : audioGroups.join(',')));\n this.hls.trigger(Events.AUDIO_TRACKS_UPDATED, audioTracksUpdated);\n var selectedTrackId = this.trackId;\n if (trackId !== -1 && selectedTrackId === -1) {\n this.setAudioTrack(trackId);\n } else if (audioTracks.length && selectedTrackId === -1) {\n var _this$groupIds;\n var error = new Error(\"No audio track selected for current audio group-ID(s): \" + ((_this$groupIds = this.groupIds) == null ? void 0 : _this$groupIds.join(',')) + \" track count: \" + audioTracks.length);\n this.warn(error.message);\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.AUDIO_TRACK_LOAD_ERROR,\n fatal: true,\n error: error\n });\n }\n } else if (this.shouldReloadPlaylist(currentTrack)) {\n // Retry playlist loading if no playlist is or has been loaded yet\n this.setAudioTrack(this.trackId);\n }\n };\n _proto.onError = function onError(event, data) {\n if (data.fatal || !data.context) {\n return;\n }\n if (data.context.type === PlaylistContextType.AUDIO_TRACK && data.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(data.context.groupId) !== -1)) {\n this.requestScheduled = -1;\n this.checkRetry(data);\n }\n };\n _proto.setAudioOption = function setAudioOption(audioOption) {\n var hls = this.hls;\n hls.config.audioPreference = audioOption;\n if (audioOption) {\n var allAudioTracks = this.allAudioTracks;\n this.selectDefaultTrack = false;\n if (allAudioTracks.length) {\n // First see if current option matches (no switch op)\n var currentTrack = this.currentTrack;\n if (currentTrack && matchesOption(audioOption, currentTrack, audioMatchPredicate)) {\n return currentTrack;\n }\n // Find option in available tracks (tracksInGroup)\n var groupIndex = findMatchingOption(audioOption, this.tracksInGroup, audioMatchPredicate);\n if (groupIndex > -1) {\n var track = this.tracksInGroup[groupIndex];\n this.setAudioTrack(groupIndex);\n return track;\n } else if (currentTrack) {\n // Find option in nearest level audio group\n var searchIndex = hls.loadLevel;\n if (searchIndex === -1) {\n searchIndex = hls.firstAutoLevel;\n }\n var switchIndex = findClosestLevelWithAudioGroup(audioOption, hls.levels, allAudioTracks, searchIndex, audioMatchPredicate);\n if (switchIndex === -1) {\n // could not find matching variant\n return null;\n }\n // and switch level to acheive the audio group switch\n hls.nextLoadLevel = switchIndex;\n }\n if (audioOption.channels || audioOption.audioCodec) {\n // Could not find a match with codec / channels predicate\n // Find a match without channels or codec\n var withoutCodecAndChannelsMatch = findMatchingOption(audioOption, allAudioTracks);\n if (withoutCodecAndChannelsMatch > -1) {\n return allAudioTracks[withoutCodecAndChannelsMatch];\n }\n }\n }\n }\n return null;\n };\n _proto.setAudioTrack = function setAudioTrack(newId) {\n var tracks = this.tracksInGroup;\n\n // check if level idx is valid\n if (newId < 0 || newId >= tracks.length) {\n this.warn(\"Invalid audio track id: \" + newId);\n return;\n }\n\n // stopping live reloading timer if any\n this.clearTimer();\n this.selectDefaultTrack = false;\n var lastTrack = this.currentTrack;\n var track = tracks[newId];\n var trackLoaded = track.details && !track.details.live;\n if (newId === this.trackId && track === lastTrack && trackLoaded) {\n return;\n }\n this.log(\"Switching to audio-track \" + newId + \" \\\"\" + track.name + \"\\\" lang:\" + track.lang + \" group:\" + track.groupId + \" channels:\" + track.channels);\n this.trackId = newId;\n this.currentTrack = track;\n this.hls.trigger(Events.AUDIO_TRACK_SWITCHING, _objectSpread2({}, track));\n // Do not reload track unless live\n if (trackLoaded) {\n return;\n }\n var hlsUrlParameters = this.switchParams(track.url, lastTrack == null ? void 0 : lastTrack.details, track.details);\n this.loadPlaylist(hlsUrlParameters);\n };\n _proto.findTrackId = function findTrackId(currentTrack) {\n var audioTracks = this.tracksInGroup;\n for (var i = 0; i < audioTracks.length; i++) {\n var track = audioTracks[i];\n if (this.selectDefaultTrack && !track.default) {\n continue;\n }\n if (!currentTrack || matchesOption(currentTrack, track, audioMatchPredicate)) {\n return i;\n }\n }\n if (currentTrack) {\n var name = currentTrack.name,\n lang = currentTrack.lang,\n assocLang = currentTrack.assocLang,\n characteristics = currentTrack.characteristics,\n audioCodec = currentTrack.audioCodec,\n channels = currentTrack.channels;\n for (var _i = 0; _i < audioTracks.length; _i++) {\n var _track = audioTracks[_i];\n if (matchesOption({\n name: name,\n lang: lang,\n assocLang: assocLang,\n characteristics: characteristics,\n audioCodec: audioCodec,\n channels: channels\n }, _track, audioMatchPredicate)) {\n return _i;\n }\n }\n for (var _i2 = 0; _i2 < audioTracks.length; _i2++) {\n var _track2 = audioTracks[_i2];\n if (mediaAttributesIdentical(currentTrack.attrs, _track2.attrs, ['LANGUAGE', 'ASSOC-LANGUAGE', 'CHARACTERISTICS'])) {\n return _i2;\n }\n }\n for (var _i3 = 0; _i3 < audioTracks.length; _i3++) {\n var _track3 = audioTracks[_i3];\n if (mediaAttributesIdentical(currentTrack.attrs, _track3.attrs, ['LANGUAGE'])) {\n return _i3;\n }\n }\n }\n return -1;\n };\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n var audioTrack = this.currentTrack;\n if (this.shouldLoadPlaylist(audioTrack) && audioTrack) {\n _BasePlaylistControll.prototype.loadPlaylist.call(this);\n var id = audioTrack.id;\n var groupId = audioTrack.groupId;\n var url = audioTrack.url;\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n }\n // track not retrieved yet, or live playlist we need to (re)load it\n this.log(\"loading audio-track playlist \" + id + \" \\\"\" + audioTrack.name + \"\\\" lang:\" + audioTrack.lang + \" group:\" + groupId);\n this.clearTimer();\n this.hls.trigger(Events.AUDIO_TRACK_LOADING, {\n url: url,\n id: id,\n groupId: groupId,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n };\n _createClass(AudioTrackController, [{\n key: \"allAudioTracks\",\n get: function get() {\n return this.tracks;\n }\n }, {\n key: \"audioTracks\",\n get: function get() {\n return this.tracksInGroup;\n }\n }, {\n key: \"audioTrack\",\n get: function get() {\n return this.trackId;\n },\n set: function set(newId) {\n // If audio track is selected from API then don't choose from the manifest default track\n this.selectDefaultTrack = false;\n this.setAudioTrack(newId);\n }\n }]);\n return AudioTrackController;\n }(BasePlaylistController);\n\n var TICK_INTERVAL$1 = 500; // how often to tick in ms\n\n var SubtitleStreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(SubtitleStreamController, _BaseStreamController);\n function SubtitleStreamController(hls, fragmentTracker, keyLoader) {\n var _this;\n _this = _BaseStreamController.call(this, hls, fragmentTracker, keyLoader, '[subtitle-stream-controller]', PlaylistLevelType.SUBTITLE) || this;\n _this.currentTrackId = -1;\n _this.tracksBuffered = [];\n _this.mainDetails = null;\n _this._registerListeners();\n return _this;\n }\n var _proto = SubtitleStreamController.prototype;\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n _BaseStreamController.prototype.onHandlerDestroying.call(this);\n this.mainDetails = null;\n };\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(Events.ERROR, this.onError, this);\n hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.on(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.on(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n };\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(Events.ERROR, this.onError, this);\n hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.off(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.off(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n };\n _proto.startLoad = function startLoad(startPosition) {\n this.stopLoad();\n this.state = State.IDLE;\n this.setInterval(TICK_INTERVAL$1);\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n };\n _proto.onManifestLoading = function onManifestLoading() {\n this.mainDetails = null;\n this.fragmentTracker.removeAllFragments();\n };\n _proto.onMediaDetaching = function onMediaDetaching() {\n this.tracksBuffered = [];\n _BaseStreamController.prototype.onMediaDetaching.call(this);\n };\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n this.mainDetails = data.details;\n };\n _proto.onSubtitleFragProcessed = function onSubtitleFragProcessed(event, data) {\n var frag = data.frag,\n success = data.success;\n this.fragPrevious = frag;\n this.state = State.IDLE;\n if (!success) {\n return;\n }\n var buffered = this.tracksBuffered[this.currentTrackId];\n if (!buffered) {\n return;\n }\n\n // Create/update a buffered array matching the interface used by BufferHelper.bufferedInfo\n // so we can re-use the logic used to detect how much has been buffered\n var timeRange;\n var fragStart = frag.start;\n for (var i = 0; i < buffered.length; i++) {\n if (fragStart >= buffered[i].start && fragStart <= buffered[i].end) {\n timeRange = buffered[i];\n break;\n }\n }\n var fragEnd = frag.start + frag.duration;\n if (timeRange) {\n timeRange.end = fragEnd;\n } else {\n timeRange = {\n start: fragStart,\n end: fragEnd\n };\n buffered.push(timeRange);\n }\n this.fragmentTracker.fragBuffered(frag);\n this.fragBufferedComplete(frag, null);\n };\n _proto.onBufferFlushing = function onBufferFlushing(event, data) {\n var startOffset = data.startOffset,\n endOffset = data.endOffset;\n if (startOffset === 0 && endOffset !== Number.POSITIVE_INFINITY) {\n var endOffsetSubtitles = endOffset - 1;\n if (endOffsetSubtitles <= 0) {\n return;\n }\n data.endOffsetSubtitles = Math.max(0, endOffsetSubtitles);\n this.tracksBuffered.forEach(function (buffered) {\n for (var i = 0; i < buffered.length;) {\n if (buffered[i].end <= endOffsetSubtitles) {\n buffered.shift();\n continue;\n } else if (buffered[i].start < endOffsetSubtitles) {\n buffered[i].start = endOffsetSubtitles;\n } else {\n break;\n }\n i++;\n }\n });\n this.fragmentTracker.removeFragmentsInRange(startOffset, endOffsetSubtitles, PlaylistLevelType.SUBTITLE);\n }\n };\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n if (!this.loadedmetadata && data.frag.type === PlaylistLevelType.MAIN) {\n var _this$media;\n if ((_this$media = this.media) != null && _this$media.buffered.length) {\n this.loadedmetadata = true;\n }\n }\n }\n\n // If something goes wrong, proceed to next frag, if we were processing one.\n ;\n _proto.onError = function onError(event, data) {\n var frag = data.frag;\n if ((frag == null ? void 0 : frag.type) === PlaylistLevelType.SUBTITLE) {\n if (data.details === ErrorDetails.FRAG_GAP) {\n this.fragmentTracker.fragBuffered(frag, true);\n }\n if (this.fragCurrent) {\n this.fragCurrent.abortRequests();\n }\n if (this.state !== State.STOPPED) {\n this.state = State.IDLE;\n }\n }\n }\n\n // Got all new subtitle levels.\n ;\n _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(event, _ref) {\n var _this2 = this;\n var subtitleTracks = _ref.subtitleTracks;\n if (this.levels && subtitleOptionsIdentical(this.levels, subtitleTracks)) {\n this.levels = subtitleTracks.map(function (mediaPlaylist) {\n return new Level(mediaPlaylist);\n });\n return;\n }\n this.tracksBuffered = [];\n this.levels = subtitleTracks.map(function (mediaPlaylist) {\n var level = new Level(mediaPlaylist);\n _this2.tracksBuffered[level.id] = [];\n return level;\n });\n this.fragmentTracker.removeFragmentsInRange(0, Number.POSITIVE_INFINITY, PlaylistLevelType.SUBTITLE);\n this.fragPrevious = null;\n this.mediaBuffer = null;\n };\n _proto.onSubtitleTrackSwitch = function onSubtitleTrackSwitch(event, data) {\n var _this$levels;\n this.currentTrackId = data.id;\n if (!((_this$levels = this.levels) != null && _this$levels.length) || this.currentTrackId === -1) {\n this.clearInterval();\n return;\n }\n\n // Check if track has the necessary details to load fragments\n var currentTrack = this.levels[this.currentTrackId];\n if (currentTrack != null && currentTrack.details) {\n this.mediaBuffer = this.mediaBufferTimeRanges;\n } else {\n this.mediaBuffer = null;\n }\n if (currentTrack) {\n this.setInterval(TICK_INTERVAL$1);\n }\n }\n\n // Got a new set of subtitle fragments.\n ;\n _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(event, data) {\n var _track$details;\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n var newDetails = data.details,\n trackId = data.id;\n if (!levels) {\n this.warn(\"Subtitle tracks were reset while loading level \" + trackId);\n return;\n }\n var track = levels[trackId];\n if (trackId >= levels.length || !track) {\n return;\n }\n this.log(\"Subtitle track \" + trackId + \" loaded [\" + newDetails.startSN + \",\" + newDetails.endSN + \"]\" + (newDetails.lastPartSn ? \"[part-\" + newDetails.lastPartSn + \"-\" + newDetails.lastPartIndex + \"]\" : '') + \",duration:\" + newDetails.totalduration);\n this.mediaBuffer = this.mediaBufferTimeRanges;\n var sliding = 0;\n if (newDetails.live || (_track$details = track.details) != null && _track$details.live) {\n var mainDetails = this.mainDetails;\n if (newDetails.deltaUpdateFailed || !mainDetails) {\n return;\n }\n var mainSlidingStartFragment = mainDetails.fragments[0];\n if (!track.details) {\n if (newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n alignMediaPlaylistByPDT(newDetails, mainDetails);\n sliding = newDetails.fragments[0].start;\n } else if (mainSlidingStartFragment) {\n // line up live playlist with main so that fragments in range are loaded\n sliding = mainSlidingStartFragment.start;\n addSliding(newDetails, sliding);\n }\n } else {\n var _this$levelLastLoaded;\n sliding = this.alignPlaylists(newDetails, track.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n if (sliding === 0 && mainSlidingStartFragment) {\n // realign with main when there is no overlap with last refresh\n sliding = mainSlidingStartFragment.start;\n addSliding(newDetails, sliding);\n }\n }\n }\n track.details = newDetails;\n this.levelLastLoaded = track;\n if (trackId !== currentTrackId) {\n return;\n }\n if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n this.setStartPosition(this.mainDetails || newDetails, sliding);\n }\n\n // trigger handler right now\n this.tick();\n\n // If playlist is misaligned because of bad PDT or drift, delete details to resync with main on reload\n if (newDetails.live && !this.fragCurrent && this.media && this.state === State.IDLE) {\n var foundFrag = findFragmentByPTS(null, newDetails.fragments, this.media.currentTime, 0);\n if (!foundFrag) {\n this.warn('Subtitle playlist not aligned with playback');\n track.details = undefined;\n }\n }\n };\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedData) {\n var _this3 = this;\n var frag = fragLoadedData.frag,\n payload = fragLoadedData.payload;\n var decryptData = frag.decryptdata;\n var hls = this.hls;\n if (this.fragContextChanged(frag)) {\n return;\n }\n // check to see if the payload needs to be decrypted\n if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && decryptData.method === 'AES-128') {\n var startTime = performance.now();\n // decrypt the subtitles\n this.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).catch(function (err) {\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_DECRYPT_ERROR,\n fatal: false,\n error: err,\n reason: err.message,\n frag: frag\n });\n throw err;\n }).then(function (decryptedData) {\n var endTime = performance.now();\n hls.trigger(Events.FRAG_DECRYPTED, {\n frag: frag,\n payload: decryptedData,\n stats: {\n tstart: startTime,\n tdecrypt: endTime\n }\n });\n }).catch(function (err) {\n _this3.warn(err.name + \": \" + err.message);\n _this3.state = State.IDLE;\n });\n }\n };\n _proto.doTick = function doTick() {\n if (!this.media) {\n this.state = State.IDLE;\n return;\n }\n if (this.state === State.IDLE) {\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n var track = levels == null ? void 0 : levels[currentTrackId];\n if (!track || !levels.length || !track.details) {\n return;\n }\n var config = this.config;\n var currentTime = this.getLoadPosition();\n var bufferedInfo = BufferHelper.bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], currentTime, config.maxBufferHole);\n var targetBufferTime = bufferedInfo.end,\n bufferLen = bufferedInfo.len;\n var mainBufferInfo = this.getFwdBufferInfo(this.media, PlaylistLevelType.MAIN);\n var trackDetails = track.details;\n var maxBufLen = this.getMaxBufferLength(mainBufferInfo == null ? void 0 : mainBufferInfo.len) + trackDetails.levelTargetDuration;\n if (bufferLen > maxBufLen) {\n return;\n }\n var fragments = trackDetails.fragments;\n var fragLen = fragments.length;\n var end = trackDetails.edge;\n var foundFrag = null;\n var fragPrevious = this.fragPrevious;\n if (targetBufferTime < end) {\n var tolerance = config.maxFragLookUpTolerance;\n var lookupTolerance = targetBufferTime > end - tolerance ? 0 : tolerance;\n foundFrag = findFragmentByPTS(fragPrevious, fragments, Math.max(fragments[0].start, targetBufferTime), lookupTolerance);\n if (!foundFrag && fragPrevious && fragPrevious.start < fragments[0].start) {\n foundFrag = fragments[0];\n }\n } else {\n foundFrag = fragments[fragLen - 1];\n }\n if (!foundFrag) {\n return;\n }\n foundFrag = this.mapToInitFragWhenRequired(foundFrag);\n if (foundFrag.sn !== 'initSegment') {\n // Load earlier fragment in same discontinuity to make up for misaligned playlists and cues that extend beyond end of segment\n var curSNIdx = foundFrag.sn - trackDetails.startSN;\n var prevFrag = fragments[curSNIdx - 1];\n if (prevFrag && prevFrag.cc === foundFrag.cc && this.fragmentTracker.getState(prevFrag) === FragmentState.NOT_LOADED) {\n foundFrag = prevFrag;\n }\n }\n if (this.fragmentTracker.getState(foundFrag) === FragmentState.NOT_LOADED) {\n // only load if fragment is not loaded\n this.loadFragment(foundFrag, track, targetBufferTime);\n }\n }\n };\n _proto.getMaxBufferLength = function getMaxBufferLength(mainBufferLength) {\n var maxConfigBuffer = _BaseStreamController.prototype.getMaxBufferLength.call(this);\n if (!mainBufferLength) {\n return maxConfigBuffer;\n }\n return Math.max(maxConfigBuffer, mainBufferLength);\n };\n _proto.loadFragment = function loadFragment(frag, level, targetBufferTime) {\n this.fragCurrent = frag;\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag, level);\n } else {\n this.startFragRequested = true;\n _BaseStreamController.prototype.loadFragment.call(this, frag, level, targetBufferTime);\n }\n };\n _createClass(SubtitleStreamController, [{\n key: \"mediaBufferTimeRanges\",\n get: function get() {\n return new BufferableInstance(this.tracksBuffered[this.currentTrackId] || []);\n }\n }]);\n return SubtitleStreamController;\n }(BaseStreamController);\n var BufferableInstance = function BufferableInstance(timeranges) {\n this.buffered = void 0;\n var getRange = function getRange(name, index, length) {\n index = index >>> 0;\n if (index > length - 1) {\n throw new DOMException(\"Failed to execute '\" + name + \"' on 'TimeRanges': The index provided (\" + index + \") is greater than the maximum bound (\" + length + \")\");\n }\n return timeranges[index][name];\n };\n this.buffered = {\n get length() {\n return timeranges.length;\n },\n end: function end(index) {\n return getRange('end', index, timeranges.length);\n },\n start: function start(index) {\n return getRange('start', index, timeranges.length);\n }\n };\n };\n\n var SubtitleTrackController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(SubtitleTrackController, _BasePlaylistControll);\n function SubtitleTrackController(hls) {\n var _this;\n _this = _BasePlaylistControll.call(this, hls, '[subtitle-track-controller]') || this;\n _this.media = null;\n _this.tracks = [];\n _this.groupIds = null;\n _this.tracksInGroup = [];\n _this.trackId = -1;\n _this.currentTrack = null;\n _this.selectDefaultTrack = true;\n _this.queuedDefaultTrack = -1;\n _this.asyncPollTrackChange = function () {\n return _this.pollTrackChange(0);\n };\n _this.useTextTrackPolling = false;\n _this.subtitlePollingInterval = -1;\n _this._subtitleDisplay = true;\n _this.onTextTracksChanged = function () {\n if (!_this.useTextTrackPolling) {\n self.clearInterval(_this.subtitlePollingInterval);\n }\n // Media is undefined when switching streams via loadSource()\n if (!_this.media || !_this.hls.config.renderTextTracksNatively) {\n return;\n }\n var textTrack = null;\n var tracks = filterSubtitleTracks(_this.media.textTracks);\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i].mode === 'hidden') {\n // Do not break in case there is a following track with showing.\n textTrack = tracks[i];\n } else if (tracks[i].mode === 'showing') {\n textTrack = tracks[i];\n break;\n }\n }\n\n // Find internal track index for TextTrack\n var trackId = _this.findTrackForTextTrack(textTrack);\n if (_this.subtitleTrack !== trackId) {\n _this.setSubtitleTrack(trackId);\n }\n };\n _this.registerListeners();\n return _this;\n }\n var _proto = SubtitleTrackController.prototype;\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.tracks.length = 0;\n this.tracksInGroup.length = 0;\n this.currentTrack = null;\n this.onTextTracksChanged = this.asyncPollTrackChange = null;\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.on(Events.ERROR, this.onError, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.off(Events.ERROR, this.onError, this);\n }\n\n // Listen for subtitle track change, then extract the current track ID.\n ;\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n if (!this.media) {\n return;\n }\n if (this.queuedDefaultTrack > -1) {\n this.subtitleTrack = this.queuedDefaultTrack;\n this.queuedDefaultTrack = -1;\n }\n this.useTextTrackPolling = !(this.media.textTracks && 'onchange' in this.media.textTracks);\n if (this.useTextTrackPolling) {\n this.pollTrackChange(500);\n } else {\n this.media.textTracks.addEventListener('change', this.asyncPollTrackChange);\n }\n };\n _proto.pollTrackChange = function pollTrackChange(timeout) {\n self.clearInterval(this.subtitlePollingInterval);\n this.subtitlePollingInterval = self.setInterval(this.onTextTracksChanged, timeout);\n };\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (!this.media) {\n return;\n }\n self.clearInterval(this.subtitlePollingInterval);\n if (!this.useTextTrackPolling) {\n this.media.textTracks.removeEventListener('change', this.asyncPollTrackChange);\n }\n if (this.trackId > -1) {\n this.queuedDefaultTrack = this.trackId;\n }\n var textTracks = filterSubtitleTracks(this.media.textTracks);\n // Clear loaded cues on media detachment from tracks\n textTracks.forEach(function (track) {\n clearCurrentCues(track);\n });\n // Disable all subtitle tracks before detachment so when reattached only tracks in that content are enabled.\n this.subtitleTrack = -1;\n this.media = null;\n };\n _proto.onManifestLoading = function onManifestLoading() {\n this.tracks = [];\n this.groupIds = null;\n this.tracksInGroup = [];\n this.trackId = -1;\n this.currentTrack = null;\n this.selectDefaultTrack = true;\n }\n\n // Fired whenever a new manifest is loaded.\n ;\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n this.tracks = data.subtitleTracks;\n };\n _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(event, data) {\n var id = data.id,\n groupId = data.groupId,\n details = data.details;\n var trackInActiveGroup = this.tracksInGroup[id];\n if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) {\n this.warn(\"Subtitle track with id:\" + id + \" and group:\" + groupId + \" not found in active group \" + (trackInActiveGroup == null ? void 0 : trackInActiveGroup.groupId));\n return;\n }\n var curDetails = trackInActiveGroup.details;\n trackInActiveGroup.details = data.details;\n this.log(\"Subtitle track \" + id + \" \\\"\" + trackInActiveGroup.name + \"\\\" lang:\" + trackInActiveGroup.lang + \" group:\" + groupId + \" loaded [\" + details.startSN + \"-\" + details.endSN + \"]\");\n if (id === this.trackId) {\n this.playlistLoaded(id, data, curDetails);\n }\n };\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n this.switchLevel(data.level);\n };\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.switchLevel(data.level);\n };\n _proto.switchLevel = function switchLevel(levelIndex) {\n var levelInfo = this.hls.levels[levelIndex];\n if (!levelInfo) {\n return;\n }\n var subtitleGroups = levelInfo.subtitleGroups || null;\n var currentGroups = this.groupIds;\n var currentTrack = this.currentTrack;\n if (!subtitleGroups || (currentGroups == null ? void 0 : currentGroups.length) !== (subtitleGroups == null ? void 0 : subtitleGroups.length) || subtitleGroups != null && subtitleGroups.some(function (groupId) {\n return (currentGroups == null ? void 0 : currentGroups.indexOf(groupId)) === -1;\n })) {\n this.groupIds = subtitleGroups;\n this.trackId = -1;\n this.currentTrack = null;\n var subtitleTracks = this.tracks.filter(function (track) {\n return !subtitleGroups || subtitleGroups.indexOf(track.groupId) !== -1;\n });\n if (subtitleTracks.length) {\n // Disable selectDefaultTrack if there are no default tracks\n if (this.selectDefaultTrack && !subtitleTracks.some(function (track) {\n return track.default;\n })) {\n this.selectDefaultTrack = false;\n }\n // track.id should match hls.audioTracks index\n subtitleTracks.forEach(function (track, i) {\n track.id = i;\n });\n } else if (!currentTrack && !this.tracksInGroup.length) {\n // Do not dispatch SUBTITLE_TRACKS_UPDATED when there were and are no tracks\n return;\n }\n this.tracksInGroup = subtitleTracks;\n\n // Find preferred track\n var subtitlePreference = this.hls.config.subtitlePreference;\n if (!currentTrack && subtitlePreference) {\n this.selectDefaultTrack = false;\n var groupIndex = findMatchingOption(subtitlePreference, subtitleTracks);\n if (groupIndex > -1) {\n currentTrack = subtitleTracks[groupIndex];\n } else {\n var allIndex = findMatchingOption(subtitlePreference, this.tracks);\n currentTrack = this.tracks[allIndex];\n }\n }\n\n // Select initial track\n var trackId = this.findTrackId(currentTrack);\n if (trackId === -1 && currentTrack) {\n trackId = this.findTrackId(null);\n }\n\n // Dispatch events and load track if needed\n var subtitleTracksUpdated = {\n subtitleTracks: subtitleTracks\n };\n this.log(\"Updating subtitle tracks, \" + subtitleTracks.length + \" track(s) found in \\\"\" + (subtitleGroups == null ? void 0 : subtitleGroups.join(',')) + \"\\\" group-id\");\n this.hls.trigger(Events.SUBTITLE_TRACKS_UPDATED, subtitleTracksUpdated);\n if (trackId !== -1 && this.trackId === -1) {\n this.setSubtitleTrack(trackId);\n }\n } else if (this.shouldReloadPlaylist(currentTrack)) {\n // Retry playlist loading if no playlist is or has been loaded yet\n this.setSubtitleTrack(this.trackId);\n }\n };\n _proto.findTrackId = function findTrackId(currentTrack) {\n var tracks = this.tracksInGroup;\n var selectDefault = this.selectDefaultTrack;\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n if (selectDefault && !track.default || !selectDefault && !currentTrack) {\n continue;\n }\n if (!currentTrack || matchesOption(track, currentTrack)) {\n return i;\n }\n }\n if (currentTrack) {\n for (var _i = 0; _i < tracks.length; _i++) {\n var _track = tracks[_i];\n if (mediaAttributesIdentical(currentTrack.attrs, _track.attrs, ['LANGUAGE', 'ASSOC-LANGUAGE', 'CHARACTERISTICS'])) {\n return _i;\n }\n }\n for (var _i2 = 0; _i2 < tracks.length; _i2++) {\n var _track2 = tracks[_i2];\n if (mediaAttributesIdentical(currentTrack.attrs, _track2.attrs, ['LANGUAGE'])) {\n return _i2;\n }\n }\n }\n return -1;\n };\n _proto.findTrackForTextTrack = function findTrackForTextTrack(textTrack) {\n if (textTrack) {\n var tracks = this.tracksInGroup;\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n if (subtitleTrackMatchesTextTrack(track, textTrack)) {\n return i;\n }\n }\n }\n return -1;\n };\n _proto.onError = function onError(event, data) {\n if (data.fatal || !data.context) {\n return;\n }\n if (data.context.type === PlaylistContextType.SUBTITLE_TRACK && data.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(data.context.groupId) !== -1)) {\n this.checkRetry(data);\n }\n };\n _proto.setSubtitleOption = function setSubtitleOption(subtitleOption) {\n this.hls.config.subtitlePreference = subtitleOption;\n if (subtitleOption) {\n var allSubtitleTracks = this.allSubtitleTracks;\n this.selectDefaultTrack = false;\n if (allSubtitleTracks.length) {\n // First see if current option matches (no switch op)\n var currentTrack = this.currentTrack;\n if (currentTrack && matchesOption(subtitleOption, currentTrack)) {\n return currentTrack;\n }\n // Find option in current group\n var groupIndex = findMatchingOption(subtitleOption, this.tracksInGroup);\n if (groupIndex > -1) {\n var track = this.tracksInGroup[groupIndex];\n this.setSubtitleTrack(groupIndex);\n return track;\n } else if (currentTrack) {\n // If this is not the initial selection return null\n // option should have matched one in active group\n return null;\n } else {\n // Find the option in all tracks for initial selection\n var allIndex = findMatchingOption(subtitleOption, allSubtitleTracks);\n if (allIndex > -1) {\n return allSubtitleTracks[allIndex];\n }\n }\n }\n }\n return null;\n };\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n _BasePlaylistControll.prototype.loadPlaylist.call(this);\n var currentTrack = this.currentTrack;\n if (this.shouldLoadPlaylist(currentTrack) && currentTrack) {\n var id = currentTrack.id;\n var groupId = currentTrack.groupId;\n var url = currentTrack.url;\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n }\n this.log(\"Loading subtitle playlist for id \" + id);\n this.hls.trigger(Events.SUBTITLE_TRACK_LOADING, {\n url: url,\n id: id,\n groupId: groupId,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n }\n\n /**\n * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.\n * This operates on the DOM textTracks.\n * A value of -1 will disable all subtitle tracks.\n */;\n _proto.toggleTrackModes = function toggleTrackModes() {\n var media = this.media;\n if (!media) {\n return;\n }\n var textTracks = filterSubtitleTracks(media.textTracks);\n var currentTrack = this.currentTrack;\n var nextTrack;\n if (currentTrack) {\n nextTrack = textTracks.filter(function (textTrack) {\n return subtitleTrackMatchesTextTrack(currentTrack, textTrack);\n })[0];\n if (!nextTrack) {\n this.warn(\"Unable to find subtitle TextTrack with name \\\"\" + currentTrack.name + \"\\\" and language \\\"\" + currentTrack.lang + \"\\\"\");\n }\n }\n [].slice.call(textTracks).forEach(function (track) {\n if (track.mode !== 'disabled' && track !== nextTrack) {\n track.mode = 'disabled';\n }\n });\n if (nextTrack) {\n var mode = this.subtitleDisplay ? 'showing' : 'hidden';\n if (nextTrack.mode !== mode) {\n nextTrack.mode = mode;\n }\n }\n }\n\n /**\n * This method is responsible for validating the subtitle index and periodically reloading if live.\n * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.\n */;\n _proto.setSubtitleTrack = function setSubtitleTrack(newId) {\n var tracks = this.tracksInGroup;\n\n // setting this.subtitleTrack will trigger internal logic\n // if media has not been attached yet, it will fail\n // we keep a reference to the default track id\n // and we'll set subtitleTrack when onMediaAttached is triggered\n if (!this.media) {\n this.queuedDefaultTrack = newId;\n return;\n }\n\n // exit if track id as already set or invalid\n if (newId < -1 || newId >= tracks.length || !isFiniteNumber(newId)) {\n this.warn(\"Invalid subtitle track id: \" + newId);\n return;\n }\n\n // stopping live reloading timer if any\n this.clearTimer();\n this.selectDefaultTrack = false;\n var lastTrack = this.currentTrack;\n var track = tracks[newId] || null;\n this.trackId = newId;\n this.currentTrack = track;\n this.toggleTrackModes();\n if (!track) {\n // switch to -1\n this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, {\n id: newId\n });\n return;\n }\n var trackLoaded = !!track.details && !track.details.live;\n if (newId === this.trackId && track === lastTrack && trackLoaded) {\n return;\n }\n this.log(\"Switching to subtitle-track \" + newId + (track ? \" \\\"\" + track.name + \"\\\" lang:\" + track.lang + \" group:\" + track.groupId : ''));\n var id = track.id,\n _track$groupId = track.groupId,\n groupId = _track$groupId === void 0 ? '' : _track$groupId,\n name = track.name,\n type = track.type,\n url = track.url;\n this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, {\n id: id,\n groupId: groupId,\n name: name,\n type: type,\n url: url\n });\n var hlsUrlParameters = this.switchParams(track.url, lastTrack == null ? void 0 : lastTrack.details, track.details);\n this.loadPlaylist(hlsUrlParameters);\n };\n _createClass(SubtitleTrackController, [{\n key: \"subtitleDisplay\",\n get: function get() {\n return this._subtitleDisplay;\n },\n set: function set(value) {\n this._subtitleDisplay = value;\n if (this.trackId > -1) {\n this.toggleTrackModes();\n }\n }\n }, {\n key: \"allSubtitleTracks\",\n get: function get() {\n return this.tracks;\n }\n\n /** get alternate subtitle tracks list from playlist **/\n }, {\n key: \"subtitleTracks\",\n get: function get() {\n return this.tracksInGroup;\n }\n\n /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/\n }, {\n key: \"subtitleTrack\",\n get: function get() {\n return this.trackId;\n },\n set: function set(newId) {\n this.selectDefaultTrack = false;\n this.setSubtitleTrack(newId);\n }\n }]);\n return SubtitleTrackController;\n }(BasePlaylistController);\n\n var BufferOperationQueue = /*#__PURE__*/function () {\n function BufferOperationQueue(sourceBufferReference) {\n this.buffers = void 0;\n this.queues = {\n video: [],\n audio: [],\n audiovideo: []\n };\n this.buffers = sourceBufferReference;\n }\n var _proto = BufferOperationQueue.prototype;\n _proto.append = function append(operation, type, pending) {\n var queue = this.queues[type];\n queue.push(operation);\n if (queue.length === 1 && !pending) {\n this.executeNext(type);\n }\n };\n _proto.insertAbort = function insertAbort(operation, type) {\n var queue = this.queues[type];\n queue.unshift(operation);\n this.executeNext(type);\n };\n _proto.appendBlocker = function appendBlocker(type) {\n var execute;\n var promise = new Promise(function (resolve) {\n execute = resolve;\n });\n var operation = {\n execute: execute,\n onStart: function onStart() {},\n onComplete: function onComplete() {},\n onError: function onError() {}\n };\n this.append(operation, type);\n return promise;\n };\n _proto.executeNext = function executeNext(type) {\n var queue = this.queues[type];\n if (queue.length) {\n var operation = queue[0];\n try {\n // Operations are expected to result in an 'updateend' event being fired. If not, the queue will lock. Operations\n // which do not end with this event must call _onSBUpdateEnd manually\n operation.execute();\n } catch (error) {\n logger.warn(\"[buffer-operation-queue]: Exception executing \\\"\" + type + \"\\\" SourceBuffer operation: \" + error);\n operation.onError(error);\n\n // Only shift the current operation off, otherwise the updateend handler will do this for us\n var sb = this.buffers[type];\n if (!(sb != null && sb.updating)) {\n this.shiftAndExecuteNext(type);\n }\n }\n }\n };\n _proto.shiftAndExecuteNext = function shiftAndExecuteNext(type) {\n this.queues[type].shift();\n this.executeNext(type);\n };\n _proto.current = function current(type) {\n return this.queues[type][0];\n };\n return BufferOperationQueue;\n }();\n\n var VIDEO_CODEC_PROFILE_REPLACE = /(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\\.[^.,]+)+/;\n var BufferController = /*#__PURE__*/function () {\n function BufferController(hls) {\n var _this = this;\n // The level details used to determine duration, target-duration and live\n this.details = null;\n // cache the self generated object url to detect hijack of video tag\n this._objectUrl = null;\n // A queue of buffer operations which require the SourceBuffer to not be updating upon execution\n this.operationQueue = void 0;\n // References to event listeners for each SourceBuffer, so that they can be referenced for event removal\n this.listeners = void 0;\n this.hls = void 0;\n // The number of BUFFER_CODEC events received before any sourceBuffers are created\n this.bufferCodecEventsExpected = 0;\n // The total number of BUFFER_CODEC events received\n this._bufferCodecEventsTotal = 0;\n // A reference to the attached media element\n this.media = null;\n // A reference to the active media source\n this.mediaSource = null;\n // Last MP3 audio chunk appended\n this.lastMpegAudioChunk = null;\n this.appendSource = void 0;\n // counters\n this.appendErrors = {\n audio: 0,\n video: 0,\n audiovideo: 0\n };\n this.tracks = {};\n this.pendingTracks = {};\n this.sourceBuffer = void 0;\n this.log = void 0;\n this.warn = void 0;\n this.error = void 0;\n this._onEndStreaming = function (event) {\n if (!_this.hls) {\n return;\n }\n _this.hls.pauseBuffering();\n };\n this._onStartStreaming = function (event) {\n if (!_this.hls) {\n return;\n }\n _this.hls.resumeBuffering();\n };\n // Keep as arrow functions so that we can directly reference these functions directly as event listeners\n this._onMediaSourceOpen = function () {\n var media = _this.media,\n mediaSource = _this.mediaSource;\n _this.log('Media source opened');\n if (media) {\n media.removeEventListener('emptied', _this._onMediaEmptied);\n _this.updateMediaElementDuration();\n _this.hls.trigger(Events.MEDIA_ATTACHED, {\n media: media,\n mediaSource: mediaSource\n });\n }\n if (mediaSource) {\n // once received, don't listen anymore to sourceopen event\n mediaSource.removeEventListener('sourceopen', _this._onMediaSourceOpen);\n }\n _this.checkPendingTracks();\n };\n this._onMediaSourceClose = function () {\n _this.log('Media source closed');\n };\n this._onMediaSourceEnded = function () {\n _this.log('Media source ended');\n };\n this._onMediaEmptied = function () {\n var mediaSrc = _this.mediaSrc,\n _objectUrl = _this._objectUrl;\n if (mediaSrc !== _objectUrl) {\n logger.error(\"Media element src was set while attaching MediaSource (\" + _objectUrl + \" > \" + mediaSrc + \")\");\n }\n };\n this.hls = hls;\n var logPrefix = '[buffer-controller]';\n this.appendSource = isManagedMediaSource(getMediaSource(hls.config.preferManagedMediaSource));\n this.log = logger.log.bind(logger, logPrefix);\n this.warn = logger.warn.bind(logger, logPrefix);\n this.error = logger.error.bind(logger, logPrefix);\n this._initSourceBuffer();\n this.registerListeners();\n }\n var _proto = BufferController.prototype;\n _proto.hasSourceTypes = function hasSourceTypes() {\n return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0;\n };\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.details = null;\n this.lastMpegAudioChunk = null;\n // @ts-ignore\n this.hls = null;\n };\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.BUFFER_RESET, this.onBufferReset, this);\n hls.on(Events.BUFFER_APPENDING, this.onBufferAppending, this);\n hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n hls.on(Events.BUFFER_EOS, this.onBufferEos, this);\n hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n hls.on(Events.FRAG_PARSED, this.onFragParsed, this);\n hls.on(Events.FRAG_CHANGED, this.onFragChanged, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.BUFFER_RESET, this.onBufferReset, this);\n hls.off(Events.BUFFER_APPENDING, this.onBufferAppending, this);\n hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n hls.off(Events.BUFFER_EOS, this.onBufferEos, this);\n hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n hls.off(Events.FRAG_PARSED, this.onFragParsed, this);\n hls.off(Events.FRAG_CHANGED, this.onFragChanged, this);\n };\n _proto._initSourceBuffer = function _initSourceBuffer() {\n this.sourceBuffer = {};\n this.operationQueue = new BufferOperationQueue(this.sourceBuffer);\n this.listeners = {\n audio: [],\n video: [],\n audiovideo: []\n };\n this.appendErrors = {\n audio: 0,\n video: 0,\n audiovideo: 0\n };\n this.lastMpegAudioChunk = null;\n };\n _proto.onManifestLoading = function onManifestLoading() {\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = 0;\n this.details = null;\n };\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n // in case of alt audio 2 BUFFER_CODECS events will be triggered, one per stream controller\n // sourcebuffers will be created all at once when the expected nb of tracks will be reached\n // in case alt audio is not used, only one BUFFER_CODEC event will be fired from main stream controller\n // it will contain the expected nb of source buffers, no need to compute it\n var codecEvents = 2;\n if (data.audio && !data.video || !data.altAudio || !true) {\n codecEvents = 1;\n }\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = codecEvents;\n this.log(this.bufferCodecEventsExpected + \" bufferCodec event(s) expected\");\n };\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n var media = this.media = data.media;\n var MediaSource = getMediaSource(this.appendSource);\n if (media && MediaSource) {\n var _ms$constructor;\n var ms = this.mediaSource = new MediaSource();\n this.log(\"created media source: \" + ((_ms$constructor = ms.constructor) == null ? void 0 : _ms$constructor.name));\n // MediaSource listeners are arrow functions with a lexical scope, and do not need to be bound\n ms.addEventListener('sourceopen', this._onMediaSourceOpen);\n ms.addEventListener('sourceended', this._onMediaSourceEnded);\n ms.addEventListener('sourceclose', this._onMediaSourceClose);\n if (this.appendSource) {\n ms.addEventListener('startstreaming', this._onStartStreaming);\n ms.addEventListener('endstreaming', this._onEndStreaming);\n }\n\n // cache the locally generated object url\n var objectUrl = this._objectUrl = self.URL.createObjectURL(ms);\n // link video and media Source\n if (this.appendSource) {\n try {\n media.removeAttribute('src');\n // ManagedMediaSource will not open without disableRemotePlayback set to false or source alternatives\n var MMS = self.ManagedMediaSource;\n media.disableRemotePlayback = media.disableRemotePlayback || MMS && ms instanceof MMS;\n removeSourceChildren(media);\n addSource(media, objectUrl);\n media.load();\n } catch (error) {\n media.src = objectUrl;\n }\n } else {\n media.src = objectUrl;\n }\n media.addEventListener('emptied', this._onMediaEmptied);\n }\n };\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media,\n mediaSource = this.mediaSource,\n _objectUrl = this._objectUrl;\n if (mediaSource) {\n this.log('media source detaching');\n if (mediaSource.readyState === 'open') {\n try {\n // endOfStream could trigger exception if any sourcebuffer is in updating state\n // we don't really care about checking sourcebuffer state here,\n // as we are anyway detaching the MediaSource\n // let's just avoid this exception to propagate\n mediaSource.endOfStream();\n } catch (err) {\n this.warn(\"onMediaDetaching: \" + err.message + \" while calling endOfStream\");\n }\n }\n // Clean up the SourceBuffers by invoking onBufferReset\n this.onBufferReset();\n mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);\n mediaSource.removeEventListener('sourceended', this._onMediaSourceEnded);\n mediaSource.removeEventListener('sourceclose', this._onMediaSourceClose);\n if (this.appendSource) {\n mediaSource.removeEventListener('startstreaming', this._onStartStreaming);\n mediaSource.removeEventListener('endstreaming', this._onEndStreaming);\n }\n\n // Detach properly the MediaSource from the HTMLMediaElement as\n // suggested in https://github.com/w3c/media-source/issues/53.\n if (media) {\n media.removeEventListener('emptied', this._onMediaEmptied);\n if (_objectUrl) {\n self.URL.revokeObjectURL(_objectUrl);\n }\n\n // clean up video tag src only if it's our own url. some external libraries might\n // hijack the video tag and change its 'src' without destroying the Hls instance first\n if (this.mediaSrc === _objectUrl) {\n media.removeAttribute('src');\n if (this.appendSource) {\n removeSourceChildren(media);\n }\n media.load();\n } else {\n this.warn('media|source.src was changed by a third party - skip cleanup');\n }\n }\n this.mediaSource = null;\n this.media = null;\n this._objectUrl = null;\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal;\n this.pendingTracks = {};\n this.tracks = {};\n }\n this.hls.trigger(Events.MEDIA_DETACHED, undefined);\n };\n _proto.onBufferReset = function onBufferReset() {\n var _this2 = this;\n this.getSourceBufferTypes().forEach(function (type) {\n _this2.resetBuffer(type);\n });\n this._initSourceBuffer();\n };\n _proto.resetBuffer = function resetBuffer(type) {\n var sb = this.sourceBuffer[type];\n try {\n if (sb) {\n var _this$mediaSource;\n this.removeBufferListeners(type);\n // Synchronously remove the SB from the map before the next call in order to prevent an async function from\n // accessing it\n this.sourceBuffer[type] = undefined;\n if ((_this$mediaSource = this.mediaSource) != null && _this$mediaSource.sourceBuffers.length) {\n this.mediaSource.removeSourceBuffer(sb);\n }\n }\n } catch (err) {\n this.warn(\"onBufferReset \" + type, err);\n }\n };\n _proto.onBufferCodecs = function onBufferCodecs(event, data) {\n var _this3 = this;\n var sourceBufferCount = this.getSourceBufferTypes().length;\n var trackNames = Object.keys(data);\n trackNames.forEach(function (trackName) {\n if (sourceBufferCount) {\n // check if SourceBuffer codec needs to change\n var track = _this3.tracks[trackName];\n if (track && typeof track.buffer.changeType === 'function') {\n var _trackCodec;\n var _data$trackName = data[trackName],\n id = _data$trackName.id,\n codec = _data$trackName.codec,\n levelCodec = _data$trackName.levelCodec,\n container = _data$trackName.container,\n metadata = _data$trackName.metadata;\n var currentCodecFull = pickMostCompleteCodecName(track.codec, track.levelCodec);\n var currentCodec = currentCodecFull == null ? void 0 : currentCodecFull.replace(VIDEO_CODEC_PROFILE_REPLACE, '$1');\n var trackCodec = pickMostCompleteCodecName(codec, levelCodec);\n var nextCodec = (_trackCodec = trackCodec) == null ? void 0 : _trackCodec.replace(VIDEO_CODEC_PROFILE_REPLACE, '$1');\n if (trackCodec && currentCodec !== nextCodec) {\n if (trackName.slice(0, 5) === 'audio') {\n trackCodec = getCodecCompatibleName(trackCodec, _this3.appendSource);\n }\n var mimeType = container + \";codecs=\" + trackCodec;\n _this3.appendChangeType(trackName, mimeType);\n _this3.log(\"switching codec \" + currentCodecFull + \" to \" + trackCodec);\n _this3.tracks[trackName] = {\n buffer: track.buffer,\n codec: codec,\n container: container,\n levelCodec: levelCodec,\n metadata: metadata,\n id: id\n };\n }\n }\n } else {\n // if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks\n _this3.pendingTracks[trackName] = data[trackName];\n }\n });\n\n // if sourcebuffers already created, do nothing ...\n if (sourceBufferCount) {\n return;\n }\n var bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0);\n if (this.bufferCodecEventsExpected !== bufferCodecEventsExpected) {\n this.log(bufferCodecEventsExpected + \" bufferCodec event(s) expected \" + trackNames.join(','));\n this.bufferCodecEventsExpected = bufferCodecEventsExpected;\n }\n if (this.mediaSource && this.mediaSource.readyState === 'open') {\n this.checkPendingTracks();\n }\n };\n _proto.appendChangeType = function appendChangeType(type, mimeType) {\n var _this4 = this;\n var operationQueue = this.operationQueue;\n var operation = {\n execute: function execute() {\n var sb = _this4.sourceBuffer[type];\n if (sb) {\n _this4.log(\"changing \" + type + \" sourceBuffer type to \" + mimeType);\n sb.changeType(mimeType);\n }\n operationQueue.shiftAndExecuteNext(type);\n },\n onStart: function onStart() {},\n onComplete: function onComplete() {},\n onError: function onError(error) {\n _this4.warn(\"Failed to change \" + type + \" SourceBuffer type\", error);\n }\n };\n operationQueue.append(operation, type, !!this.pendingTracks[type]);\n };\n _proto.onBufferAppending = function onBufferAppending(event, eventData) {\n var _this5 = this;\n var hls = this.hls,\n operationQueue = this.operationQueue,\n tracks = this.tracks;\n var data = eventData.data,\n type = eventData.type,\n frag = eventData.frag,\n part = eventData.part,\n chunkMeta = eventData.chunkMeta;\n var chunkStats = chunkMeta.buffering[type];\n var bufferAppendingStart = self.performance.now();\n chunkStats.start = bufferAppendingStart;\n var fragBuffering = frag.stats.buffering;\n var partBuffering = part ? part.stats.buffering : null;\n if (fragBuffering.start === 0) {\n fragBuffering.start = bufferAppendingStart;\n }\n if (partBuffering && partBuffering.start === 0) {\n partBuffering.start = bufferAppendingStart;\n }\n\n // TODO: Only update timestampOffset when audio/mpeg fragment or part is not contiguous with previously appended\n // Adjusting `SourceBuffer.timestampOffset` (desired point in the timeline where the next frames should be appended)\n // in Chrome browser when we detect MPEG audio container and time delta between level PTS and `SourceBuffer.timestampOffset`\n // is greater than 100ms (this is enough to handle seek for VOD or level change for LIVE videos).\n // More info here: https://github.com/video-dev/hls.js/issues/332#issuecomment-257986486\n var audioTrack = tracks.audio;\n var checkTimestampOffset = false;\n if (type === 'audio' && (audioTrack == null ? void 0 : audioTrack.container) === 'audio/mpeg') {\n checkTimestampOffset = !this.lastMpegAudioChunk || chunkMeta.id === 1 || this.lastMpegAudioChunk.sn !== chunkMeta.sn;\n this.lastMpegAudioChunk = chunkMeta;\n }\n var fragStart = frag.start;\n var operation = {\n execute: function execute() {\n chunkStats.executeStart = self.performance.now();\n if (checkTimestampOffset) {\n var sb = _this5.sourceBuffer[type];\n if (sb) {\n var delta = fragStart - sb.timestampOffset;\n if (Math.abs(delta) >= 0.1) {\n _this5.log(\"Updating audio SourceBuffer timestampOffset to \" + fragStart + \" (delta: \" + delta + \") sn: \" + frag.sn + \")\");\n sb.timestampOffset = fragStart;\n }\n }\n }\n _this5.appendExecutor(data, type);\n },\n onStart: function onStart() {\n // logger.debug(`[buffer-controller]: ${type} SourceBuffer updatestart`);\n },\n onComplete: function onComplete() {\n // logger.debug(`[buffer-controller]: ${type} SourceBuffer updateend`);\n var end = self.performance.now();\n chunkStats.executeEnd = chunkStats.end = end;\n if (fragBuffering.first === 0) {\n fragBuffering.first = end;\n }\n if (partBuffering && partBuffering.first === 0) {\n partBuffering.first = end;\n }\n var sourceBuffer = _this5.sourceBuffer;\n var timeRanges = {};\n for (var _type in sourceBuffer) {\n timeRanges[_type] = BufferHelper.getBuffered(sourceBuffer[_type]);\n }\n _this5.appendErrors[type] = 0;\n if (type === 'audio' || type === 'video') {\n _this5.appendErrors.audiovideo = 0;\n } else {\n _this5.appendErrors.audio = 0;\n _this5.appendErrors.video = 0;\n }\n _this5.hls.trigger(Events.BUFFER_APPENDED, {\n type: type,\n frag: frag,\n part: part,\n chunkMeta: chunkMeta,\n parent: frag.type,\n timeRanges: timeRanges\n });\n },\n onError: function onError(error) {\n // in case any error occured while appending, put back segment in segments table\n var event = {\n type: ErrorTypes.MEDIA_ERROR,\n parent: frag.type,\n details: ErrorDetails.BUFFER_APPEND_ERROR,\n sourceBufferName: type,\n frag: frag,\n part: part,\n chunkMeta: chunkMeta,\n error: error,\n err: error,\n fatal: false\n };\n if (error.code === DOMException.QUOTA_EXCEEDED_ERR) {\n // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror\n // let's stop appending any segments, and report BUFFER_FULL_ERROR error\n event.details = ErrorDetails.BUFFER_FULL_ERROR;\n } else {\n var appendErrorCount = ++_this5.appendErrors[type];\n event.details = ErrorDetails.BUFFER_APPEND_ERROR;\n /* with UHD content, we could get loop of quota exceeded error until\n browser is able to evict some data from sourcebuffer. Retrying can help recover.\n */\n _this5.warn(\"Failed \" + appendErrorCount + \"/\" + hls.config.appendErrorMaxRetry + \" times to append segment in \\\"\" + type + \"\\\" sourceBuffer\");\n if (appendErrorCount >= hls.config.appendErrorMaxRetry) {\n event.fatal = true;\n }\n }\n hls.trigger(Events.ERROR, event);\n }\n };\n operationQueue.append(operation, type, !!this.pendingTracks[type]);\n };\n _proto.onBufferFlushing = function onBufferFlushing(event, data) {\n var _this6 = this;\n var operationQueue = this.operationQueue;\n var flushOperation = function flushOperation(type) {\n return {\n execute: _this6.removeExecutor.bind(_this6, type, data.startOffset, data.endOffset),\n onStart: function onStart() {\n // logger.debug(`[buffer-controller]: Started flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n },\n onComplete: function onComplete() {\n // logger.debug(`[buffer-controller]: Finished flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n _this6.hls.trigger(Events.BUFFER_FLUSHED, {\n type: type\n });\n },\n onError: function onError(error) {\n _this6.warn(\"Failed to remove from \" + type + \" SourceBuffer\", error);\n }\n };\n };\n if (data.type) {\n operationQueue.append(flushOperation(data.type), data.type);\n } else {\n this.getSourceBufferTypes().forEach(function (type) {\n operationQueue.append(flushOperation(type), type);\n });\n }\n };\n _proto.onFragParsed = function onFragParsed(event, data) {\n var _this7 = this;\n var frag = data.frag,\n part = data.part;\n var buffersAppendedTo = [];\n var elementaryStreams = part ? part.elementaryStreams : frag.elementaryStreams;\n if (elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO]) {\n buffersAppendedTo.push('audiovideo');\n } else {\n if (elementaryStreams[ElementaryStreamTypes.AUDIO]) {\n buffersAppendedTo.push('audio');\n }\n if (elementaryStreams[ElementaryStreamTypes.VIDEO]) {\n buffersAppendedTo.push('video');\n }\n }\n var onUnblocked = function onUnblocked() {\n var now = self.performance.now();\n frag.stats.buffering.end = now;\n if (part) {\n part.stats.buffering.end = now;\n }\n var stats = part ? part.stats : frag.stats;\n _this7.hls.trigger(Events.FRAG_BUFFERED, {\n frag: frag,\n part: part,\n stats: stats,\n id: frag.type\n });\n };\n if (buffersAppendedTo.length === 0) {\n this.warn(\"Fragments must have at least one ElementaryStreamType set. type: \" + frag.type + \" level: \" + frag.level + \" sn: \" + frag.sn);\n }\n this.blockBuffers(onUnblocked, buffersAppendedTo);\n };\n _proto.onFragChanged = function onFragChanged(event, data) {\n this.trimBuffers();\n }\n\n // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos()\n // an undefined data.type will mark all buffers as EOS.\n ;\n _proto.onBufferEos = function onBufferEos(event, data) {\n var _this8 = this;\n var ended = this.getSourceBufferTypes().reduce(function (acc, type) {\n var sb = _this8.sourceBuffer[type];\n if (sb && (!data.type || data.type === type)) {\n sb.ending = true;\n if (!sb.ended) {\n sb.ended = true;\n _this8.log(type + \" sourceBuffer now EOS\");\n }\n }\n return acc && !!(!sb || sb.ended);\n }, true);\n if (ended) {\n this.log(\"Queueing mediaSource.endOfStream()\");\n this.blockBuffers(function () {\n _this8.getSourceBufferTypes().forEach(function (type) {\n var sb = _this8.sourceBuffer[type];\n if (sb) {\n sb.ending = false;\n }\n });\n var mediaSource = _this8.mediaSource;\n if (!mediaSource || mediaSource.readyState !== 'open') {\n if (mediaSource) {\n _this8.log(\"Could not call mediaSource.endOfStream(). mediaSource.readyState: \" + mediaSource.readyState);\n }\n return;\n }\n _this8.log(\"Calling mediaSource.endOfStream()\");\n // Allow this to throw and be caught by the enqueueing function\n mediaSource.endOfStream();\n });\n }\n };\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref) {\n var details = _ref.details;\n if (!details.fragments.length) {\n return;\n }\n this.details = details;\n if (this.getSourceBufferTypes().length) {\n this.blockBuffers(this.updateMediaElementDuration.bind(this));\n } else {\n this.updateMediaElementDuration();\n }\n };\n _proto.trimBuffers = function trimBuffers() {\n var hls = this.hls,\n details = this.details,\n media = this.media;\n if (!media || details === null) {\n return;\n }\n var sourceBufferTypes = this.getSourceBufferTypes();\n if (!sourceBufferTypes.length) {\n return;\n }\n var config = hls.config;\n var currentTime = media.currentTime;\n var targetDuration = details.levelTargetDuration;\n\n // Support for deprecated liveBackBufferLength\n var backBufferLength = details.live && config.liveBackBufferLength !== null ? config.liveBackBufferLength : config.backBufferLength;\n if (isFiniteNumber(backBufferLength) && backBufferLength > 0) {\n var maxBackBufferLength = Math.max(backBufferLength, targetDuration);\n var targetBackBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration - maxBackBufferLength;\n this.flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition);\n }\n if (isFiniteNumber(config.frontBufferFlushThreshold) && config.frontBufferFlushThreshold > 0) {\n var frontBufferLength = Math.max(config.maxBufferLength, config.frontBufferFlushThreshold);\n var maxFrontBufferLength = Math.max(frontBufferLength, targetDuration);\n var targetFrontBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration + maxFrontBufferLength;\n this.flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition);\n }\n };\n _proto.flushBackBuffer = function flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition) {\n var _this9 = this;\n var details = this.details,\n sourceBuffer = this.sourceBuffer;\n var sourceBufferTypes = this.getSourceBufferTypes();\n sourceBufferTypes.forEach(function (type) {\n var sb = sourceBuffer[type];\n if (sb) {\n var buffered = BufferHelper.getBuffered(sb);\n // when target buffer start exceeds actual buffer start\n if (buffered.length > 0 && targetBackBufferPosition > buffered.start(0)) {\n _this9.hls.trigger(Events.BACK_BUFFER_REACHED, {\n bufferEnd: targetBackBufferPosition\n });\n\n // Support for deprecated event:\n if (details != null && details.live) {\n _this9.hls.trigger(Events.LIVE_BACK_BUFFER_REACHED, {\n bufferEnd: targetBackBufferPosition\n });\n } else if (sb.ended && buffered.end(buffered.length - 1) - currentTime < targetDuration * 2) {\n _this9.log(\"Cannot flush \" + type + \" back buffer while SourceBuffer is in ended state\");\n return;\n }\n _this9.hls.trigger(Events.BUFFER_FLUSHING, {\n startOffset: 0,\n endOffset: targetBackBufferPosition,\n type: type\n });\n }\n }\n });\n };\n _proto.flushFrontBuffer = function flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition) {\n var _this10 = this;\n var sourceBuffer = this.sourceBuffer;\n var sourceBufferTypes = this.getSourceBufferTypes();\n sourceBufferTypes.forEach(function (type) {\n var sb = sourceBuffer[type];\n if (sb) {\n var buffered = BufferHelper.getBuffered(sb);\n var numBufferedRanges = buffered.length;\n // The buffer is either empty or contiguous\n if (numBufferedRanges < 2) {\n return;\n }\n var bufferStart = buffered.start(numBufferedRanges - 1);\n var bufferEnd = buffered.end(numBufferedRanges - 1);\n // No flush if we can tolerate the current buffer length or the current buffer range we would flush is contiguous with current position\n if (targetFrontBufferPosition > bufferStart || currentTime >= bufferStart && currentTime <= bufferEnd) {\n return;\n } else if (sb.ended && currentTime - bufferEnd < 2 * targetDuration) {\n _this10.log(\"Cannot flush \" + type + \" front buffer while SourceBuffer is in ended state\");\n return;\n }\n _this10.hls.trigger(Events.BUFFER_FLUSHING, {\n startOffset: bufferStart,\n endOffset: Infinity,\n type: type\n });\n }\n });\n }\n\n /**\n * Update Media Source duration to current level duration or override to Infinity if configuration parameter\n * 'liveDurationInfinity` is set to `true`\n * More details: https://github.com/video-dev/hls.js/issues/355\n */;\n _proto.updateMediaElementDuration = function updateMediaElementDuration() {\n if (!this.details || !this.media || !this.mediaSource || this.mediaSource.readyState !== 'open') {\n return;\n }\n var details = this.details,\n hls = this.hls,\n media = this.media,\n mediaSource = this.mediaSource;\n var levelDuration = details.fragments[0].start + details.totalduration;\n var mediaDuration = media.duration;\n var msDuration = isFiniteNumber(mediaSource.duration) ? mediaSource.duration : 0;\n if (details.live && hls.config.liveDurationInfinity) {\n // Override duration to Infinity\n mediaSource.duration = Infinity;\n this.updateSeekableRange(details);\n } else if (levelDuration > msDuration && levelDuration > mediaDuration || !isFiniteNumber(mediaDuration)) {\n // levelDuration was the last value we set.\n // not using mediaSource.duration as the browser may tweak this value\n // only update Media Source duration if its value increase, this is to avoid\n // flushing already buffered portion when switching between quality level\n this.log(\"Updating Media Source duration to \" + levelDuration.toFixed(3));\n mediaSource.duration = levelDuration;\n }\n };\n _proto.updateSeekableRange = function updateSeekableRange(levelDetails) {\n var mediaSource = this.mediaSource;\n var fragments = levelDetails.fragments;\n var len = fragments.length;\n if (len && levelDetails.live && mediaSource != null && mediaSource.setLiveSeekableRange) {\n var start = Math.max(0, fragments[0].start);\n var end = Math.max(start, start + levelDetails.totalduration);\n this.log(\"Media Source duration is set to \" + mediaSource.duration + \". Setting seekable range to \" + start + \"-\" + end + \".\");\n mediaSource.setLiveSeekableRange(start, end);\n }\n };\n _proto.checkPendingTracks = function checkPendingTracks() {\n var bufferCodecEventsExpected = this.bufferCodecEventsExpected,\n operationQueue = this.operationQueue,\n pendingTracks = this.pendingTracks;\n\n // Check if we've received all of the expected bufferCodec events. When none remain, create all the sourceBuffers at once.\n // This is important because the MSE spec allows implementations to throw QuotaExceededErrors if creating new sourceBuffers after\n // data has been appended to existing ones.\n // 2 tracks is the max (one for audio, one for video). If we've reach this max go ahead and create the buffers.\n var pendingTracksCount = Object.keys(pendingTracks).length;\n if (pendingTracksCount && (!bufferCodecEventsExpected || pendingTracksCount === 2 || 'audiovideo' in pendingTracks)) {\n // ok, let's create them now !\n this.createSourceBuffers(pendingTracks);\n this.pendingTracks = {};\n // append any pending segments now !\n var buffers = this.getSourceBufferTypes();\n if (buffers.length) {\n this.hls.trigger(Events.BUFFER_CREATED, {\n tracks: this.tracks\n });\n buffers.forEach(function (type) {\n operationQueue.executeNext(type);\n });\n } else {\n var error = new Error('could not create source buffer for media codec(s)');\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n error: error,\n reason: error.message\n });\n }\n }\n };\n _proto.createSourceBuffers = function createSourceBuffers(tracks) {\n var _this11 = this;\n var sourceBuffer = this.sourceBuffer,\n mediaSource = this.mediaSource;\n if (!mediaSource) {\n throw Error('createSourceBuffers called when mediaSource was null');\n }\n var _loop = function _loop(trackName) {\n if (!sourceBuffer[trackName]) {\n var _track$levelCodec;\n var track = tracks[trackName];\n if (!track) {\n throw Error(\"source buffer exists for track \" + trackName + \", however track does not\");\n }\n // use levelCodec as first priority unless it contains multiple comma-separated codec values\n var codec = ((_track$levelCodec = track.levelCodec) == null ? void 0 : _track$levelCodec.indexOf(',')) === -1 ? track.levelCodec : track.codec;\n if (codec) {\n if (trackName.slice(0, 5) === 'audio') {\n codec = getCodecCompatibleName(codec, _this11.appendSource);\n }\n }\n var mimeType = track.container + \";codecs=\" + codec;\n _this11.log(\"creating sourceBuffer(\" + mimeType + \")\");\n try {\n var sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);\n var sbName = trackName;\n _this11.addBufferListener(sbName, 'updatestart', _this11._onSBUpdateStart);\n _this11.addBufferListener(sbName, 'updateend', _this11._onSBUpdateEnd);\n _this11.addBufferListener(sbName, 'error', _this11._onSBUpdateError);\n // ManagedSourceBuffer bufferedchange event\n if (_this11.appendSource) {\n _this11.addBufferListener(sbName, 'bufferedchange', function (type, event) {\n // If media was ejected check for a change. Added ranges are redundant with changes on 'updateend' event.\n var removedRanges = event.removedRanges;\n if (removedRanges != null && removedRanges.length) {\n _this11.hls.trigger(Events.BUFFER_FLUSHED, {\n type: trackName\n });\n }\n });\n }\n _this11.tracks[trackName] = {\n buffer: sb,\n codec: codec,\n container: track.container,\n levelCodec: track.levelCodec,\n metadata: track.metadata,\n id: track.id\n };\n } catch (err) {\n _this11.error(\"error while trying to add sourceBuffer: \" + err.message);\n _this11.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_ADD_CODEC_ERROR,\n fatal: false,\n error: err,\n sourceBufferName: trackName,\n mimeType: mimeType\n });\n }\n }\n };\n for (var trackName in tracks) {\n _loop(trackName);\n }\n };\n _proto._onSBUpdateStart = function _onSBUpdateStart(type) {\n var operationQueue = this.operationQueue;\n var operation = operationQueue.current(type);\n operation.onStart();\n };\n _proto._onSBUpdateEnd = function _onSBUpdateEnd(type) {\n var _this$mediaSource2;\n if (((_this$mediaSource2 = this.mediaSource) == null ? void 0 : _this$mediaSource2.readyState) === 'closed') {\n this.resetBuffer(type);\n return;\n }\n var operationQueue = this.operationQueue;\n var operation = operationQueue.current(type);\n operation.onComplete();\n operationQueue.shiftAndExecuteNext(type);\n };\n _proto._onSBUpdateError = function _onSBUpdateError(type, event) {\n var _this$mediaSource3;\n var error = new Error(type + \" SourceBuffer error. MediaSource readyState: \" + ((_this$mediaSource3 = this.mediaSource) == null ? void 0 : _this$mediaSource3.readyState));\n this.error(\"\" + error, event);\n // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // SourceBuffer errors are not necessarily fatal; if so, the HTMLMediaElement will fire an error event\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_APPENDING_ERROR,\n sourceBufferName: type,\n error: error,\n fatal: false\n });\n // updateend is always fired after error, so we'll allow that to shift the current operation off of the queue\n var operation = this.operationQueue.current(type);\n if (operation) {\n operation.onError(error);\n }\n }\n\n // This method must result in an updateend event; if remove is not called, _onSBUpdateEnd must be called manually\n ;\n _proto.removeExecutor = function removeExecutor(type, startOffset, endOffset) {\n var media = this.media,\n mediaSource = this.mediaSource,\n operationQueue = this.operationQueue,\n sourceBuffer = this.sourceBuffer;\n var sb = sourceBuffer[type];\n if (!media || !mediaSource || !sb) {\n this.warn(\"Attempting to remove from the \" + type + \" SourceBuffer, but it does not exist\");\n operationQueue.shiftAndExecuteNext(type);\n return;\n }\n var mediaDuration = isFiniteNumber(media.duration) ? media.duration : Infinity;\n var msDuration = isFiniteNumber(mediaSource.duration) ? mediaSource.duration : Infinity;\n var removeStart = Math.max(0, startOffset);\n var removeEnd = Math.min(endOffset, mediaDuration, msDuration);\n if (removeEnd > removeStart && (!sb.ending || sb.ended)) {\n sb.ended = false;\n this.log(\"Removing [\" + removeStart + \",\" + removeEnd + \"] from the \" + type + \" SourceBuffer\");\n sb.remove(removeStart, removeEnd);\n } else {\n // Cycle the queue\n operationQueue.shiftAndExecuteNext(type);\n }\n }\n\n // This method must result in an updateend event; if append is not called, _onSBUpdateEnd must be called manually\n ;\n _proto.appendExecutor = function appendExecutor(data, type) {\n var sb = this.sourceBuffer[type];\n if (!sb) {\n if (!this.pendingTracks[type]) {\n throw new Error(\"Attempting to append to the \" + type + \" SourceBuffer, but it does not exist\");\n }\n return;\n }\n sb.ended = false;\n sb.appendBuffer(data);\n }\n\n // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises\n // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue\n // upon completion, since we already do it here\n ;\n _proto.blockBuffers = function blockBuffers(onUnblocked, buffers) {\n var _this12 = this;\n if (buffers === void 0) {\n buffers = this.getSourceBufferTypes();\n }\n if (!buffers.length) {\n this.log('Blocking operation requested, but no SourceBuffers exist');\n Promise.resolve().then(onUnblocked);\n return;\n }\n var operationQueue = this.operationQueue;\n\n // logger.debug(`[buffer-controller]: Blocking ${buffers} SourceBuffer`);\n var blockingOperations = buffers.map(function (type) {\n return operationQueue.appendBlocker(type);\n });\n Promise.all(blockingOperations).then(function () {\n // logger.debug(`[buffer-controller]: Blocking operation resolved; unblocking ${buffers} SourceBuffer`);\n onUnblocked();\n buffers.forEach(function (type) {\n var sb = _this12.sourceBuffer[type];\n // Only cycle the queue if the SB is not updating. There's a bug in Chrome which sets the SB updating flag to\n // true when changing the MediaSource duration (https://bugs.chromium.org/p/chromium/issues/detail?id=959359&can=2&q=mediasource%20duration)\n // While this is a workaround, it's probably useful to have around\n if (!(sb != null && sb.updating)) {\n operationQueue.shiftAndExecuteNext(type);\n }\n });\n });\n };\n _proto.getSourceBufferTypes = function getSourceBufferTypes() {\n return Object.keys(this.sourceBuffer);\n };\n _proto.addBufferListener = function addBufferListener(type, event, fn) {\n var buffer = this.sourceBuffer[type];\n if (!buffer) {\n return;\n }\n var listener = fn.bind(this, type);\n this.listeners[type].push({\n event: event,\n listener: listener\n });\n buffer.addEventListener(event, listener);\n };\n _proto.removeBufferListeners = function removeBufferListeners(type) {\n var buffer = this.sourceBuffer[type];\n if (!buffer) {\n return;\n }\n this.listeners[type].forEach(function (l) {\n buffer.removeEventListener(l.event, l.listener);\n });\n };\n _createClass(BufferController, [{\n key: \"mediaSrc\",\n get: function get() {\n var _this$media;\n var media = ((_this$media = this.media) == null ? void 0 : _this$media.firstChild) || this.media;\n return media == null ? void 0 : media.src;\n }\n }]);\n return BufferController;\n }();\n function removeSourceChildren(node) {\n var sourceChildren = node.querySelectorAll('source');\n [].slice.call(sourceChildren).forEach(function (source) {\n node.removeChild(source);\n });\n }\n function addSource(media, url) {\n var source = self.document.createElement('source');\n source.type = 'video/mp4';\n source.src = url;\n media.appendChild(source);\n }\n\n /**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n /**\n * Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes\n */\n\n var specialCea608CharsCodes = {\n 0x2a: 0xe1,\n // lowercase a, acute accent\n 0x5c: 0xe9,\n // lowercase e, acute accent\n 0x5e: 0xed,\n // lowercase i, acute accent\n 0x5f: 0xf3,\n // lowercase o, acute accent\n 0x60: 0xfa,\n // lowercase u, acute accent\n 0x7b: 0xe7,\n // lowercase c with cedilla\n 0x7c: 0xf7,\n // division symbol\n 0x7d: 0xd1,\n // uppercase N tilde\n 0x7e: 0xf1,\n // lowercase n tilde\n 0x7f: 0x2588,\n // Full block\n // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n 0x80: 0xae,\n // Registered symbol (R)\n 0x81: 0xb0,\n // degree sign\n 0x82: 0xbd,\n // 1/2 symbol\n 0x83: 0xbf,\n // Inverted (open) question mark\n 0x84: 0x2122,\n // Trademark symbol (TM)\n 0x85: 0xa2,\n // Cents symbol\n 0x86: 0xa3,\n // Pounds sterling\n 0x87: 0x266a,\n // Music 8'th note\n 0x88: 0xe0,\n // lowercase a, grave accent\n 0x89: 0x20,\n // transparent space (regular)\n 0x8a: 0xe8,\n // lowercase e, grave accent\n 0x8b: 0xe2,\n // lowercase a, circumflex accent\n 0x8c: 0xea,\n // lowercase e, circumflex accent\n 0x8d: 0xee,\n // lowercase i, circumflex accent\n 0x8e: 0xf4,\n // lowercase o, circumflex accent\n 0x8f: 0xfb,\n // lowercase u, circumflex accent\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n 0x90: 0xc1,\n // capital letter A with acute\n 0x91: 0xc9,\n // capital letter E with acute\n 0x92: 0xd3,\n // capital letter O with acute\n 0x93: 0xda,\n // capital letter U with acute\n 0x94: 0xdc,\n // capital letter U with diaresis\n 0x95: 0xfc,\n // lowercase letter U with diaeresis\n 0x96: 0x2018,\n // opening single quote\n 0x97: 0xa1,\n // inverted exclamation mark\n 0x98: 0x2a,\n // asterisk\n 0x99: 0x2019,\n // closing single quote\n 0x9a: 0x2501,\n // box drawings heavy horizontal\n 0x9b: 0xa9,\n // copyright sign\n 0x9c: 0x2120,\n // Service mark\n 0x9d: 0x2022,\n // (round) bullet\n 0x9e: 0x201c,\n // Left double quotation mark\n 0x9f: 0x201d,\n // Right double quotation mark\n 0xa0: 0xc0,\n // uppercase A, grave accent\n 0xa1: 0xc2,\n // uppercase A, circumflex\n 0xa2: 0xc7,\n // uppercase C with cedilla\n 0xa3: 0xc8,\n // uppercase E, grave accent\n 0xa4: 0xca,\n // uppercase E, circumflex\n 0xa5: 0xcb,\n // capital letter E with diaresis\n 0xa6: 0xeb,\n // lowercase letter e with diaresis\n 0xa7: 0xce,\n // uppercase I, circumflex\n 0xa8: 0xcf,\n // uppercase I, with diaresis\n 0xa9: 0xef,\n // lowercase i, with diaresis\n 0xaa: 0xd4,\n // uppercase O, circumflex\n 0xab: 0xd9,\n // uppercase U, grave accent\n 0xac: 0xf9,\n // lowercase u, grave accent\n 0xad: 0xdb,\n // uppercase U, circumflex\n 0xae: 0xab,\n // left-pointing double angle quotation mark\n 0xaf: 0xbb,\n // right-pointing double angle quotation mark\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n 0xb0: 0xc3,\n // Uppercase A, tilde\n 0xb1: 0xe3,\n // Lowercase a, tilde\n 0xb2: 0xcd,\n // Uppercase I, acute accent\n 0xb3: 0xcc,\n // Uppercase I, grave accent\n 0xb4: 0xec,\n // Lowercase i, grave accent\n 0xb5: 0xd2,\n // Uppercase O, grave accent\n 0xb6: 0xf2,\n // Lowercase o, grave accent\n 0xb7: 0xd5,\n // Uppercase O, tilde\n 0xb8: 0xf5,\n // Lowercase o, tilde\n 0xb9: 0x7b,\n // Open curly brace\n 0xba: 0x7d,\n // Closing curly brace\n 0xbb: 0x5c,\n // Backslash\n 0xbc: 0x5e,\n // Caret\n 0xbd: 0x5f,\n // Underscore\n 0xbe: 0x7c,\n // Pipe (vertical line)\n 0xbf: 0x223c,\n // Tilde operator\n 0xc0: 0xc4,\n // Uppercase A, umlaut\n 0xc1: 0xe4,\n // Lowercase A, umlaut\n 0xc2: 0xd6,\n // Uppercase O, umlaut\n 0xc3: 0xf6,\n // Lowercase o, umlaut\n 0xc4: 0xdf,\n // Esszett (sharp S)\n 0xc5: 0xa5,\n // Yen symbol\n 0xc6: 0xa4,\n // Generic currency sign\n 0xc7: 0x2503,\n // Box drawings heavy vertical\n 0xc8: 0xc5,\n // Uppercase A, ring\n 0xc9: 0xe5,\n // Lowercase A, ring\n 0xca: 0xd8,\n // Uppercase O, stroke\n 0xcb: 0xf8,\n // Lowercase o, strok\n 0xcc: 0x250f,\n // Box drawings heavy down and right\n 0xcd: 0x2513,\n // Box drawings heavy down and left\n 0xce: 0x2517,\n // Box drawings heavy up and right\n 0xcf: 0x251b // Box drawings heavy up and left\n };\n\n /**\n * Utils\n */\n var getCharForByte = function getCharForByte(_byte) {\n return String.fromCharCode(specialCea608CharsCodes[_byte] || _byte);\n };\n var NR_ROWS = 15;\n var NR_COLS = 100;\n // Tables to look up row from PAC data\n var rowsLowCh1 = {\n 0x11: 1,\n 0x12: 3,\n 0x15: 5,\n 0x16: 7,\n 0x17: 9,\n 0x10: 11,\n 0x13: 12,\n 0x14: 14\n };\n var rowsHighCh1 = {\n 0x11: 2,\n 0x12: 4,\n 0x15: 6,\n 0x16: 8,\n 0x17: 10,\n 0x13: 13,\n 0x14: 15\n };\n var rowsLowCh2 = {\n 0x19: 1,\n 0x1a: 3,\n 0x1d: 5,\n 0x1e: 7,\n 0x1f: 9,\n 0x18: 11,\n 0x1b: 12,\n 0x1c: 14\n };\n var rowsHighCh2 = {\n 0x19: 2,\n 0x1a: 4,\n 0x1d: 6,\n 0x1e: 8,\n 0x1f: 10,\n 0x1b: 13,\n 0x1c: 15\n };\n var backgroundColors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent'];\n var CaptionsLogger = /*#__PURE__*/function () {\n function CaptionsLogger() {\n this.time = null;\n this.verboseLevel = 0;\n }\n var _proto = CaptionsLogger.prototype;\n _proto.log = function log(severity, msg) {\n if (this.verboseLevel >= severity) {\n var m = typeof msg === 'function' ? msg() : msg;\n logger.log(this.time + \" [\" + severity + \"] \" + m);\n }\n };\n return CaptionsLogger;\n }();\n var numArrayToHexArray = function numArrayToHexArray(numArray) {\n var hexArray = [];\n for (var j = 0; j < numArray.length; j++) {\n hexArray.push(numArray[j].toString(16));\n }\n return hexArray;\n };\n var PenState = /*#__PURE__*/function () {\n function PenState() {\n this.foreground = 'white';\n this.underline = false;\n this.italics = false;\n this.background = 'black';\n this.flash = false;\n }\n var _proto2 = PenState.prototype;\n _proto2.reset = function reset() {\n this.foreground = 'white';\n this.underline = false;\n this.italics = false;\n this.background = 'black';\n this.flash = false;\n };\n _proto2.setStyles = function setStyles(styles) {\n var attribs = ['foreground', 'underline', 'italics', 'background', 'flash'];\n for (var i = 0; i < attribs.length; i++) {\n var style = attribs[i];\n if (styles.hasOwnProperty(style)) {\n this[style] = styles[style];\n }\n }\n };\n _proto2.isDefault = function isDefault() {\n return this.foreground === 'white' && !this.underline && !this.italics && this.background === 'black' && !this.flash;\n };\n _proto2.equals = function equals(other) {\n return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash;\n };\n _proto2.copy = function copy(newPenState) {\n this.foreground = newPenState.foreground;\n this.underline = newPenState.underline;\n this.italics = newPenState.italics;\n this.background = newPenState.background;\n this.flash = newPenState.flash;\n };\n _proto2.toString = function toString() {\n return 'color=' + this.foreground + ', underline=' + this.underline + ', italics=' + this.italics + ', background=' + this.background + ', flash=' + this.flash;\n };\n return PenState;\n }();\n /**\n * Unicode character with styling and background.\n * @constructor\n */\n var StyledUnicodeChar = /*#__PURE__*/function () {\n function StyledUnicodeChar() {\n this.uchar = ' ';\n this.penState = new PenState();\n }\n var _proto3 = StyledUnicodeChar.prototype;\n _proto3.reset = function reset() {\n this.uchar = ' ';\n this.penState.reset();\n };\n _proto3.setChar = function setChar(uchar, newPenState) {\n this.uchar = uchar;\n this.penState.copy(newPenState);\n };\n _proto3.setPenState = function setPenState(newPenState) {\n this.penState.copy(newPenState);\n };\n _proto3.equals = function equals(other) {\n return this.uchar === other.uchar && this.penState.equals(other.penState);\n };\n _proto3.copy = function copy(newChar) {\n this.uchar = newChar.uchar;\n this.penState.copy(newChar.penState);\n };\n _proto3.isEmpty = function isEmpty() {\n return this.uchar === ' ' && this.penState.isDefault();\n };\n return StyledUnicodeChar;\n }();\n /**\n * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n * @constructor\n */\n var Row = /*#__PURE__*/function () {\n function Row(logger) {\n this.chars = [];\n this.pos = 0;\n this.currPenState = new PenState();\n this.cueStartTime = null;\n this.logger = void 0;\n for (var i = 0; i < NR_COLS; i++) {\n this.chars.push(new StyledUnicodeChar());\n }\n this.logger = logger;\n }\n var _proto4 = Row.prototype;\n _proto4.equals = function equals(other) {\n for (var i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].equals(other.chars[i])) {\n return false;\n }\n }\n return true;\n };\n _proto4.copy = function copy(other) {\n for (var i = 0; i < NR_COLS; i++) {\n this.chars[i].copy(other.chars[i]);\n }\n };\n _proto4.isEmpty = function isEmpty() {\n var empty = true;\n for (var i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n }\n\n /**\n * Set the cursor to a valid column.\n */;\n _proto4.setCursor = function setCursor(absPos) {\n if (this.pos !== absPos) {\n this.pos = absPos;\n }\n if (this.pos < 0) {\n this.logger.log(3, 'Negative cursor position ' + this.pos);\n this.pos = 0;\n } else if (this.pos > NR_COLS) {\n this.logger.log(3, 'Too large cursor position ' + this.pos);\n this.pos = NR_COLS;\n }\n }\n\n /**\n * Move the cursor relative to current position.\n */;\n _proto4.moveCursor = function moveCursor(relPos) {\n var newPos = this.pos + relPos;\n if (relPos > 1) {\n for (var i = this.pos + 1; i < newPos + 1; i++) {\n this.chars[i].setPenState(this.currPenState);\n }\n }\n this.setCursor(newPos);\n }\n\n /**\n * Backspace, move one step back and clear character.\n */;\n _proto4.backSpace = function backSpace() {\n this.moveCursor(-1);\n this.chars[this.pos].setChar(' ', this.currPenState);\n };\n _proto4.insertChar = function insertChar(_byte2) {\n var _this = this;\n if (_byte2 >= 0x90) {\n // Extended char\n this.backSpace();\n }\n var _char = getCharForByte(_byte2);\n if (this.pos >= NR_COLS) {\n this.logger.log(0, function () {\n return 'Cannot insert ' + _byte2.toString(16) + ' (' + _char + ') at position ' + _this.pos + '. Skipping it!';\n });\n return;\n }\n this.chars[this.pos].setChar(_char, this.currPenState);\n this.moveCursor(1);\n };\n _proto4.clearFromPos = function clearFromPos(startPos) {\n var i;\n for (i = startPos; i < NR_COLS; i++) {\n this.chars[i].reset();\n }\n };\n _proto4.clear = function clear() {\n this.clearFromPos(0);\n this.pos = 0;\n this.currPenState.reset();\n };\n _proto4.clearToEndOfRow = function clearToEndOfRow() {\n this.clearFromPos(this.pos);\n };\n _proto4.getTextString = function getTextString() {\n var chars = [];\n var empty = true;\n for (var i = 0; i < NR_COLS; i++) {\n var _char2 = this.chars[i].uchar;\n if (_char2 !== ' ') {\n empty = false;\n }\n chars.push(_char2);\n }\n if (empty) {\n return '';\n } else {\n return chars.join('');\n }\n };\n _proto4.setPenStyles = function setPenStyles(styles) {\n this.currPenState.setStyles(styles);\n var currChar = this.chars[this.pos];\n currChar.setPenState(this.currPenState);\n };\n return Row;\n }();\n\n /**\n * Keep a CEA-608 screen of 32x15 styled characters\n * @constructor\n */\n var CaptionScreen = /*#__PURE__*/function () {\n function CaptionScreen(logger) {\n this.rows = [];\n this.currRow = NR_ROWS - 1;\n this.nrRollUpRows = null;\n this.lastOutputScreen = null;\n this.logger = void 0;\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows.push(new Row(logger));\n }\n this.logger = logger;\n }\n var _proto5 = CaptionScreen.prototype;\n _proto5.reset = function reset() {\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n }\n this.currRow = NR_ROWS - 1;\n };\n _proto5.equals = function equals(other) {\n var equal = true;\n for (var i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].equals(other.rows[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n };\n _proto5.copy = function copy(other) {\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].copy(other.rows[i]);\n }\n };\n _proto5.isEmpty = function isEmpty() {\n var empty = true;\n for (var i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n };\n _proto5.backSpace = function backSpace() {\n var row = this.rows[this.currRow];\n row.backSpace();\n };\n _proto5.clearToEndOfRow = function clearToEndOfRow() {\n var row = this.rows[this.currRow];\n row.clearToEndOfRow();\n }\n\n /**\n * Insert a character (without styling) in the current row.\n */;\n _proto5.insertChar = function insertChar(_char3) {\n var row = this.rows[this.currRow];\n row.insertChar(_char3);\n };\n _proto5.setPen = function setPen(styles) {\n var row = this.rows[this.currRow];\n row.setPenStyles(styles);\n };\n _proto5.moveCursor = function moveCursor(relPos) {\n var row = this.rows[this.currRow];\n row.moveCursor(relPos);\n };\n _proto5.setCursor = function setCursor(absPos) {\n this.logger.log(2, 'setCursor: ' + absPos);\n var row = this.rows[this.currRow];\n row.setCursor(absPos);\n };\n _proto5.setPAC = function setPAC(pacData) {\n this.logger.log(2, function () {\n return 'pacData = ' + JSON.stringify(pacData);\n });\n var newRow = pacData.row - 1;\n if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n newRow = this.nrRollUpRows - 1;\n }\n\n // Make sure this only affects Roll-up Captions by checking this.nrRollUpRows\n if (this.nrRollUpRows && this.currRow !== newRow) {\n // clear all rows first\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n }\n\n // Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location\n // topRowIndex - the start of rows to copy (inclusive index)\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n // We only copy if the last position was already shown.\n // We use the cueStartTime value to check this.\n var lastOutputScreen = this.lastOutputScreen;\n if (lastOutputScreen) {\n var prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;\n var time = this.logger.time;\n if (prevLineTime !== null && time !== null && prevLineTime < time) {\n for (var _i = 0; _i < this.nrRollUpRows; _i++) {\n this.rows[newRow - this.nrRollUpRows + _i + 1].copy(lastOutputScreen.rows[topRowIndex + _i]);\n }\n }\n }\n }\n this.currRow = newRow;\n var row = this.rows[this.currRow];\n if (pacData.indent !== null) {\n var indent = pacData.indent;\n var prevPos = Math.max(indent - 1, 0);\n row.setCursor(pacData.indent);\n pacData.color = row.chars[prevPos].penState.foreground;\n }\n var styles = {\n foreground: pacData.color,\n underline: pacData.underline,\n italics: pacData.italics,\n background: 'black',\n flash: false\n };\n this.setPen(styles);\n }\n\n /**\n * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n */;\n _proto5.setBkgData = function setBkgData(bkgData) {\n this.logger.log(2, function () {\n return 'bkgData = ' + JSON.stringify(bkgData);\n });\n this.backSpace();\n this.setPen(bkgData);\n this.insertChar(0x20); // Space\n };\n _proto5.setRollUpRows = function setRollUpRows(nrRows) {\n this.nrRollUpRows = nrRows;\n };\n _proto5.rollUp = function rollUp() {\n var _this2 = this;\n if (this.nrRollUpRows === null) {\n this.logger.log(3, 'roll_up but nrRollUpRows not set yet');\n return; // Not properly setup\n }\n this.logger.log(1, function () {\n return _this2.getDisplayText();\n });\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n var topRow = this.rows.splice(topRowIndex, 1)[0];\n topRow.clear();\n this.rows.splice(this.currRow, 0, topRow);\n this.logger.log(2, 'Rolling up');\n // this.logger.log(VerboseLevel.TEXT, this.get_display_text())\n }\n\n /**\n * Get all non-empty rows with as unicode text.\n */;\n _proto5.getDisplayText = function getDisplayText(asOneRow) {\n asOneRow = asOneRow || false;\n var displayText = [];\n var text = '';\n var rowNr = -1;\n for (var i = 0; i < NR_ROWS; i++) {\n var rowText = this.rows[i].getTextString();\n if (rowText) {\n rowNr = i + 1;\n if (asOneRow) {\n displayText.push('Row ' + rowNr + \": '\" + rowText + \"'\");\n } else {\n displayText.push(rowText.trim());\n }\n }\n }\n if (displayText.length > 0) {\n if (asOneRow) {\n text = '[' + displayText.join(' | ') + ']';\n } else {\n text = displayText.join('\\n');\n }\n }\n return text;\n };\n _proto5.getTextAndFormat = function getTextAndFormat() {\n return this.rows;\n };\n return CaptionScreen;\n }();\n\n // var modes = ['MODE_ROLL-UP', 'MODE_POP-ON', 'MODE_PAINT-ON', 'MODE_TEXT'];\n var Cea608Channel = /*#__PURE__*/function () {\n function Cea608Channel(channelNumber, outputFilter, logger) {\n this.chNr = void 0;\n this.outputFilter = void 0;\n this.mode = void 0;\n this.verbose = void 0;\n this.displayedMemory = void 0;\n this.nonDisplayedMemory = void 0;\n this.lastOutputScreen = void 0;\n this.currRollUpRow = void 0;\n this.writeScreen = void 0;\n this.cueStartTime = void 0;\n this.logger = void 0;\n this.chNr = channelNumber;\n this.outputFilter = outputFilter;\n this.mode = null;\n this.verbose = 0;\n this.displayedMemory = new CaptionScreen(logger);\n this.nonDisplayedMemory = new CaptionScreen(logger);\n this.lastOutputScreen = new CaptionScreen(logger);\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null; // Keeps track of where a cue started.\n this.logger = logger;\n }\n var _proto6 = Cea608Channel.prototype;\n _proto6.reset = function reset() {\n this.mode = null;\n this.displayedMemory.reset();\n this.nonDisplayedMemory.reset();\n this.lastOutputScreen.reset();\n this.outputFilter.reset();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null;\n };\n _proto6.getHandler = function getHandler() {\n return this.outputFilter;\n };\n _proto6.setHandler = function setHandler(newHandler) {\n this.outputFilter = newHandler;\n };\n _proto6.setPAC = function setPAC(pacData) {\n this.writeScreen.setPAC(pacData);\n };\n _proto6.setBkgData = function setBkgData(bkgData) {\n this.writeScreen.setBkgData(bkgData);\n };\n _proto6.setMode = function setMode(newMode) {\n if (newMode === this.mode) {\n return;\n }\n this.mode = newMode;\n this.logger.log(2, function () {\n return 'MODE=' + newMode;\n });\n if (this.mode === 'MODE_POP-ON') {\n this.writeScreen = this.nonDisplayedMemory;\n } else {\n this.writeScreen = this.displayedMemory;\n this.writeScreen.reset();\n }\n if (this.mode !== 'MODE_ROLL-UP') {\n this.displayedMemory.nrRollUpRows = null;\n this.nonDisplayedMemory.nrRollUpRows = null;\n }\n this.mode = newMode;\n };\n _proto6.insertChars = function insertChars(chars) {\n var _this3 = this;\n for (var i = 0; i < chars.length; i++) {\n this.writeScreen.insertChar(chars[i]);\n }\n var screen = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';\n this.logger.log(2, function () {\n return screen + ': ' + _this3.writeScreen.getDisplayText(true);\n });\n if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') {\n this.logger.log(1, function () {\n return 'DISPLAYED: ' + _this3.displayedMemory.getDisplayText(true);\n });\n this.outputDataUpdate();\n }\n };\n _proto6.ccRCL = function ccRCL() {\n // Resume Caption Loading (switch mode to Pop On)\n this.logger.log(2, 'RCL - Resume Caption Loading');\n this.setMode('MODE_POP-ON');\n };\n _proto6.ccBS = function ccBS() {\n // BackSpace\n this.logger.log(2, 'BS - BackSpace');\n if (this.mode === 'MODE_TEXT') {\n return;\n }\n this.writeScreen.backSpace();\n if (this.writeScreen === this.displayedMemory) {\n this.outputDataUpdate();\n }\n };\n _proto6.ccAOF = function ccAOF() {\n // Reserved (formerly Alarm Off)\n };\n _proto6.ccAON = function ccAON() {\n // Reserved (formerly Alarm On)\n };\n _proto6.ccDER = function ccDER() {\n // Delete to End of Row\n this.logger.log(2, 'DER- Delete to End of Row');\n this.writeScreen.clearToEndOfRow();\n this.outputDataUpdate();\n };\n _proto6.ccRU = function ccRU(nrRows) {\n // Roll-Up Captions-2,3,or 4 Rows\n this.logger.log(2, 'RU(' + nrRows + ') - Roll Up');\n this.writeScreen = this.displayedMemory;\n this.setMode('MODE_ROLL-UP');\n this.writeScreen.setRollUpRows(nrRows);\n };\n _proto6.ccFON = function ccFON() {\n // Flash On\n this.logger.log(2, 'FON - Flash On');\n this.writeScreen.setPen({\n flash: true\n });\n };\n _proto6.ccRDC = function ccRDC() {\n // Resume Direct Captioning (switch mode to PaintOn)\n this.logger.log(2, 'RDC - Resume Direct Captioning');\n this.setMode('MODE_PAINT-ON');\n };\n _proto6.ccTR = function ccTR() {\n // Text Restart in text mode (not supported, however)\n this.logger.log(2, 'TR');\n this.setMode('MODE_TEXT');\n };\n _proto6.ccRTD = function ccRTD() {\n // Resume Text Display in Text mode (not supported, however)\n this.logger.log(2, 'RTD');\n this.setMode('MODE_TEXT');\n };\n _proto6.ccEDM = function ccEDM() {\n // Erase Displayed Memory\n this.logger.log(2, 'EDM - Erase Displayed Memory');\n this.displayedMemory.reset();\n this.outputDataUpdate(true);\n };\n _proto6.ccCR = function ccCR() {\n // Carriage Return\n this.logger.log(2, 'CR - Carriage Return');\n this.writeScreen.rollUp();\n this.outputDataUpdate(true);\n };\n _proto6.ccENM = function ccENM() {\n // Erase Non-Displayed Memory\n this.logger.log(2, 'ENM - Erase Non-displayed Memory');\n this.nonDisplayedMemory.reset();\n };\n _proto6.ccEOC = function ccEOC() {\n var _this4 = this;\n // End of Caption (Flip Memories)\n this.logger.log(2, 'EOC - End Of Caption');\n if (this.mode === 'MODE_POP-ON') {\n var tmp = this.displayedMemory;\n this.displayedMemory = this.nonDisplayedMemory;\n this.nonDisplayedMemory = tmp;\n this.writeScreen = this.nonDisplayedMemory;\n this.logger.log(1, function () {\n return 'DISP: ' + _this4.displayedMemory.getDisplayText();\n });\n }\n this.outputDataUpdate(true);\n };\n _proto6.ccTO = function ccTO(nrCols) {\n // Tab Offset 1,2, or 3 columns\n this.logger.log(2, 'TO(' + nrCols + ') - Tab Offset');\n this.writeScreen.moveCursor(nrCols);\n };\n _proto6.ccMIDROW = function ccMIDROW(secondByte) {\n // Parse MIDROW command\n var styles = {\n flash: false\n };\n styles.underline = secondByte % 2 === 1;\n styles.italics = secondByte >= 0x2e;\n if (!styles.italics) {\n var colorIndex = Math.floor(secondByte / 2) - 0x10;\n var colors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta'];\n styles.foreground = colors[colorIndex];\n } else {\n styles.foreground = 'white';\n }\n this.logger.log(2, 'MIDROW: ' + JSON.stringify(styles));\n this.writeScreen.setPen(styles);\n };\n _proto6.outputDataUpdate = function outputDataUpdate(dispatch) {\n if (dispatch === void 0) {\n dispatch = false;\n }\n var time = this.logger.time;\n if (time === null) {\n return;\n }\n if (this.outputFilter) {\n if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {\n // Start of a new cue\n this.cueStartTime = time;\n } else {\n if (!this.displayedMemory.equals(this.lastOutputScreen)) {\n this.outputFilter.newCue(this.cueStartTime, time, this.lastOutputScreen);\n if (dispatch && this.outputFilter.dispatchCue) {\n this.outputFilter.dispatchCue();\n }\n this.cueStartTime = this.displayedMemory.isEmpty() ? null : time;\n }\n }\n this.lastOutputScreen.copy(this.displayedMemory);\n }\n };\n _proto6.cueSplitAtTime = function cueSplitAtTime(t) {\n if (this.outputFilter) {\n if (!this.displayedMemory.isEmpty()) {\n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);\n }\n this.cueStartTime = t;\n }\n }\n };\n return Cea608Channel;\n }(); // Will be 1 or 2 when parsing captions\n var Cea608Parser = /*#__PURE__*/function () {\n function Cea608Parser(field, out1, out2) {\n this.channels = void 0;\n this.currentChannel = 0;\n this.cmdHistory = createCmdHistory();\n this.logger = void 0;\n var logger = this.logger = new CaptionsLogger();\n this.channels = [null, new Cea608Channel(field, out1, logger), new Cea608Channel(field + 1, out2, logger)];\n }\n var _proto7 = Cea608Parser.prototype;\n _proto7.getHandler = function getHandler(channel) {\n return this.channels[channel].getHandler();\n };\n _proto7.setHandler = function setHandler(channel, newHandler) {\n this.channels[channel].setHandler(newHandler);\n }\n\n /**\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n */;\n _proto7.addData = function addData(time, byteList) {\n var _this5 = this;\n this.logger.time = time;\n var _loop = function _loop(i) {\n var a = byteList[i] & 0x7f;\n var b = byteList[i + 1] & 0x7f;\n var cmdFound = false;\n var charsFound = null;\n if (a === 0 && b === 0) {\n return 0; // continue\n } else {\n _this5.logger.log(3, function () {\n return '[' + numArrayToHexArray([byteList[i], byteList[i + 1]]) + '] -> (' + numArrayToHexArray([a, b]) + ')';\n });\n }\n var cmdHistory = _this5.cmdHistory;\n var isControlCode = a >= 0x10 && a <= 0x1f;\n if (isControlCode) {\n // Skip redundant control codes\n if (hasCmdRepeated(a, b, cmdHistory)) {\n setLastCmd(null, null, cmdHistory);\n _this5.logger.log(3, function () {\n return 'Repeated command (' + numArrayToHexArray([a, b]) + ') is dropped';\n });\n return 0; // continue\n }\n setLastCmd(a, b, _this5.cmdHistory);\n cmdFound = _this5.parseCmd(a, b);\n if (!cmdFound) {\n cmdFound = _this5.parseMidrow(a, b);\n }\n if (!cmdFound) {\n cmdFound = _this5.parsePAC(a, b);\n }\n if (!cmdFound) {\n cmdFound = _this5.parseBackgroundAttributes(a, b);\n }\n } else {\n setLastCmd(null, null, cmdHistory);\n }\n if (!cmdFound) {\n charsFound = _this5.parseChars(a, b);\n if (charsFound) {\n var currChNr = _this5.currentChannel;\n if (currChNr && currChNr > 0) {\n var channel = _this5.channels[currChNr];\n channel.insertChars(charsFound);\n } else {\n _this5.logger.log(2, 'No channel found yet. TEXT-MODE?');\n }\n }\n }\n if (!cmdFound && !charsFound) {\n _this5.logger.log(2, function () {\n return \"Couldn't parse cleaned data \" + numArrayToHexArray([a, b]) + ' orig: ' + numArrayToHexArray([byteList[i], byteList[i + 1]]);\n });\n }\n },\n _ret;\n for (var i = 0; i < byteList.length; i += 2) {\n _ret = _loop(i);\n if (_ret === 0) continue;\n }\n }\n\n /**\n * Parse Command.\n * @returns True if a command was found\n */;\n _proto7.parseCmd = function parseCmd(a, b) {\n var cond1 = (a === 0x14 || a === 0x1c || a === 0x15 || a === 0x1d) && b >= 0x20 && b <= 0x2f;\n var cond2 = (a === 0x17 || a === 0x1f) && b >= 0x21 && b <= 0x23;\n if (!(cond1 || cond2)) {\n return false;\n }\n var chNr = a === 0x14 || a === 0x15 || a === 0x17 ? 1 : 2;\n var channel = this.channels[chNr];\n if (a === 0x14 || a === 0x15 || a === 0x1c || a === 0x1d) {\n if (b === 0x20) {\n channel.ccRCL();\n } else if (b === 0x21) {\n channel.ccBS();\n } else if (b === 0x22) {\n channel.ccAOF();\n } else if (b === 0x23) {\n channel.ccAON();\n } else if (b === 0x24) {\n channel.ccDER();\n } else if (b === 0x25) {\n channel.ccRU(2);\n } else if (b === 0x26) {\n channel.ccRU(3);\n } else if (b === 0x27) {\n channel.ccRU(4);\n } else if (b === 0x28) {\n channel.ccFON();\n } else if (b === 0x29) {\n channel.ccRDC();\n } else if (b === 0x2a) {\n channel.ccTR();\n } else if (b === 0x2b) {\n channel.ccRTD();\n } else if (b === 0x2c) {\n channel.ccEDM();\n } else if (b === 0x2d) {\n channel.ccCR();\n } else if (b === 0x2e) {\n channel.ccENM();\n } else if (b === 0x2f) {\n channel.ccEOC();\n }\n } else {\n // a == 0x17 || a == 0x1F\n channel.ccTO(b - 0x20);\n }\n this.currentChannel = chNr;\n return true;\n }\n\n /**\n * Parse midrow styling command\n */;\n _proto7.parseMidrow = function parseMidrow(a, b) {\n var chNr = 0;\n if ((a === 0x11 || a === 0x19) && b >= 0x20 && b <= 0x2f) {\n if (a === 0x11) {\n chNr = 1;\n } else {\n chNr = 2;\n }\n if (chNr !== this.currentChannel) {\n this.logger.log(0, 'Mismatch channel in midrow parsing');\n return false;\n }\n var channel = this.channels[chNr];\n if (!channel) {\n return false;\n }\n channel.ccMIDROW(b);\n this.logger.log(3, function () {\n return 'MIDROW (' + numArrayToHexArray([a, b]) + ')';\n });\n return true;\n }\n return false;\n }\n\n /**\n * Parse Preable Access Codes (Table 53).\n * @returns {Boolean} Tells if PAC found\n */;\n _proto7.parsePAC = function parsePAC(a, b) {\n var row;\n var case1 = (a >= 0x11 && a <= 0x17 || a >= 0x19 && a <= 0x1f) && b >= 0x40 && b <= 0x7f;\n var case2 = (a === 0x10 || a === 0x18) && b >= 0x40 && b <= 0x5f;\n if (!(case1 || case2)) {\n return false;\n }\n var chNr = a <= 0x17 ? 1 : 2;\n if (b >= 0x40 && b <= 0x5f) {\n row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a];\n } else {\n // 0x60 <= b <= 0x7F\n row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a];\n }\n var channel = this.channels[chNr];\n if (!channel) {\n return false;\n }\n channel.setPAC(this.interpretPAC(row, b));\n this.currentChannel = chNr;\n return true;\n }\n\n /**\n * Interpret the second byte of the pac, and return the information.\n * @returns pacData with style parameters\n */;\n _proto7.interpretPAC = function interpretPAC(row, _byte3) {\n var pacIndex;\n var pacData = {\n color: null,\n italics: false,\n indent: null,\n underline: false,\n row: row\n };\n if (_byte3 > 0x5f) {\n pacIndex = _byte3 - 0x60;\n } else {\n pacIndex = _byte3 - 0x40;\n }\n pacData.underline = (pacIndex & 1) === 1;\n if (pacIndex <= 0xd) {\n pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex / 2)];\n } else if (pacIndex <= 0xf) {\n pacData.italics = true;\n pacData.color = 'white';\n } else {\n pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4;\n }\n return pacData; // Note that row has zero offset. The spec uses 1.\n }\n\n /**\n * Parse characters.\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n */;\n _proto7.parseChars = function parseChars(a, b) {\n var channelNr;\n var charCodes = null;\n var charCode1 = null;\n if (a >= 0x19) {\n channelNr = 2;\n charCode1 = a - 8;\n } else {\n channelNr = 1;\n charCode1 = a;\n }\n if (charCode1 >= 0x11 && charCode1 <= 0x13) {\n // Special character\n var oneCode;\n if (charCode1 === 0x11) {\n oneCode = b + 0x50;\n } else if (charCode1 === 0x12) {\n oneCode = b + 0x70;\n } else {\n oneCode = b + 0x90;\n }\n this.logger.log(2, function () {\n return \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr;\n });\n charCodes = [oneCode];\n } else if (a >= 0x20 && a <= 0x7f) {\n charCodes = b === 0 ? [a] : [a, b];\n }\n if (charCodes) {\n this.logger.log(3, function () {\n return 'Char codes = ' + numArrayToHexArray(charCodes).join(',');\n });\n }\n return charCodes;\n }\n\n /**\n * Parse extended background attributes as well as new foreground color black.\n * @returns True if background attributes are found\n */;\n _proto7.parseBackgroundAttributes = function parseBackgroundAttributes(a, b) {\n var case1 = (a === 0x10 || a === 0x18) && b >= 0x20 && b <= 0x2f;\n var case2 = (a === 0x17 || a === 0x1f) && b >= 0x2d && b <= 0x2f;\n if (!(case1 || case2)) {\n return false;\n }\n var index;\n var bkgData = {};\n if (a === 0x10 || a === 0x18) {\n index = Math.floor((b - 0x20) / 2);\n bkgData.background = backgroundColors[index];\n if (b % 2 === 1) {\n bkgData.background = bkgData.background + '_semi';\n }\n } else if (b === 0x2d) {\n bkgData.background = 'transparent';\n } else {\n bkgData.foreground = 'black';\n if (b === 0x2f) {\n bkgData.underline = true;\n }\n }\n var chNr = a <= 0x17 ? 1 : 2;\n var channel = this.channels[chNr];\n channel.setBkgData(bkgData);\n return true;\n }\n\n /**\n * Reset state of parser and its channels.\n */;\n _proto7.reset = function reset() {\n for (var i = 0; i < Object.keys(this.channels).length; i++) {\n var channel = this.channels[i];\n if (channel) {\n channel.reset();\n }\n }\n setLastCmd(null, null, this.cmdHistory);\n }\n\n /**\n * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n */;\n _proto7.cueSplitAtTime = function cueSplitAtTime(t) {\n for (var i = 0; i < this.channels.length; i++) {\n var channel = this.channels[i];\n if (channel) {\n channel.cueSplitAtTime(t);\n }\n }\n };\n return Cea608Parser;\n }();\n function setLastCmd(a, b, cmdHistory) {\n cmdHistory.a = a;\n cmdHistory.b = b;\n }\n function hasCmdRepeated(a, b, cmdHistory) {\n return cmdHistory.a === a && cmdHistory.b === b;\n }\n function createCmdHistory() {\n return {\n a: null,\n b: null\n };\n }\n\n var OutputFilter = /*#__PURE__*/function () {\n function OutputFilter(timelineController, trackName) {\n this.timelineController = void 0;\n this.cueRanges = [];\n this.trackName = void 0;\n this.startTime = null;\n this.endTime = null;\n this.screen = null;\n this.timelineController = timelineController;\n this.trackName = trackName;\n }\n var _proto = OutputFilter.prototype;\n _proto.dispatchCue = function dispatchCue() {\n if (this.startTime === null) {\n return;\n }\n this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges);\n this.startTime = null;\n };\n _proto.newCue = function newCue(startTime, endTime, screen) {\n if (this.startTime === null || this.startTime > startTime) {\n this.startTime = startTime;\n }\n this.endTime = endTime;\n this.screen = screen;\n this.timelineController.createCaptionsTrack(this.trackName);\n };\n _proto.reset = function reset() {\n this.cueRanges = [];\n this.startTime = null;\n };\n return OutputFilter;\n }();\n\n /**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n var VTTCue = (function () {\n if (optionalSelf != null && optionalSelf.VTTCue) {\n return self.VTTCue;\n }\n var AllowedDirections = ['', 'lr', 'rl'];\n var AllowedAlignments = ['start', 'middle', 'end', 'left', 'right'];\n function isAllowedValue(allowed, value) {\n if (typeof value !== 'string') {\n return false;\n }\n // necessary for assuring the generic conforms to the Array interface\n if (!Array.isArray(allowed)) {\n return false;\n }\n // reset the type so that the next narrowing works well\n var lcValue = value.toLowerCase();\n // use the allow list to narrow the type to a specific subset of strings\n if (~allowed.indexOf(lcValue)) {\n return lcValue;\n }\n return false;\n }\n function findDirectionSetting(value) {\n return isAllowedValue(AllowedDirections, value);\n }\n function findAlignSetting(value) {\n return isAllowedValue(AllowedAlignments, value);\n }\n function extend(obj) {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n var i = 1;\n for (; i < arguments.length; i++) {\n var cobj = arguments[i];\n for (var p in cobj) {\n obj[p] = cobj[p];\n }\n }\n return obj;\n }\n function VTTCue(startTime, endTime, text) {\n var cue = this;\n var baseObj = {\n enumerable: true\n };\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n cue.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = '';\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = '';\n var _snapToLines = true;\n var _line = 'auto';\n var _lineAlign = 'start';\n var _position = 50;\n var _positionAlign = 'middle';\n var _size = 50;\n var _align = 'middle';\n Object.defineProperty(cue, 'id', extend({}, baseObj, {\n get: function get() {\n return _id;\n },\n set: function set(value) {\n _id = '' + value;\n }\n }));\n Object.defineProperty(cue, 'pauseOnExit', extend({}, baseObj, {\n get: function get() {\n return _pauseOnExit;\n },\n set: function set(value) {\n _pauseOnExit = !!value;\n }\n }));\n Object.defineProperty(cue, 'startTime', extend({}, baseObj, {\n get: function get() {\n return _startTime;\n },\n set: function set(value) {\n if (typeof value !== 'number') {\n throw new TypeError('Start time must be set to a number.');\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'endTime', extend({}, baseObj, {\n get: function get() {\n return _endTime;\n },\n set: function set(value) {\n if (typeof value !== 'number') {\n throw new TypeError('End time must be set to a number.');\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'text', extend({}, baseObj, {\n get: function get() {\n return _text;\n },\n set: function set(value) {\n _text = '' + value;\n this.hasBeenReset = true;\n }\n }));\n\n // todo: implement VTTRegion polyfill?\n Object.defineProperty(cue, 'region', extend({}, baseObj, {\n get: function get() {\n return _region;\n },\n set: function set(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'vertical', extend({}, baseObj, {\n get: function get() {\n return _vertical;\n },\n set: function set(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'snapToLines', extend({}, baseObj, {\n get: function get() {\n return _snapToLines;\n },\n set: function set(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'line', extend({}, baseObj, {\n get: function get() {\n return _line;\n },\n set: function set(value) {\n if (typeof value !== 'number' && value !== 'auto') {\n throw new SyntaxError('An invalid number or illegal string was specified.');\n }\n _line = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'lineAlign', extend({}, baseObj, {\n get: function get() {\n return _lineAlign;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'position', extend({}, baseObj, {\n get: function get() {\n return _position;\n },\n set: function set(value) {\n if (value < 0 || value > 100) {\n throw new Error('Position must be between 0 and 100.');\n }\n _position = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'positionAlign', extend({}, baseObj, {\n get: function get() {\n return _positionAlign;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'size', extend({}, baseObj, {\n get: function get() {\n return _size;\n },\n set: function set(value) {\n if (value < 0 || value > 100) {\n throw new Error('Size must be between 0 and 100.');\n }\n _size = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'align', extend({}, baseObj, {\n get: function get() {\n return _align;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }));\n\n /**\n * Other <track> spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n cue.displayState = undefined;\n }\n\n /**\n * VTTCue methods\n */\n\n VTTCue.prototype.getCueAsHTML = function () {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n var WebVTT = self.WebVTT;\n return WebVTT.convertCueToDOMTree(self, this.text);\n };\n // this is a polyfill hack\n return VTTCue;\n })();\n\n /*\n * Source: https://github.com/mozilla/vtt.js/blob/master/dist/vtt.js\n */\n\n var StringDecoder = /*#__PURE__*/function () {\n function StringDecoder() {}\n var _proto = StringDecoder.prototype;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.decode = function decode(data, options) {\n if (!data) {\n return '';\n }\n if (typeof data !== 'string') {\n throw new Error('Error - expected string data.');\n }\n return decodeURIComponent(encodeURIComponent(data));\n };\n return StringDecoder;\n }(); // Try to parse input as a time stamp.\n function parseTimeStamp(input) {\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + parseFloat(f || 0);\n }\n var m = input.match(/^(?:(\\d+):)?(\\d{2}):(\\d{2})(\\.\\d+)?/);\n if (!m) {\n return null;\n }\n if (parseFloat(m[2]) > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[2], m[3], 0, m[4]);\n }\n // Timestamp takes the form of [hours (optional)]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3], m[4]);\n }\n\n // A settings object holds key/value pairs and will ignore anything but the first\n // assignment to a specific key.\n var Settings = /*#__PURE__*/function () {\n function Settings() {\n this.values = Object.create(null);\n }\n var _proto2 = Settings.prototype;\n // Only accept the first assignment to any key.\n _proto2.set = function set(k, v) {\n if (!this.get(k) && v !== '') {\n this.values[k] = v;\n }\n }\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n ;\n _proto2.get = function get(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n }\n // Check whether we have a value for a key.\n ;\n _proto2.has = function has(k) {\n return k in this.values;\n }\n // Accept a setting if its one of the given alternatives.\n ;\n _proto2.alt = function alt(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n }\n // Accept a setting if its a valid (signed) integer.\n ;\n _proto2.integer = function integer(k, v) {\n if (/^-?\\d+$/.test(v)) {\n // integer\n this.set(k, parseInt(v, 10));\n }\n }\n // Accept a setting if its a valid percentage.\n ;\n _proto2.percent = function percent(k, v) {\n if (/^([\\d]{1,3})(\\.[\\d]*)?%$/.test(v)) {\n var percent = parseFloat(v);\n if (percent >= 0 && percent <= 100) {\n this.set(k, percent);\n return true;\n }\n }\n return false;\n };\n return Settings;\n }(); // Helper function to parse input into groups separated by 'groupDelim', and\n // interpret each group as a key/value pair separated by 'keyValueDelim'.\n function parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== 'string') {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var _k = kv[0];\n var _v = kv[1];\n callback(_k, _v);\n }\n }\n var defaults = new VTTCue(0, 0, '');\n // 'middle' was changed to 'center' in the spec: https://github.com/w3c/webvtt/pull/244\n // Safari doesn't yet support this change, but FF and Chrome do.\n var center = defaults.align === 'middle' ? 'middle' : 'center';\n function parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n throw new Error('Malformed timestamp: ' + oInput);\n }\n\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, '');\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n parseOptions(input, function (k, v) {\n var vals;\n switch (k) {\n case 'region':\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case 'vertical':\n settings.alt(k, v, ['rl', 'lr']);\n break;\n case 'line':\n vals = v.split(',');\n settings.integer(k, vals[0]);\n if (settings.percent(k, vals[0])) {\n settings.set('snapToLines', false);\n }\n settings.alt(k, vals[0], ['auto']);\n if (vals.length === 2) {\n settings.alt('lineAlign', vals[1], ['start', center, 'end']);\n }\n break;\n case 'position':\n vals = v.split(',');\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt('positionAlign', vals[1], ['start', center, 'end', 'line-left', 'line-right', 'auto']);\n }\n break;\n case 'size':\n settings.percent(k, v);\n break;\n case 'align':\n settings.alt(k, v, ['start', center, 'end', 'left', 'right']);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get('region', null);\n cue.vertical = settings.get('vertical', '');\n var line = settings.get('line', 'auto');\n if (line === 'auto' && defaults.line === -1) {\n // set numeric line number for Safari\n line = -1;\n }\n cue.line = line;\n cue.lineAlign = settings.get('lineAlign', 'start');\n cue.snapToLines = settings.get('snapToLines', true);\n cue.size = settings.get('size', 100);\n cue.align = settings.get('align', center);\n var position = settings.get('position', 'auto');\n if (position === 'auto' && defaults.position === 50) {\n // set numeric position for Safari\n position = cue.align === 'start' || cue.align === 'left' ? 0 : cue.align === 'end' || cue.align === 'right' ? 100 : 50;\n }\n cue.position = position;\n }\n function skipWhitespace() {\n input = input.replace(/^\\s+/, '');\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.slice(0, 3) !== '-->') {\n // (3) next characters must match '-->'\n throw new Error(\"Malformed time stamp (time stamps must be separated by '-->'): \" + oInput);\n }\n input = input.slice(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n }\n function fixLineBreaks(input) {\n return input.replace(/<br(?: \\/)?>/gi, '\\n');\n }\n var VTTParser = /*#__PURE__*/function () {\n function VTTParser() {\n this.state = 'INITIAL';\n this.buffer = '';\n this.decoder = new StringDecoder();\n this.regionList = [];\n this.cue = null;\n this.oncue = void 0;\n this.onparsingerror = void 0;\n this.onflush = void 0;\n }\n var _proto3 = VTTParser.prototype;\n _proto3.parse = function parse(data) {\n var _this = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n _this.buffer += _this.decoder.decode(data, {\n stream: true\n });\n }\n function collectNextLine() {\n var buffer = _this.buffer;\n var pos = 0;\n buffer = fixLineBreaks(buffer);\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.slice(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n _this.buffer = buffer.slice(pos);\n return line;\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n parseOptions(input, function (k, v) {\n // switch (k) {\n // case 'region':\n // 3.3 WebVTT region metadata header syntax\n // console.log('parse region', v);\n // parseRegion(v);\n // break;\n // }\n }, /:/);\n }\n\n // 5.1 WebVTT file parsing.\n try {\n var line = '';\n if (_this.state === 'INITIAL') {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(_this.buffer)) {\n return this;\n }\n line = collectNextLine();\n // strip of UTF-8 BOM if any\n // https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n var m = line.match(/^()?WEBVTT([ \\t].*)?$/);\n if (!(m != null && m[0])) {\n throw new Error('Malformed WebVTT signature.');\n }\n _this.state = 'HEADER';\n }\n var alreadyCollectedLine = false;\n while (_this.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(_this.buffer)) {\n return this;\n }\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n switch (_this.state) {\n case 'HEADER':\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n _this.state = 'ID';\n }\n continue;\n case 'NOTE':\n // Ignore NOTE blocks.\n if (!line) {\n _this.state = 'ID';\n }\n continue;\n case 'ID':\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n _this.state = 'NOTE';\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n _this.cue = new VTTCue(0, 0, '');\n _this.state = 'CUE';\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf('-->') === -1) {\n _this.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /* falls through */\n case 'CUE':\n // 40 - Collect cue timings and settings.\n if (!_this.cue) {\n _this.state = 'BADCUE';\n continue;\n }\n try {\n parseCue(line, _this.cue, _this.regionList);\n } catch (e) {\n // In case of an error ignore rest of the cue.\n _this.cue = null;\n _this.state = 'BADCUE';\n continue;\n }\n _this.state = 'CUETEXT';\n continue;\n case 'CUETEXT':\n {\n var hasSubstring = line.indexOf('-->') !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n if (_this.oncue && _this.cue) {\n _this.oncue(_this.cue);\n }\n _this.cue = null;\n _this.state = 'ID';\n continue;\n }\n if (_this.cue === null) {\n continue;\n }\n if (_this.cue.text) {\n _this.cue.text += '\\n';\n }\n _this.cue.text += line;\n }\n continue;\n case 'BADCUE':\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n _this.state = 'ID';\n }\n }\n }\n } catch (e) {\n // If we are currently parsing a cue, report what we have.\n if (_this.state === 'CUETEXT' && _this.cue && _this.oncue) {\n _this.oncue(_this.cue);\n }\n _this.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n _this.state = _this.state === 'INITIAL' ? 'BADWEBVTT' : 'BADCUE';\n }\n return this;\n };\n _proto3.flush = function flush() {\n var _this = this;\n try {\n // Finish decoding the stream.\n // _this.buffer += _this.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (_this.cue || _this.state === 'HEADER') {\n _this.buffer += '\\n\\n';\n _this.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (_this.state === 'INITIAL' || _this.state === 'BADWEBVTT') {\n throw new Error('Malformed WebVTT signature.');\n }\n } catch (e) {\n if (_this.onparsingerror) {\n _this.onparsingerror(e);\n }\n }\n if (_this.onflush) {\n _this.onflush();\n }\n return this;\n };\n return VTTParser;\n }();\n\n var LINEBREAKS = /\\r\\n|\\n\\r|\\n|\\r/g;\n\n // String.prototype.startsWith is not supported in IE11\n var startsWith = function startsWith(inputString, searchString, position) {\n if (position === void 0) {\n position = 0;\n }\n return inputString.slice(position, position + searchString.length) === searchString;\n };\n var cueString2millis = function cueString2millis(timeString) {\n var ts = parseInt(timeString.slice(-3));\n var secs = parseInt(timeString.slice(-6, -4));\n var mins = parseInt(timeString.slice(-9, -7));\n var hours = timeString.length > 9 ? parseInt(timeString.substring(0, timeString.indexOf(':'))) : 0;\n if (!isFiniteNumber(ts) || !isFiniteNumber(secs) || !isFiniteNumber(mins) || !isFiniteNumber(hours)) {\n throw Error(\"Malformed X-TIMESTAMP-MAP: Local:\" + timeString);\n }\n ts += 1000 * secs;\n ts += 60 * 1000 * mins;\n ts += 60 * 60 * 1000 * hours;\n return ts;\n };\n\n // From https://github.com/darkskyapp/string-hash\n var hash = function hash(text) {\n var hash = 5381;\n var i = text.length;\n while (i) {\n hash = hash * 33 ^ text.charCodeAt(--i);\n }\n return (hash >>> 0).toString();\n };\n\n // Create a unique hash id for a cue based on start/end times and text.\n // This helps timeline-controller to avoid showing repeated captions.\n function generateCueId(startTime, endTime, text) {\n return hash(startTime.toString()) + hash(endTime.toString()) + hash(text);\n }\n var calculateOffset = function calculateOffset(vttCCs, cc, presentationTime) {\n var currCC = vttCCs[cc];\n var prevCC = vttCCs[currCC.prevCC];\n\n // This is the first discontinuity or cues have been processed since the last discontinuity\n // Offset = current discontinuity time\n if (!prevCC || !prevCC.new && currCC.new) {\n vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start;\n currCC.new = false;\n return;\n }\n\n // There have been discontinuities since cues were last parsed.\n // Offset = time elapsed\n while ((_prevCC = prevCC) != null && _prevCC.new) {\n var _prevCC;\n vttCCs.ccOffset += currCC.start - prevCC.start;\n currCC.new = false;\n currCC = prevCC;\n prevCC = vttCCs[currCC.prevCC];\n }\n vttCCs.presentationOffset = presentationTime;\n };\n function parseWebVTT(vttByteArray, initPTS, vttCCs, cc, timeOffset, callBack, errorCallBack) {\n var parser = new VTTParser();\n // Convert byteArray into string, replacing any somewhat exotic linefeeds with \"\\n\", then split on that character.\n // Uint8Array.prototype.reduce is not implemented in IE11\n var vttLines = utf8ArrayToStr(new Uint8Array(vttByteArray)).trim().replace(LINEBREAKS, '\\n').split('\\n');\n var cues = [];\n var init90kHz = initPTS ? toMpegTsClockFromTimescale(initPTS.baseTime, initPTS.timescale) : 0;\n var cueTime = '00:00.000';\n var timestampMapMPEGTS = 0;\n var timestampMapLOCAL = 0;\n var parsingError;\n var inHeader = true;\n parser.oncue = function (cue) {\n // Adjust cue timing; clamp cues to start no earlier than - and drop cues that don't end after - 0 on timeline.\n var currCC = vttCCs[cc];\n var cueOffset = vttCCs.ccOffset;\n\n // Calculate subtitle PTS offset\n var webVttMpegTsMapOffset = (timestampMapMPEGTS - init90kHz) / 90000;\n\n // Update offsets for new discontinuities\n if (currCC != null && currCC.new) {\n if (timestampMapLOCAL !== undefined) {\n // When local time is provided, offset = discontinuity start time - local time\n cueOffset = vttCCs.ccOffset = currCC.start;\n } else {\n calculateOffset(vttCCs, cc, webVttMpegTsMapOffset);\n }\n }\n if (webVttMpegTsMapOffset) {\n if (!initPTS) {\n parsingError = new Error('Missing initPTS for VTT MPEGTS');\n return;\n }\n // If we have MPEGTS, offset = presentation time + discontinuity offset\n cueOffset = webVttMpegTsMapOffset - vttCCs.presentationOffset;\n }\n var duration = cue.endTime - cue.startTime;\n var startTime = normalizePts((cue.startTime + cueOffset - timestampMapLOCAL) * 90000, timeOffset * 90000) / 90000;\n cue.startTime = Math.max(startTime, 0);\n cue.endTime = Math.max(startTime + duration, 0);\n\n //trim trailing webvtt block whitespaces\n var text = cue.text.trim();\n\n // Fix encoding of special characters\n cue.text = decodeURIComponent(encodeURIComponent(text));\n\n // If the cue was not assigned an id from the VTT file (line above the content), create one.\n if (!cue.id) {\n cue.id = generateCueId(cue.startTime, cue.endTime, text);\n }\n if (cue.endTime > 0) {\n cues.push(cue);\n }\n };\n parser.onparsingerror = function (error) {\n parsingError = error;\n };\n parser.onflush = function () {\n if (parsingError) {\n errorCallBack(parsingError);\n return;\n }\n callBack(cues);\n };\n\n // Go through contents line by line.\n vttLines.forEach(function (line) {\n if (inHeader) {\n // Look for X-TIMESTAMP-MAP in header.\n if (startsWith(line, 'X-TIMESTAMP-MAP=')) {\n // Once found, no more are allowed anyway, so stop searching.\n inHeader = false;\n // Extract LOCAL and MPEGTS.\n line.slice(16).split(',').forEach(function (timestamp) {\n if (startsWith(timestamp, 'LOCAL:')) {\n cueTime = timestamp.slice(6);\n } else if (startsWith(timestamp, 'MPEGTS:')) {\n timestampMapMPEGTS = parseInt(timestamp.slice(7));\n }\n });\n try {\n // Convert cue time to seconds\n timestampMapLOCAL = cueString2millis(cueTime) / 1000;\n } catch (error) {\n parsingError = error;\n }\n // Return without parsing X-TIMESTAMP-MAP line.\n return;\n } else if (line === '') {\n inHeader = false;\n }\n }\n // Parse line by default.\n parser.parse(line + '\\n');\n });\n parser.flush();\n }\n\n var IMSC1_CODEC = 'stpp.ttml.im1t';\n\n // Time format: h:m:s:frames(.subframes)\n var HMSF_REGEX = /^(\\d{2,}):(\\d{2}):(\\d{2}):(\\d{2})\\.?(\\d+)?$/;\n\n // Time format: hours, minutes, seconds, milliseconds, frames, ticks\n var TIME_UNIT_REGEX = /^(\\d*(?:\\.\\d*)?)(h|m|s|ms|f|t)$/;\n var textAlignToLineAlign = {\n left: 'start',\n center: 'center',\n right: 'end',\n start: 'start',\n end: 'end'\n };\n function parseIMSC1(payload, initPTS, callBack, errorCallBack) {\n var results = findBox(new Uint8Array(payload), ['mdat']);\n if (results.length === 0) {\n errorCallBack(new Error('Could not parse IMSC1 mdat'));\n return;\n }\n var ttmlList = results.map(function (mdat) {\n return utf8ArrayToStr(mdat);\n });\n var syncTime = toTimescaleFromScale(initPTS.baseTime, 1, initPTS.timescale);\n try {\n ttmlList.forEach(function (ttml) {\n return callBack(parseTTML(ttml, syncTime));\n });\n } catch (error) {\n errorCallBack(error);\n }\n }\n function parseTTML(ttml, syncTime) {\n var parser = new DOMParser();\n var xmlDoc = parser.parseFromString(ttml, 'text/xml');\n var tt = xmlDoc.getElementsByTagName('tt')[0];\n if (!tt) {\n throw new Error('Invalid ttml');\n }\n var defaultRateInfo = {\n frameRate: 30,\n subFrameRate: 1,\n frameRateMultiplier: 0,\n tickRate: 0\n };\n var rateInfo = Object.keys(defaultRateInfo).reduce(function (result, key) {\n result[key] = tt.getAttribute(\"ttp:\" + key) || defaultRateInfo[key];\n return result;\n }, {});\n var trim = tt.getAttribute('xml:space') !== 'preserve';\n var styleElements = collectionToDictionary(getElementCollection(tt, 'styling', 'style'));\n var regionElements = collectionToDictionary(getElementCollection(tt, 'layout', 'region'));\n var cueElements = getElementCollection(tt, 'body', '[begin]');\n return [].map.call(cueElements, function (cueElement) {\n var cueText = getTextContent(cueElement, trim);\n if (!cueText || !cueElement.hasAttribute('begin')) {\n return null;\n }\n var startTime = parseTtmlTime(cueElement.getAttribute('begin'), rateInfo);\n var duration = parseTtmlTime(cueElement.getAttribute('dur'), rateInfo);\n var endTime = parseTtmlTime(cueElement.getAttribute('end'), rateInfo);\n if (startTime === null) {\n throw timestampParsingError(cueElement);\n }\n if (endTime === null) {\n if (duration === null) {\n throw timestampParsingError(cueElement);\n }\n endTime = startTime + duration;\n }\n var cue = new VTTCue(startTime - syncTime, endTime - syncTime, cueText);\n cue.id = generateCueId(cue.startTime, cue.endTime, cue.text);\n var region = regionElements[cueElement.getAttribute('region')];\n var style = styleElements[cueElement.getAttribute('style')];\n\n // Apply styles to cue\n var styles = getTtmlStyles(region, style, styleElements);\n var textAlign = styles.textAlign;\n if (textAlign) {\n // cue.positionAlign not settable in FF~2016\n var lineAlign = textAlignToLineAlign[textAlign];\n if (lineAlign) {\n cue.lineAlign = lineAlign;\n }\n cue.align = textAlign;\n }\n _extends(cue, styles);\n return cue;\n }).filter(function (cue) {\n return cue !== null;\n });\n }\n function getElementCollection(fromElement, parentName, childName) {\n var parent = fromElement.getElementsByTagName(parentName)[0];\n if (parent) {\n return [].slice.call(parent.querySelectorAll(childName));\n }\n return [];\n }\n function collectionToDictionary(elementsWithId) {\n return elementsWithId.reduce(function (dict, element) {\n var id = element.getAttribute('xml:id');\n if (id) {\n dict[id] = element;\n }\n return dict;\n }, {});\n }\n function getTextContent(element, trim) {\n return [].slice.call(element.childNodes).reduce(function (str, node, i) {\n var _node$childNodes;\n if (node.nodeName === 'br' && i) {\n return str + '\\n';\n }\n if ((_node$childNodes = node.childNodes) != null && _node$childNodes.length) {\n return getTextContent(node, trim);\n } else if (trim) {\n return str + node.textContent.trim().replace(/\\s+/g, ' ');\n }\n return str + node.textContent;\n }, '');\n }\n function getTtmlStyles(region, style, styleElements) {\n var ttsNs = 'http://www.w3.org/ns/ttml#styling';\n var regionStyle = null;\n var styleAttributes = ['displayAlign', 'textAlign', 'color', 'backgroundColor', 'fontSize', 'fontFamily'\n // 'fontWeight',\n // 'lineHeight',\n // 'wrapOption',\n // 'fontStyle',\n // 'direction',\n // 'writingMode'\n ];\n var regionStyleName = region != null && region.hasAttribute('style') ? region.getAttribute('style') : null;\n if (regionStyleName && styleElements.hasOwnProperty(regionStyleName)) {\n regionStyle = styleElements[regionStyleName];\n }\n return styleAttributes.reduce(function (styles, name) {\n var value = getAttributeNS(style, ttsNs, name) || getAttributeNS(region, ttsNs, name) || getAttributeNS(regionStyle, ttsNs, name);\n if (value) {\n styles[name] = value;\n }\n return styles;\n }, {});\n }\n function getAttributeNS(element, ns, name) {\n if (!element) {\n return null;\n }\n return element.hasAttributeNS(ns, name) ? element.getAttributeNS(ns, name) : null;\n }\n function timestampParsingError(node) {\n return new Error(\"Could not parse ttml timestamp \" + node);\n }\n function parseTtmlTime(timeAttributeValue, rateInfo) {\n if (!timeAttributeValue) {\n return null;\n }\n var seconds = parseTimeStamp(timeAttributeValue);\n if (seconds === null) {\n if (HMSF_REGEX.test(timeAttributeValue)) {\n seconds = parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo);\n } else if (TIME_UNIT_REGEX.test(timeAttributeValue)) {\n seconds = parseTimeUnits(timeAttributeValue, rateInfo);\n }\n }\n return seconds;\n }\n function parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo) {\n var m = HMSF_REGEX.exec(timeAttributeValue);\n var frames = (m[4] | 0) + (m[5] | 0) / rateInfo.subFrameRate;\n return (m[1] | 0) * 3600 + (m[2] | 0) * 60 + (m[3] | 0) + frames / rateInfo.frameRate;\n }\n function parseTimeUnits(timeAttributeValue, rateInfo) {\n var m = TIME_UNIT_REGEX.exec(timeAttributeValue);\n var value = Number(m[1]);\n var unit = m[2];\n switch (unit) {\n case 'h':\n return value * 3600;\n case 'm':\n return value * 60;\n case 'ms':\n return value * 1000;\n case 'f':\n return value / rateInfo.frameRate;\n case 't':\n return value / rateInfo.tickRate;\n }\n return value;\n }\n\n var TimelineController = /*#__PURE__*/function () {\n function TimelineController(hls) {\n this.hls = void 0;\n this.media = null;\n this.config = void 0;\n this.enabled = true;\n this.Cues = void 0;\n this.textTracks = [];\n this.tracks = [];\n this.initPTS = [];\n this.unparsedVttFrags = [];\n this.captionsTracks = {};\n this.nonNativeCaptionsTracks = {};\n this.cea608Parser1 = void 0;\n this.cea608Parser2 = void 0;\n this.lastCc = -1;\n // Last video (CEA-608) fragment CC\n this.lastSn = -1;\n // Last video (CEA-608) fragment MSN\n this.lastPartIndex = -1;\n // Last video (CEA-608) fragment Part Index\n this.prevCC = -1;\n // Last subtitle fragment CC\n this.vttCCs = newVTTCCs();\n this.captionsProperties = void 0;\n this.hls = hls;\n this.config = hls.config;\n this.Cues = hls.config.cueHandler;\n this.captionsProperties = {\n textTrack1: {\n label: this.config.captionsTextTrack1Label,\n languageCode: this.config.captionsTextTrack1LanguageCode\n },\n textTrack2: {\n label: this.config.captionsTextTrack2Label,\n languageCode: this.config.captionsTextTrack2LanguageCode\n },\n textTrack3: {\n label: this.config.captionsTextTrack3Label,\n languageCode: this.config.captionsTextTrack3LanguageCode\n },\n textTrack4: {\n label: this.config.captionsTextTrack4Label,\n languageCode: this.config.captionsTextTrack4LanguageCode\n }\n };\n hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.on(Events.FRAG_LOADING, this.onFragLoading, this);\n hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n hls.on(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n hls.on(Events.FRAG_DECRYPTED, this.onFragDecrypted, this);\n hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.on(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n }\n var _proto = TimelineController.prototype;\n _proto.destroy = function destroy() {\n var hls = this.hls;\n hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.off(Events.FRAG_LOADING, this.onFragLoading, this);\n hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n hls.off(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n hls.off(Events.FRAG_DECRYPTED, this.onFragDecrypted, this);\n hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.off(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n // @ts-ignore\n this.hls = this.config = null;\n this.cea608Parser1 = this.cea608Parser2 = undefined;\n };\n _proto.initCea608Parsers = function initCea608Parsers() {\n if (this.config.enableCEA708Captions && (!this.cea608Parser1 || !this.cea608Parser2)) {\n var channel1 = new OutputFilter(this, 'textTrack1');\n var channel2 = new OutputFilter(this, 'textTrack2');\n var channel3 = new OutputFilter(this, 'textTrack3');\n var channel4 = new OutputFilter(this, 'textTrack4');\n this.cea608Parser1 = new Cea608Parser(1, channel1, channel2);\n this.cea608Parser2 = new Cea608Parser(3, channel3, channel4);\n }\n };\n _proto.addCues = function addCues(trackName, startTime, endTime, screen, cueRanges) {\n // skip cues which overlap more than 50% with previously parsed time ranges\n var merged = false;\n for (var i = cueRanges.length; i--;) {\n var cueRange = cueRanges[i];\n var overlap = intersection(cueRange[0], cueRange[1], startTime, endTime);\n if (overlap >= 0) {\n cueRange[0] = Math.min(cueRange[0], startTime);\n cueRange[1] = Math.max(cueRange[1], endTime);\n merged = true;\n if (overlap / (endTime - startTime) > 0.5) {\n return;\n }\n }\n }\n if (!merged) {\n cueRanges.push([startTime, endTime]);\n }\n if (this.config.renderTextTracksNatively) {\n var track = this.captionsTracks[trackName];\n this.Cues.newCue(track, startTime, endTime, screen);\n } else {\n var cues = this.Cues.newCue(null, startTime, endTime, screen);\n this.hls.trigger(Events.CUES_PARSED, {\n type: 'captions',\n cues: cues,\n track: trackName\n });\n }\n }\n\n // Triggered when an initial PTS is found; used for synchronisation of WebVTT.\n ;\n _proto.onInitPtsFound = function onInitPtsFound(event, _ref) {\n var _this = this;\n var frag = _ref.frag,\n id = _ref.id,\n initPTS = _ref.initPTS,\n timescale = _ref.timescale;\n var unparsedVttFrags = this.unparsedVttFrags;\n if (id === 'main') {\n this.initPTS[frag.cc] = {\n baseTime: initPTS,\n timescale: timescale\n };\n }\n\n // Due to asynchronous processing, initial PTS may arrive later than the first VTT fragments are loaded.\n // Parse any unparsed fragments upon receiving the initial PTS.\n if (unparsedVttFrags.length) {\n this.unparsedVttFrags = [];\n unparsedVttFrags.forEach(function (frag) {\n _this.onFragLoaded(Events.FRAG_LOADED, frag);\n });\n }\n };\n _proto.getExistingTrack = function getExistingTrack(label, language) {\n var media = this.media;\n if (media) {\n for (var i = 0; i < media.textTracks.length; i++) {\n var textTrack = media.textTracks[i];\n if (canReuseVttTextTrack(textTrack, {\n name: label,\n lang: language,\n attrs: {}\n })) {\n return textTrack;\n }\n }\n }\n return null;\n };\n _proto.createCaptionsTrack = function createCaptionsTrack(trackName) {\n if (this.config.renderTextTracksNatively) {\n this.createNativeTrack(trackName);\n } else {\n this.createNonNativeTrack(trackName);\n }\n };\n _proto.createNativeTrack = function createNativeTrack(trackName) {\n if (this.captionsTracks[trackName]) {\n return;\n }\n var captionsProperties = this.captionsProperties,\n captionsTracks = this.captionsTracks,\n media = this.media;\n var _captionsProperties$t = captionsProperties[trackName],\n label = _captionsProperties$t.label,\n languageCode = _captionsProperties$t.languageCode;\n // Enable reuse of existing text track.\n var existingTrack = this.getExistingTrack(label, languageCode);\n if (!existingTrack) {\n var textTrack = this.createTextTrack('captions', label, languageCode);\n if (textTrack) {\n // Set a special property on the track so we know it's managed by Hls.js\n textTrack[trackName] = true;\n captionsTracks[trackName] = textTrack;\n }\n } else {\n captionsTracks[trackName] = existingTrack;\n clearCurrentCues(captionsTracks[trackName]);\n sendAddTrackEvent(captionsTracks[trackName], media);\n }\n };\n _proto.createNonNativeTrack = function createNonNativeTrack(trackName) {\n if (this.nonNativeCaptionsTracks[trackName]) {\n return;\n }\n // Create a list of a single track for the provider to consume\n var trackProperties = this.captionsProperties[trackName];\n if (!trackProperties) {\n return;\n }\n var label = trackProperties.label;\n var track = {\n _id: trackName,\n label: label,\n kind: 'captions',\n default: trackProperties.media ? !!trackProperties.media.default : false,\n closedCaptions: trackProperties.media\n };\n this.nonNativeCaptionsTracks[trackName] = track;\n this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, {\n tracks: [track]\n });\n };\n _proto.createTextTrack = function createTextTrack(kind, label, lang) {\n var media = this.media;\n if (!media) {\n return;\n }\n return media.addTextTrack(kind, label, lang);\n };\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n this.media = data.media;\n this._cleanTracks();\n };\n _proto.onMediaDetaching = function onMediaDetaching() {\n var captionsTracks = this.captionsTracks;\n Object.keys(captionsTracks).forEach(function (trackName) {\n clearCurrentCues(captionsTracks[trackName]);\n delete captionsTracks[trackName];\n });\n this.nonNativeCaptionsTracks = {};\n };\n _proto.onManifestLoading = function onManifestLoading() {\n // Detect discontinuity in video fragment (CEA-608) parsing\n this.lastCc = -1;\n this.lastSn = -1;\n this.lastPartIndex = -1;\n // Detect discontinuity in subtitle manifests\n this.prevCC = -1;\n this.vttCCs = newVTTCCs();\n // Reset tracks\n this._cleanTracks();\n this.tracks = [];\n this.captionsTracks = {};\n this.nonNativeCaptionsTracks = {};\n this.textTracks = [];\n this.unparsedVttFrags = [];\n this.initPTS = [];\n if (this.cea608Parser1 && this.cea608Parser2) {\n this.cea608Parser1.reset();\n this.cea608Parser2.reset();\n }\n };\n _proto._cleanTracks = function _cleanTracks() {\n // clear outdated subtitles\n var media = this.media;\n if (!media) {\n return;\n }\n var textTracks = media.textTracks;\n if (textTracks) {\n for (var i = 0; i < textTracks.length; i++) {\n clearCurrentCues(textTracks[i]);\n }\n }\n };\n _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(event, data) {\n var _this2 = this;\n var tracks = data.subtitleTracks || [];\n var hasIMSC1 = tracks.some(function (track) {\n return track.textCodec === IMSC1_CODEC;\n });\n if (this.config.enableWebVTT || hasIMSC1 && this.config.enableIMSC1) {\n var listIsIdentical = subtitleOptionsIdentical(this.tracks, tracks);\n if (listIsIdentical) {\n this.tracks = tracks;\n return;\n }\n this.textTracks = [];\n this.tracks = tracks;\n if (this.config.renderTextTracksNatively) {\n var media = this.media;\n var inUseTracks = media ? filterSubtitleTracks(media.textTracks) : null;\n this.tracks.forEach(function (track, index) {\n // Reuse tracks with the same label and lang, but do not reuse 608/708 tracks\n var textTrack;\n if (inUseTracks) {\n var inUseTrack = null;\n for (var i = 0; i < inUseTracks.length; i++) {\n if (inUseTracks[i] && canReuseVttTextTrack(inUseTracks[i], track)) {\n inUseTrack = inUseTracks[i];\n inUseTracks[i] = null;\n break;\n }\n }\n if (inUseTrack) {\n textTrack = inUseTrack;\n }\n }\n if (textTrack) {\n clearCurrentCues(textTrack);\n } else {\n var textTrackKind = captionsOrSubtitlesFromCharacteristics(track);\n textTrack = _this2.createTextTrack(textTrackKind, track.name, track.lang);\n if (textTrack) {\n textTrack.mode = 'disabled';\n }\n }\n if (textTrack) {\n _this2.textTracks.push(textTrack);\n }\n });\n // Warn when video element has captions or subtitle TextTracks carried over from another source\n if (inUseTracks != null && inUseTracks.length) {\n var unusedTextTracks = inUseTracks.filter(function (t) {\n return t !== null;\n }).map(function (t) {\n return t.label;\n });\n if (unusedTextTracks.length) {\n logger.warn(\"Media element contains unused subtitle tracks: \" + unusedTextTracks.join(', ') + \". Replace media element for each source to clear TextTracks and captions menu.\");\n }\n }\n } else if (this.tracks.length) {\n // Create a list of tracks for the provider to consume\n var tracksList = this.tracks.map(function (track) {\n return {\n label: track.name,\n kind: track.type.toLowerCase(),\n default: track.default,\n subtitleTrack: track\n };\n });\n this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, {\n tracks: tracksList\n });\n }\n }\n };\n _proto.onManifestLoaded = function onManifestLoaded(event, data) {\n var _this3 = this;\n if (this.config.enableCEA708Captions && data.captions) {\n data.captions.forEach(function (captionsTrack) {\n var instreamIdMatch = /(?:CC|SERVICE)([1-4])/.exec(captionsTrack.instreamId);\n if (!instreamIdMatch) {\n return;\n }\n var trackName = \"textTrack\" + instreamIdMatch[1];\n var trackProperties = _this3.captionsProperties[trackName];\n if (!trackProperties) {\n return;\n }\n trackProperties.label = captionsTrack.name;\n if (captionsTrack.lang) {\n // optional attribute\n trackProperties.languageCode = captionsTrack.lang;\n }\n trackProperties.media = captionsTrack;\n });\n }\n };\n _proto.closedCaptionsForLevel = function closedCaptionsForLevel(frag) {\n var level = this.hls.levels[frag.level];\n return level == null ? void 0 : level.attrs['CLOSED-CAPTIONS'];\n };\n _proto.onFragLoading = function onFragLoading(event, data) {\n // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack\n if (this.enabled && data.frag.type === PlaylistLevelType.MAIN) {\n var _data$part$index, _data$part;\n var cea608Parser1 = this.cea608Parser1,\n cea608Parser2 = this.cea608Parser2,\n lastSn = this.lastSn;\n var _data$frag = data.frag,\n cc = _data$frag.cc,\n sn = _data$frag.sn;\n var partIndex = (_data$part$index = (_data$part = data.part) == null ? void 0 : _data$part.index) != null ? _data$part$index : -1;\n if (cea608Parser1 && cea608Parser2) {\n if (sn !== lastSn + 1 || sn === lastSn && partIndex !== this.lastPartIndex + 1 || cc !== this.lastCc) {\n cea608Parser1.reset();\n cea608Parser2.reset();\n }\n }\n this.lastCc = cc;\n this.lastSn = sn;\n this.lastPartIndex = partIndex;\n }\n };\n _proto.onFragLoaded = function onFragLoaded(event, data) {\n var frag = data.frag,\n payload = data.payload;\n if (frag.type === PlaylistLevelType.SUBTITLE) {\n // If fragment is subtitle type, parse as WebVTT.\n if (payload.byteLength) {\n var decryptData = frag.decryptdata;\n // fragment after decryption has a stats object\n var decrypted = ('stats' in data);\n // If the subtitles are not encrypted, parse VTTs now. Otherwise, we need to wait.\n if (decryptData == null || !decryptData.encrypted || decrypted) {\n var trackPlaylistMedia = this.tracks[frag.level];\n var vttCCs = this.vttCCs;\n if (!vttCCs[frag.cc]) {\n vttCCs[frag.cc] = {\n start: frag.start,\n prevCC: this.prevCC,\n new: true\n };\n this.prevCC = frag.cc;\n }\n if (trackPlaylistMedia && trackPlaylistMedia.textCodec === IMSC1_CODEC) {\n this._parseIMSC1(frag, payload);\n } else {\n this._parseVTTs(data);\n }\n }\n } else {\n // In case there is no payload, finish unsuccessfully.\n this.hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: new Error('Empty subtitle payload')\n });\n }\n }\n };\n _proto._parseIMSC1 = function _parseIMSC1(frag, payload) {\n var _this4 = this;\n var hls = this.hls;\n parseIMSC1(payload, this.initPTS[frag.cc], function (cues) {\n _this4._appendCues(cues, frag.level);\n hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n success: true,\n frag: frag\n });\n }, function (error) {\n logger.log(\"Failed to parse IMSC1: \" + error);\n hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: error\n });\n });\n };\n _proto._parseVTTs = function _parseVTTs(data) {\n var _frag$initSegment,\n _this5 = this;\n var frag = data.frag,\n payload = data.payload;\n // We need an initial synchronisation PTS. Store fragments as long as none has arrived\n var initPTS = this.initPTS,\n unparsedVttFrags = this.unparsedVttFrags;\n var maxAvCC = initPTS.length - 1;\n if (!initPTS[frag.cc] && maxAvCC === -1) {\n unparsedVttFrags.push(data);\n return;\n }\n var hls = this.hls;\n // Parse the WebVTT file contents.\n var payloadWebVTT = (_frag$initSegment = frag.initSegment) != null && _frag$initSegment.data ? appendUint8Array(frag.initSegment.data, new Uint8Array(payload)) : payload;\n parseWebVTT(payloadWebVTT, this.initPTS[frag.cc], this.vttCCs, frag.cc, frag.start, function (cues) {\n _this5._appendCues(cues, frag.level);\n hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n success: true,\n frag: frag\n });\n }, function (error) {\n var missingInitPTS = error.message === 'Missing initPTS for VTT MPEGTS';\n if (missingInitPTS) {\n unparsedVttFrags.push(data);\n } else {\n _this5._fallbackToIMSC1(frag, payload);\n }\n // Something went wrong while parsing. Trigger event with success false.\n logger.log(\"Failed to parse VTT cue: \" + error);\n if (missingInitPTS && maxAvCC > frag.cc) {\n return;\n }\n hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: error\n });\n });\n };\n _proto._fallbackToIMSC1 = function _fallbackToIMSC1(frag, payload) {\n var _this6 = this;\n // If textCodec is unknown, try parsing as IMSC1. Set textCodec based on the result\n var trackPlaylistMedia = this.tracks[frag.level];\n if (!trackPlaylistMedia.textCodec) {\n parseIMSC1(payload, this.initPTS[frag.cc], function () {\n trackPlaylistMedia.textCodec = IMSC1_CODEC;\n _this6._parseIMSC1(frag, payload);\n }, function () {\n trackPlaylistMedia.textCodec = 'wvtt';\n });\n }\n };\n _proto._appendCues = function _appendCues(cues, fragLevel) {\n var hls = this.hls;\n if (this.config.renderTextTracksNatively) {\n var textTrack = this.textTracks[fragLevel];\n // WebVTTParser.parse is an async method and if the currently selected text track mode is set to \"disabled\"\n // before parsing is done then don't try to access currentTrack.cues.getCueById as cues will be null\n // and trying to access getCueById method of cues will throw an exception\n // Because we check if the mode is disabled, we can force check `cues` below. They can't be null.\n if (!textTrack || textTrack.mode === 'disabled') {\n return;\n }\n cues.forEach(function (cue) {\n return addCueToTrack(textTrack, cue);\n });\n } else {\n var currentTrack = this.tracks[fragLevel];\n if (!currentTrack) {\n return;\n }\n var track = currentTrack.default ? 'default' : 'subtitles' + fragLevel;\n hls.trigger(Events.CUES_PARSED, {\n type: 'subtitles',\n cues: cues,\n track: track\n });\n }\n };\n _proto.onFragDecrypted = function onFragDecrypted(event, data) {\n var frag = data.frag;\n if (frag.type === PlaylistLevelType.SUBTITLE) {\n this.onFragLoaded(Events.FRAG_LOADED, data);\n }\n };\n _proto.onSubtitleTracksCleared = function onSubtitleTracksCleared() {\n this.tracks = [];\n this.captionsTracks = {};\n };\n _proto.onFragParsingUserdata = function onFragParsingUserdata(event, data) {\n this.initCea608Parsers();\n var cea608Parser1 = this.cea608Parser1,\n cea608Parser2 = this.cea608Parser2;\n if (!this.enabled || !cea608Parser1 || !cea608Parser2) {\n return;\n }\n var frag = data.frag,\n samples = data.samples;\n if (frag.type === PlaylistLevelType.MAIN && this.closedCaptionsForLevel(frag) === 'NONE') {\n return;\n }\n // If the event contains captions (found in the bytes property), push all bytes into the parser immediately\n // It will create the proper timestamps based on the PTS value\n for (var i = 0; i < samples.length; i++) {\n var ccBytes = samples[i].bytes;\n if (ccBytes) {\n var ccdatas = this.extractCea608Data(ccBytes);\n cea608Parser1.addData(samples[i].pts, ccdatas[0]);\n cea608Parser2.addData(samples[i].pts, ccdatas[1]);\n }\n }\n };\n _proto.onBufferFlushing = function onBufferFlushing(event, _ref2) {\n var startOffset = _ref2.startOffset,\n endOffset = _ref2.endOffset,\n endOffsetSubtitles = _ref2.endOffsetSubtitles,\n type = _ref2.type;\n var media = this.media;\n if (!media || media.currentTime < endOffset) {\n return;\n }\n // Clear 608 caption cues from the captions TextTracks when the video back buffer is flushed\n // Forward cues are never removed because we can loose streamed 608 content from recent fragments\n if (!type || type === 'video') {\n var captionsTracks = this.captionsTracks;\n Object.keys(captionsTracks).forEach(function (trackName) {\n return removeCuesInRange(captionsTracks[trackName], startOffset, endOffset);\n });\n }\n if (this.config.renderTextTracksNatively) {\n // Clear VTT/IMSC1 subtitle cues from the subtitle TextTracks when the back buffer is flushed\n if (startOffset === 0 && endOffsetSubtitles !== undefined) {\n var textTracks = this.textTracks;\n Object.keys(textTracks).forEach(function (trackName) {\n return removeCuesInRange(textTracks[trackName], startOffset, endOffsetSubtitles);\n });\n }\n }\n };\n _proto.extractCea608Data = function extractCea608Data(byteArray) {\n var actualCCBytes = [[], []];\n var count = byteArray[0] & 0x1f;\n var position = 2;\n for (var j = 0; j < count; j++) {\n var tmpByte = byteArray[position++];\n var ccbyte1 = 0x7f & byteArray[position++];\n var ccbyte2 = 0x7f & byteArray[position++];\n if (ccbyte1 === 0 && ccbyte2 === 0) {\n continue;\n }\n var ccValid = (0x04 & tmpByte) !== 0; // Support all four channels\n if (ccValid) {\n var ccType = 0x03 & tmpByte;\n if (0x00 /* CEA608 field1*/ === ccType || 0x01 /* CEA608 field2*/ === ccType) {\n // Exclude CEA708 CC data.\n actualCCBytes[ccType].push(ccbyte1);\n actualCCBytes[ccType].push(ccbyte2);\n }\n }\n }\n return actualCCBytes;\n };\n return TimelineController;\n }();\n function captionsOrSubtitlesFromCharacteristics(track) {\n if (track.characteristics) {\n if (/transcribes-spoken-dialog/gi.test(track.characteristics) && /describes-music-and-sound/gi.test(track.characteristics)) {\n return 'captions';\n }\n }\n return 'subtitles';\n }\n function canReuseVttTextTrack(inUseTrack, manifestTrack) {\n return !!inUseTrack && inUseTrack.kind === captionsOrSubtitlesFromCharacteristics(manifestTrack) && subtitleTrackMatchesTextTrack(manifestTrack, inUseTrack);\n }\n function intersection(x1, x2, y1, y2) {\n return Math.min(x2, y2) - Math.max(x1, y1);\n }\n function newVTTCCs() {\n return {\n ccOffset: 0,\n presentationOffset: 0,\n 0: {\n start: 0,\n prevCC: -1,\n new: true\n }\n };\n }\n\n var CapLevelController = /*#__PURE__*/function () {\n function CapLevelController(hls) {\n this.hls = void 0;\n this.autoLevelCapping = void 0;\n this.firstLevel = void 0;\n this.media = void 0;\n this.restrictedLevels = void 0;\n this.timer = void 0;\n this.clientRect = void 0;\n this.streamController = void 0;\n this.hls = hls;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n this.firstLevel = -1;\n this.media = null;\n this.restrictedLevels = [];\n this.timer = undefined;\n this.clientRect = null;\n this.registerListeners();\n }\n var _proto = CapLevelController.prototype;\n _proto.setStreamController = function setStreamController(streamController) {\n this.streamController = streamController;\n };\n _proto.destroy = function destroy() {\n if (this.hls) {\n this.unregisterListener();\n }\n if (this.timer) {\n this.stopCapping();\n }\n this.media = null;\n this.clientRect = null;\n // @ts-ignore\n this.hls = this.streamController = null;\n };\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n };\n _proto.unregisterListener = function unregisterListener() {\n var hls = this.hls;\n hls.off(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n };\n _proto.onFpsDropLevelCapping = function onFpsDropLevelCapping(event, data) {\n // Don't add a restricted level more than once\n var level = this.hls.levels[data.droppedLevel];\n if (this.isLevelAllowed(level)) {\n this.restrictedLevels.push({\n bitrate: level.bitrate,\n height: level.height,\n width: level.width\n });\n }\n };\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n this.media = data.media instanceof HTMLVideoElement ? data.media : null;\n this.clientRect = null;\n if (this.timer && this.hls.levels.length) {\n this.detectPlayerSize();\n }\n };\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n var hls = this.hls;\n this.restrictedLevels = [];\n this.firstLevel = data.firstLevel;\n if (hls.config.capLevelToPlayerSize && data.video) {\n // Start capping immediately if the manifest has signaled video codecs\n this.startCapping();\n }\n };\n _proto.onLevelsUpdated = function onLevelsUpdated(event, data) {\n if (this.timer && isFiniteNumber(this.autoLevelCapping)) {\n this.detectPlayerSize();\n }\n }\n\n // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted\n // to the first level\n ;\n _proto.onBufferCodecs = function onBufferCodecs(event, data) {\n var hls = this.hls;\n if (hls.config.capLevelToPlayerSize && data.video) {\n // If the manifest did not signal a video codec capping has been deferred until we're certain video is present\n this.startCapping();\n }\n };\n _proto.onMediaDetaching = function onMediaDetaching() {\n this.stopCapping();\n };\n _proto.detectPlayerSize = function detectPlayerSize() {\n if (this.media) {\n if (this.mediaHeight <= 0 || this.mediaWidth <= 0) {\n this.clientRect = null;\n return;\n }\n var levels = this.hls.levels;\n if (levels.length) {\n var hls = this.hls;\n var maxLevel = this.getMaxLevel(levels.length - 1);\n if (maxLevel !== this.autoLevelCapping) {\n logger.log(\"Setting autoLevelCapping to \" + maxLevel + \": \" + levels[maxLevel].height + \"p@\" + levels[maxLevel].bitrate + \" for media \" + this.mediaWidth + \"x\" + this.mediaHeight);\n }\n hls.autoLevelCapping = maxLevel;\n if (hls.autoLevelCapping > this.autoLevelCapping && this.streamController) {\n // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch\n // usually happen when the user go to the fullscreen mode.\n this.streamController.nextLevelSwitch();\n }\n this.autoLevelCapping = hls.autoLevelCapping;\n }\n }\n }\n\n /*\n * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)\n */;\n _proto.getMaxLevel = function getMaxLevel(capLevelIndex) {\n var _this = this;\n var levels = this.hls.levels;\n if (!levels.length) {\n return -1;\n }\n var validLevels = levels.filter(function (level, index) {\n return _this.isLevelAllowed(level) && index <= capLevelIndex;\n });\n this.clientRect = null;\n return CapLevelController.getMaxLevelByMediaSize(validLevels, this.mediaWidth, this.mediaHeight);\n };\n _proto.startCapping = function startCapping() {\n if (this.timer) {\n // Don't reset capping if started twice; this can happen if the manifest signals a video codec\n return;\n }\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n self.clearInterval(this.timer);\n this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1000);\n this.detectPlayerSize();\n };\n _proto.stopCapping = function stopCapping() {\n this.restrictedLevels = [];\n this.firstLevel = -1;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n if (this.timer) {\n self.clearInterval(this.timer);\n this.timer = undefined;\n }\n };\n _proto.getDimensions = function getDimensions() {\n if (this.clientRect) {\n return this.clientRect;\n }\n var media = this.media;\n var boundsRect = {\n width: 0,\n height: 0\n };\n if (media) {\n var clientRect = media.getBoundingClientRect();\n boundsRect.width = clientRect.width;\n boundsRect.height = clientRect.height;\n if (!boundsRect.width && !boundsRect.height) {\n // When the media element has no width or height (equivalent to not being in the DOM),\n // then use its width and height attributes (media.width, media.height)\n boundsRect.width = clientRect.right - clientRect.left || media.width || 0;\n boundsRect.height = clientRect.bottom - clientRect.top || media.height || 0;\n }\n }\n this.clientRect = boundsRect;\n return boundsRect;\n };\n _proto.isLevelAllowed = function isLevelAllowed(level) {\n var restrictedLevels = this.restrictedLevels;\n return !restrictedLevels.some(function (restrictedLevel) {\n return level.bitrate === restrictedLevel.bitrate && level.width === restrictedLevel.width && level.height === restrictedLevel.height;\n });\n };\n CapLevelController.getMaxLevelByMediaSize = function getMaxLevelByMediaSize(levels, width, height) {\n if (!(levels != null && levels.length)) {\n return -1;\n }\n\n // Levels can have the same dimensions but differing bandwidths - since levels are ordered, we can look to the next\n // to determine whether we've chosen the greatest bandwidth for the media's dimensions\n var atGreatestBandwidth = function atGreatestBandwidth(curLevel, nextLevel) {\n if (!nextLevel) {\n return true;\n }\n return curLevel.width !== nextLevel.width || curLevel.height !== nextLevel.height;\n };\n\n // If we run through the loop without breaking, the media's dimensions are greater than every level, so default to\n // the max level\n var maxLevelIndex = levels.length - 1;\n // Prevent changes in aspect-ratio from causing capping to toggle back and forth\n var squareSize = Math.max(width, height);\n for (var i = 0; i < levels.length; i += 1) {\n var level = levels[i];\n if ((level.width >= squareSize || level.height >= squareSize) && atGreatestBandwidth(level, levels[i + 1])) {\n maxLevelIndex = i;\n break;\n }\n }\n return maxLevelIndex;\n };\n _createClass(CapLevelController, [{\n key: \"mediaWidth\",\n get: function get() {\n return this.getDimensions().width * this.contentScaleFactor;\n }\n }, {\n key: \"mediaHeight\",\n get: function get() {\n return this.getDimensions().height * this.contentScaleFactor;\n }\n }, {\n key: \"contentScaleFactor\",\n get: function get() {\n var pixelRatio = 1;\n if (!this.hls.config.ignoreDevicePixelRatio) {\n try {\n pixelRatio = self.devicePixelRatio;\n } catch (e) {\n /* no-op */\n }\n }\n return pixelRatio;\n }\n }]);\n return CapLevelController;\n }();\n\n var FPSController = /*#__PURE__*/function () {\n function FPSController(hls) {\n this.hls = void 0;\n this.isVideoPlaybackQualityAvailable = false;\n this.timer = void 0;\n this.media = null;\n this.lastTime = void 0;\n this.lastDroppedFrames = 0;\n this.lastDecodedFrames = 0;\n // stream controller must be provided as a dependency!\n this.streamController = void 0;\n this.hls = hls;\n this.registerListeners();\n }\n var _proto = FPSController.prototype;\n _proto.setStreamController = function setStreamController(streamController) {\n this.streamController = streamController;\n };\n _proto.registerListeners = function registerListeners() {\n this.hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n };\n _proto.destroy = function destroy() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n this.unregisterListeners();\n this.isVideoPlaybackQualityAvailable = false;\n this.media = null;\n };\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n var config = this.hls.config;\n if (config.capLevelOnFPSDrop) {\n var media = data.media instanceof self.HTMLVideoElement ? data.media : null;\n this.media = media;\n if (media && typeof media.getVideoPlaybackQuality === 'function') {\n this.isVideoPlaybackQualityAvailable = true;\n }\n self.clearInterval(this.timer);\n this.timer = self.setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod);\n }\n };\n _proto.checkFPS = function checkFPS(video, decodedFrames, droppedFrames) {\n var currentTime = performance.now();\n if (decodedFrames) {\n if (this.lastTime) {\n var currentPeriod = currentTime - this.lastTime;\n var currentDropped = droppedFrames - this.lastDroppedFrames;\n var currentDecoded = decodedFrames - this.lastDecodedFrames;\n var droppedFPS = 1000 * currentDropped / currentPeriod;\n var hls = this.hls;\n hls.trigger(Events.FPS_DROP, {\n currentDropped: currentDropped,\n currentDecoded: currentDecoded,\n totalDroppedFrames: droppedFrames\n });\n if (droppedFPS > 0) {\n // logger.log('checkFPS : droppedFPS/decodedFPS:' + droppedFPS/(1000 * currentDecoded / currentPeriod));\n if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) {\n var currentLevel = hls.currentLevel;\n logger.warn('drop FPS ratio greater than max allowed value for currentLevel: ' + currentLevel);\n if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) {\n currentLevel = currentLevel - 1;\n hls.trigger(Events.FPS_DROP_LEVEL_CAPPING, {\n level: currentLevel,\n droppedLevel: hls.currentLevel\n });\n hls.autoLevelCapping = currentLevel;\n this.streamController.nextLevelSwitch();\n }\n }\n }\n }\n this.lastTime = currentTime;\n this.lastDroppedFrames = droppedFrames;\n this.lastDecodedFrames = decodedFrames;\n }\n };\n _proto.checkFPSInterval = function checkFPSInterval() {\n var video = this.media;\n if (video) {\n if (this.isVideoPlaybackQualityAvailable) {\n var videoPlaybackQuality = video.getVideoPlaybackQuality();\n this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames);\n } else {\n // HTMLVideoElement doesn't include the webkit types\n this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount);\n }\n }\n };\n return FPSController;\n }();\n\n var LOGGER_PREFIX = '[eme]';\n /**\n * Controller to deal with encrypted media extensions (EME)\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API\n *\n * @class\n * @constructor\n */\n var EMEController = /*#__PURE__*/function () {\n function EMEController(hls) {\n this.hls = void 0;\n this.config = void 0;\n this.media = null;\n this.keyFormatPromise = null;\n this.keySystemAccessPromises = {};\n this._requestLicenseFailureCount = 0;\n this.mediaKeySessions = [];\n this.keyIdToKeySessionPromise = {};\n this.setMediaKeysQueue = EMEController.CDMCleanupPromise ? [EMEController.CDMCleanupPromise] : [];\n this.onMediaEncrypted = this._onMediaEncrypted.bind(this);\n this.onWaitingForKey = this._onWaitingForKey.bind(this);\n this.debug = logger.debug.bind(logger, LOGGER_PREFIX);\n this.log = logger.log.bind(logger, LOGGER_PREFIX);\n this.warn = logger.warn.bind(logger, LOGGER_PREFIX);\n this.error = logger.error.bind(logger, LOGGER_PREFIX);\n this.hls = hls;\n this.config = hls.config;\n this.registerListeners();\n }\n var _proto = EMEController.prototype;\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.onMediaDetached();\n // Remove any references that could be held in config options or callbacks\n var config = this.config;\n config.requestMediaKeySystemAccessFunc = null;\n config.licenseXhrSetup = config.licenseResponseCallback = undefined;\n config.drmSystems = config.drmSystemOptions = {};\n // @ts-ignore\n this.hls = this.onMediaEncrypted = this.onWaitingForKey = this.keyIdToKeySessionPromise = null;\n // @ts-ignore\n this.config = null;\n };\n _proto.registerListeners = function registerListeners() {\n this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n };\n _proto.getLicenseServerUrl = function getLicenseServerUrl(keySystem) {\n var _this$config = this.config,\n drmSystems = _this$config.drmSystems,\n widevineLicenseUrl = _this$config.widevineLicenseUrl;\n var keySystemConfiguration = drmSystems[keySystem];\n if (keySystemConfiguration) {\n return keySystemConfiguration.licenseUrl;\n }\n\n // For backward compatibility\n if (keySystem === KeySystems.WIDEVINE && widevineLicenseUrl) {\n return widevineLicenseUrl;\n }\n throw new Error(\"no license server URL configured for key-system \\\"\" + keySystem + \"\\\"\");\n };\n _proto.getServerCertificateUrl = function getServerCertificateUrl(keySystem) {\n var drmSystems = this.config.drmSystems;\n var keySystemConfiguration = drmSystems[keySystem];\n if (keySystemConfiguration) {\n return keySystemConfiguration.serverCertificateUrl;\n } else {\n this.log(\"No Server Certificate in config.drmSystems[\\\"\" + keySystem + \"\\\"]\");\n }\n };\n _proto.attemptKeySystemAccess = function attemptKeySystemAccess(keySystemsToAttempt) {\n var _this = this;\n var levels = this.hls.levels;\n var uniqueCodec = function uniqueCodec(value, i, a) {\n return !!value && a.indexOf(value) === i;\n };\n var audioCodecs = levels.map(function (level) {\n return level.audioCodec;\n }).filter(uniqueCodec);\n var videoCodecs = levels.map(function (level) {\n return level.videoCodec;\n }).filter(uniqueCodec);\n if (audioCodecs.length + videoCodecs.length === 0) {\n videoCodecs.push('avc1.42e01e');\n }\n return new Promise(function (resolve, reject) {\n var attempt = function attempt(keySystems) {\n var keySystem = keySystems.shift();\n _this.getMediaKeysPromise(keySystem, audioCodecs, videoCodecs).then(function (mediaKeys) {\n return resolve({\n keySystem: keySystem,\n mediaKeys: mediaKeys\n });\n }).catch(function (error) {\n if (keySystems.length) {\n attempt(keySystems);\n } else if (error instanceof EMEKeyError) {\n reject(error);\n } else {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_NO_ACCESS,\n error: error,\n fatal: true\n }, error.message));\n }\n });\n };\n attempt(keySystemsToAttempt);\n });\n };\n _proto.requestMediaKeySystemAccess = function requestMediaKeySystemAccess$1(keySystem, supportedConfigurations) {\n var requestMediaKeySystemAccessFunc = this.config.requestMediaKeySystemAccessFunc;\n if (!(typeof requestMediaKeySystemAccessFunc === 'function')) {\n var errMessage = \"Configured requestMediaKeySystemAccess is not a function \" + requestMediaKeySystemAccessFunc;\n if (requestMediaKeySystemAccess === null && self.location.protocol === 'http:') {\n errMessage = \"navigator.requestMediaKeySystemAccess is not available over insecure protocol \" + location.protocol;\n }\n return Promise.reject(new Error(errMessage));\n }\n return requestMediaKeySystemAccessFunc(keySystem, supportedConfigurations);\n };\n _proto.getMediaKeysPromise = function getMediaKeysPromise(keySystem, audioCodecs, videoCodecs) {\n var _this2 = this;\n // This can throw, but is caught in event handler callpath\n var mediaKeySystemConfigs = getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, this.config.drmSystemOptions);\n var keySystemAccessPromises = this.keySystemAccessPromises[keySystem];\n var keySystemAccess = keySystemAccessPromises == null ? void 0 : keySystemAccessPromises.keySystemAccess;\n if (!keySystemAccess) {\n this.log(\"Requesting encrypted media \\\"\" + keySystem + \"\\\" key-system access with config: \" + JSON.stringify(mediaKeySystemConfigs));\n keySystemAccess = this.requestMediaKeySystemAccess(keySystem, mediaKeySystemConfigs);\n var _keySystemAccessPromises = this.keySystemAccessPromises[keySystem] = {\n keySystemAccess: keySystemAccess\n };\n keySystemAccess.catch(function (error) {\n _this2.log(\"Failed to obtain access to key-system \\\"\" + keySystem + \"\\\": \" + error);\n });\n return keySystemAccess.then(function (mediaKeySystemAccess) {\n _this2.log(\"Access for key-system \\\"\" + mediaKeySystemAccess.keySystem + \"\\\" obtained\");\n var certificateRequest = _this2.fetchServerCertificate(keySystem);\n _this2.log(\"Create media-keys for \\\"\" + keySystem + \"\\\"\");\n _keySystemAccessPromises.mediaKeys = mediaKeySystemAccess.createMediaKeys().then(function (mediaKeys) {\n _this2.log(\"Media-keys created for \\\"\" + keySystem + \"\\\"\");\n return certificateRequest.then(function (certificate) {\n if (certificate) {\n return _this2.setMediaKeysServerCertificate(mediaKeys, keySystem, certificate);\n }\n return mediaKeys;\n });\n });\n _keySystemAccessPromises.mediaKeys.catch(function (error) {\n _this2.error(\"Failed to create media-keys for \\\"\" + keySystem + \"\\\"}: \" + error);\n });\n return _keySystemAccessPromises.mediaKeys;\n });\n }\n return keySystemAccess.then(function () {\n return keySystemAccessPromises.mediaKeys;\n });\n };\n _proto.createMediaKeySessionContext = function createMediaKeySessionContext(_ref) {\n var decryptdata = _ref.decryptdata,\n keySystem = _ref.keySystem,\n mediaKeys = _ref.mediaKeys;\n this.log(\"Creating key-system session \\\"\" + keySystem + \"\\\" keyId: \" + Hex.hexDump(decryptdata.keyId || []));\n var mediaKeysSession = mediaKeys.createSession();\n var mediaKeySessionContext = {\n decryptdata: decryptdata,\n keySystem: keySystem,\n mediaKeys: mediaKeys,\n mediaKeysSession: mediaKeysSession,\n keyStatus: 'status-pending'\n };\n this.mediaKeySessions.push(mediaKeySessionContext);\n return mediaKeySessionContext;\n };\n _proto.renewKeySession = function renewKeySession(mediaKeySessionContext) {\n var decryptdata = mediaKeySessionContext.decryptdata;\n if (decryptdata.pssh) {\n var keySessionContext = this.createMediaKeySessionContext(mediaKeySessionContext);\n var _keyId = this.getKeyIdString(decryptdata);\n var scheme = 'cenc';\n this.keyIdToKeySessionPromise[_keyId] = this.generateRequestWithPreferredKeySession(keySessionContext, scheme, decryptdata.pssh, 'expired');\n } else {\n this.warn(\"Could not renew expired session. Missing pssh initData.\");\n }\n this.removeSession(mediaKeySessionContext);\n };\n _proto.getKeyIdString = function getKeyIdString(decryptdata) {\n if (!decryptdata) {\n throw new Error('Could not read keyId of undefined decryptdata');\n }\n if (decryptdata.keyId === null) {\n throw new Error('keyId is null');\n }\n return Hex.hexDump(decryptdata.keyId);\n };\n _proto.updateKeySession = function updateKeySession(mediaKeySessionContext, data) {\n var _mediaKeySessionConte;\n var keySession = mediaKeySessionContext.mediaKeysSession;\n this.log(\"Updating key-session \\\"\" + keySession.sessionId + \"\\\" for keyID \" + Hex.hexDump(((_mediaKeySessionConte = mediaKeySessionContext.decryptdata) == null ? void 0 : _mediaKeySessionConte.keyId) || []) + \"\\n } (data length: \" + (data ? data.byteLength : data) + \")\");\n return keySession.update(data);\n };\n _proto.selectKeySystemFormat = function selectKeySystemFormat(frag) {\n var keyFormats = Object.keys(frag.levelkeys || {});\n if (!this.keyFormatPromise) {\n this.log(\"Selecting key-system from fragment (sn: \" + frag.sn + \" \" + frag.type + \": \" + frag.level + \") key formats \" + keyFormats.join(', '));\n this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n }\n return this.keyFormatPromise;\n };\n _proto.getKeyFormatPromise = function getKeyFormatPromise(keyFormats) {\n var _this3 = this;\n return new Promise(function (resolve, reject) {\n var keySystemsInConfig = getKeySystemsForConfig(_this3.config);\n var keySystemsToAttempt = keyFormats.map(keySystemFormatToKeySystemDomain).filter(function (value) {\n return !!value && keySystemsInConfig.indexOf(value) !== -1;\n });\n return _this3.getKeySystemSelectionPromise(keySystemsToAttempt).then(function (_ref2) {\n var keySystem = _ref2.keySystem;\n var keySystemFormat = keySystemDomainToKeySystemFormat(keySystem);\n if (keySystemFormat) {\n resolve(keySystemFormat);\n } else {\n reject(new Error(\"Unable to find format for key-system \\\"\" + keySystem + \"\\\"\"));\n }\n }).catch(reject);\n });\n };\n _proto.loadKey = function loadKey(data) {\n var _this4 = this;\n var decryptdata = data.keyInfo.decryptdata;\n var keyId = this.getKeyIdString(decryptdata);\n var keyDetails = \"(keyId: \" + keyId + \" format: \\\"\" + decryptdata.keyFormat + \"\\\" method: \" + decryptdata.method + \" uri: \" + decryptdata.uri + \")\";\n this.log(\"Starting session for key \" + keyDetails);\n var keySessionContextPromise = this.keyIdToKeySessionPromise[keyId];\n if (!keySessionContextPromise) {\n keySessionContextPromise = this.keyIdToKeySessionPromise[keyId] = this.getKeySystemForKeyPromise(decryptdata).then(function (_ref3) {\n var keySystem = _ref3.keySystem,\n mediaKeys = _ref3.mediaKeys;\n _this4.throwIfDestroyed();\n _this4.log(\"Handle encrypted media sn: \" + data.frag.sn + \" \" + data.frag.type + \": \" + data.frag.level + \" using key \" + keyDetails);\n return _this4.attemptSetMediaKeys(keySystem, mediaKeys).then(function () {\n _this4.throwIfDestroyed();\n var keySessionContext = _this4.createMediaKeySessionContext({\n keySystem: keySystem,\n mediaKeys: mediaKeys,\n decryptdata: decryptdata\n });\n var scheme = 'cenc';\n return _this4.generateRequestWithPreferredKeySession(keySessionContext, scheme, decryptdata.pssh, 'playlist-key');\n });\n });\n keySessionContextPromise.catch(function (error) {\n return _this4.handleError(error);\n });\n }\n return keySessionContextPromise;\n };\n _proto.throwIfDestroyed = function throwIfDestroyed(message) {\n if (!this.hls) {\n throw new Error('invalid state');\n }\n };\n _proto.handleError = function handleError(error) {\n if (!this.hls) {\n return;\n }\n this.error(error.message);\n if (error instanceof EMEKeyError) {\n this.hls.trigger(Events.ERROR, error.data);\n } else {\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_NO_KEYS,\n error: error,\n fatal: true\n });\n }\n };\n _proto.getKeySystemForKeyPromise = function getKeySystemForKeyPromise(decryptdata) {\n var keyId = this.getKeyIdString(decryptdata);\n var mediaKeySessionContext = this.keyIdToKeySessionPromise[keyId];\n if (!mediaKeySessionContext) {\n var keySystem = keySystemFormatToKeySystemDomain(decryptdata.keyFormat);\n var keySystemsToAttempt = keySystem ? [keySystem] : getKeySystemsForConfig(this.config);\n return this.attemptKeySystemAccess(keySystemsToAttempt);\n }\n return mediaKeySessionContext;\n };\n _proto.getKeySystemSelectionPromise = function getKeySystemSelectionPromise(keySystemsToAttempt) {\n if (!keySystemsToAttempt.length) {\n keySystemsToAttempt = getKeySystemsForConfig(this.config);\n }\n if (keySystemsToAttempt.length === 0) {\n throw new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_NO_CONFIGURED_LICENSE,\n fatal: true\n }, \"Missing key-system license configuration options \" + JSON.stringify({\n drmSystems: this.config.drmSystems\n }));\n }\n return this.attemptKeySystemAccess(keySystemsToAttempt);\n };\n _proto._onMediaEncrypted = function _onMediaEncrypted(event) {\n var _this5 = this;\n var initDataType = event.initDataType,\n initData = event.initData;\n this.debug(\"\\\"\" + event.type + \"\\\" event: init data type: \\\"\" + initDataType + \"\\\"\");\n\n // Ignore event when initData is null\n if (initData === null) {\n return;\n }\n var keyId;\n var keySystemDomain;\n if (initDataType === 'sinf' && this.config.drmSystems[KeySystems.FAIRPLAY]) {\n // Match sinf keyId to playlist skd://keyId=\n var json = bin2str(new Uint8Array(initData));\n try {\n var sinf = base64Decode(JSON.parse(json).sinf);\n var tenc = parseSinf(new Uint8Array(sinf));\n if (!tenc) {\n return;\n }\n keyId = tenc.subarray(8, 24);\n keySystemDomain = KeySystems.FAIRPLAY;\n } catch (error) {\n this.warn('Failed to parse sinf \"encrypted\" event message initData');\n return;\n }\n } else {\n // Support clear-lead key-session creation (otherwise depend on playlist keys)\n var psshInfo = parsePssh(initData);\n if (psshInfo === null) {\n return;\n }\n if (psshInfo.version === 0 && psshInfo.systemId === KeySystemIds.WIDEVINE && psshInfo.data) {\n keyId = psshInfo.data.subarray(8, 24);\n }\n keySystemDomain = keySystemIdToKeySystemDomain(psshInfo.systemId);\n }\n if (!keySystemDomain || !keyId) {\n return;\n }\n var keyIdHex = Hex.hexDump(keyId);\n var keyIdToKeySessionPromise = this.keyIdToKeySessionPromise,\n mediaKeySessions = this.mediaKeySessions;\n var keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex];\n var _loop = function _loop() {\n // Match playlist key\n var keyContext = mediaKeySessions[i];\n var decryptdata = keyContext.decryptdata;\n if (decryptdata.pssh || !decryptdata.keyId) {\n return 0; // continue\n }\n var oldKeyIdHex = Hex.hexDump(decryptdata.keyId);\n if (keyIdHex === oldKeyIdHex || decryptdata.uri.replace(/-/g, '').indexOf(keyIdHex) !== -1) {\n keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex];\n delete keyIdToKeySessionPromise[oldKeyIdHex];\n decryptdata.pssh = new Uint8Array(initData);\n decryptdata.keyId = keyId;\n keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] = keySessionContextPromise.then(function () {\n return _this5.generateRequestWithPreferredKeySession(keyContext, initDataType, initData, 'encrypted-event-key-match');\n });\n return 1; // break\n }\n },\n _ret;\n for (var i = 0; i < mediaKeySessions.length; i++) {\n _ret = _loop();\n if (_ret === 0) continue;\n if (_ret === 1) break;\n }\n if (!keySessionContextPromise) {\n // Clear-lead key (not encountered in playlist)\n keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] = this.getKeySystemSelectionPromise([keySystemDomain]).then(function (_ref4) {\n var _keySystemToKeySystem;\n var keySystem = _ref4.keySystem,\n mediaKeys = _ref4.mediaKeys;\n _this5.throwIfDestroyed();\n var decryptdata = new LevelKey('ISO-23001-7', keyIdHex, (_keySystemToKeySystem = keySystemDomainToKeySystemFormat(keySystem)) != null ? _keySystemToKeySystem : '');\n decryptdata.pssh = new Uint8Array(initData);\n decryptdata.keyId = keyId;\n return _this5.attemptSetMediaKeys(keySystem, mediaKeys).then(function () {\n _this5.throwIfDestroyed();\n var keySessionContext = _this5.createMediaKeySessionContext({\n decryptdata: decryptdata,\n keySystem: keySystem,\n mediaKeys: mediaKeys\n });\n return _this5.generateRequestWithPreferredKeySession(keySessionContext, initDataType, initData, 'encrypted-event-no-match');\n });\n });\n }\n keySessionContextPromise.catch(function (error) {\n return _this5.handleError(error);\n });\n };\n _proto._onWaitingForKey = function _onWaitingForKey(event) {\n this.log(\"\\\"\" + event.type + \"\\\" event\");\n };\n _proto.attemptSetMediaKeys = function attemptSetMediaKeys(keySystem, mediaKeys) {\n var _this6 = this;\n var queue = this.setMediaKeysQueue.slice();\n this.log(\"Setting media-keys for \\\"\" + keySystem + \"\\\"\");\n // Only one setMediaKeys() can run at one time, and multiple setMediaKeys() operations\n // can be queued for execution for multiple key sessions.\n var setMediaKeysPromise = Promise.all(queue).then(function () {\n if (!_this6.media) {\n throw new Error('Attempted to set mediaKeys without media element attached');\n }\n return _this6.media.setMediaKeys(mediaKeys);\n });\n this.setMediaKeysQueue.push(setMediaKeysPromise);\n return setMediaKeysPromise.then(function () {\n _this6.log(\"Media-keys set for \\\"\" + keySystem + \"\\\"\");\n queue.push(setMediaKeysPromise);\n _this6.setMediaKeysQueue = _this6.setMediaKeysQueue.filter(function (p) {\n return queue.indexOf(p) === -1;\n });\n });\n };\n _proto.generateRequestWithPreferredKeySession = function generateRequestWithPreferredKeySession(context, initDataType, initData, reason) {\n var _this$config$drmSyste,\n _this$config$drmSyste2,\n _this7 = this;\n var generateRequestFilter = (_this$config$drmSyste = this.config.drmSystems) == null ? void 0 : (_this$config$drmSyste2 = _this$config$drmSyste[context.keySystem]) == null ? void 0 : _this$config$drmSyste2.generateRequest;\n if (generateRequestFilter) {\n try {\n var mappedInitData = generateRequestFilter.call(this.hls, initDataType, initData, context);\n if (!mappedInitData) {\n throw new Error('Invalid response from configured generateRequest filter');\n }\n initDataType = mappedInitData.initDataType;\n initData = context.decryptdata.pssh = mappedInitData.initData ? new Uint8Array(mappedInitData.initData) : null;\n } catch (error) {\n var _this$hls;\n this.warn(error.message);\n if ((_this$hls = this.hls) != null && _this$hls.config.debug) {\n throw error;\n }\n }\n }\n if (initData === null) {\n this.log(\"Skipping key-session request for \\\"\" + reason + \"\\\" (no initData)\");\n return Promise.resolve(context);\n }\n var keyId = this.getKeyIdString(context.decryptdata);\n this.log(\"Generating key-session request for \\\"\" + reason + \"\\\": \" + keyId + \" (init data type: \" + initDataType + \" length: \" + (initData ? initData.byteLength : null) + \")\");\n var licenseStatus = new EventEmitter();\n var onmessage = context._onmessage = function (event) {\n var keySession = context.mediaKeysSession;\n if (!keySession) {\n licenseStatus.emit('error', new Error('invalid state'));\n return;\n }\n var messageType = event.messageType,\n message = event.message;\n _this7.log(\"\\\"\" + messageType + \"\\\" message event for session \\\"\" + keySession.sessionId + \"\\\" message size: \" + message.byteLength);\n if (messageType === 'license-request' || messageType === 'license-renewal') {\n _this7.renewLicense(context, message).catch(function (error) {\n _this7.handleError(error);\n licenseStatus.emit('error', error);\n });\n } else if (messageType === 'license-release') {\n if (context.keySystem === KeySystems.FAIRPLAY) {\n _this7.updateKeySession(context, strToUtf8array('acknowledged'));\n _this7.removeSession(context);\n }\n } else {\n _this7.warn(\"unhandled media key message type \\\"\" + messageType + \"\\\"\");\n }\n };\n var onkeystatuseschange = context._onkeystatuseschange = function (event) {\n var keySession = context.mediaKeysSession;\n if (!keySession) {\n licenseStatus.emit('error', new Error('invalid state'));\n return;\n }\n _this7.onKeyStatusChange(context);\n var keyStatus = context.keyStatus;\n licenseStatus.emit('keyStatus', keyStatus);\n if (keyStatus === 'expired') {\n _this7.warn(context.keySystem + \" expired for key \" + keyId);\n _this7.renewKeySession(context);\n }\n };\n context.mediaKeysSession.addEventListener('message', onmessage);\n context.mediaKeysSession.addEventListener('keystatuseschange', onkeystatuseschange);\n var keyUsablePromise = new Promise(function (resolve, reject) {\n licenseStatus.on('error', reject);\n licenseStatus.on('keyStatus', function (keyStatus) {\n if (keyStatus.startsWith('usable')) {\n resolve();\n } else if (keyStatus === 'output-restricted') {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,\n fatal: false\n }, 'HDCP level output restricted'));\n } else if (keyStatus === 'internal-error') {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_STATUS_INTERNAL_ERROR,\n fatal: true\n }, \"key status changed to \\\"\" + keyStatus + \"\\\"\"));\n } else if (keyStatus === 'expired') {\n reject(new Error('key expired while generating request'));\n } else {\n _this7.warn(\"unhandled key status change \\\"\" + keyStatus + \"\\\"\");\n }\n });\n });\n return context.mediaKeysSession.generateRequest(initDataType, initData).then(function () {\n var _context$mediaKeysSes;\n _this7.log(\"Request generated for key-session \\\"\" + ((_context$mediaKeysSes = context.mediaKeysSession) == null ? void 0 : _context$mediaKeysSes.sessionId) + \"\\\" keyId: \" + keyId);\n }).catch(function (error) {\n throw new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_NO_SESSION,\n error: error,\n fatal: false\n }, \"Error generating key-session request: \" + error);\n }).then(function () {\n return keyUsablePromise;\n }).catch(function (error) {\n licenseStatus.removeAllListeners();\n _this7.removeSession(context);\n throw error;\n }).then(function () {\n licenseStatus.removeAllListeners();\n return context;\n });\n };\n _proto.onKeyStatusChange = function onKeyStatusChange(mediaKeySessionContext) {\n var _this8 = this;\n mediaKeySessionContext.mediaKeysSession.keyStatuses.forEach(function (status, keyId) {\n _this8.log(\"key status change \\\"\" + status + \"\\\" for keyStatuses keyId: \" + Hex.hexDump('buffer' in keyId ? new Uint8Array(keyId.buffer, keyId.byteOffset, keyId.byteLength) : new Uint8Array(keyId)) + \" session keyId: \" + Hex.hexDump(new Uint8Array(mediaKeySessionContext.decryptdata.keyId || [])) + \" uri: \" + mediaKeySessionContext.decryptdata.uri);\n mediaKeySessionContext.keyStatus = status;\n });\n };\n _proto.fetchServerCertificate = function fetchServerCertificate(keySystem) {\n var config = this.config;\n var Loader = config.loader;\n var certLoader = new Loader(config);\n var url = this.getServerCertificateUrl(keySystem);\n if (!url) {\n return Promise.resolve();\n }\n this.log(\"Fetching server certificate for \\\"\" + keySystem + \"\\\"\");\n return new Promise(function (resolve, reject) {\n var loaderContext = {\n responseType: 'arraybuffer',\n url: url\n };\n var loadPolicy = config.certLoadPolicy.default;\n var loaderConfig = {\n loadPolicy: loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: 0\n };\n var loaderCallbacks = {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n resolve(response.data);\n },\n onError: function onError(response, contex, networkDetails, stats) {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,\n fatal: true,\n networkDetails: networkDetails,\n response: _objectSpread2({\n url: loaderContext.url,\n data: undefined\n }, response)\n }, \"\\\"\" + keySystem + \"\\\" certificate request failed (\" + url + \"). Status: \" + response.code + \" (\" + response.text + \")\"));\n },\n onTimeout: function onTimeout(stats, context, networkDetails) {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,\n fatal: true,\n networkDetails: networkDetails,\n response: {\n url: loaderContext.url,\n data: undefined\n }\n }, \"\\\"\" + keySystem + \"\\\" certificate request timed out (\" + url + \")\"));\n },\n onAbort: function onAbort(stats, context, networkDetails) {\n reject(new Error('aborted'));\n }\n };\n certLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n });\n };\n _proto.setMediaKeysServerCertificate = function setMediaKeysServerCertificate(mediaKeys, keySystem, cert) {\n var _this9 = this;\n return new Promise(function (resolve, reject) {\n mediaKeys.setServerCertificate(cert).then(function (success) {\n _this9.log(\"setServerCertificate \" + (success ? 'success' : 'not supported by CDM') + \" (\" + (cert == null ? void 0 : cert.byteLength) + \") on \\\"\" + keySystem + \"\\\"\");\n resolve(mediaKeys);\n }).catch(function (error) {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,\n error: error,\n fatal: true\n }, error.message));\n });\n });\n };\n _proto.renewLicense = function renewLicense(context, keyMessage) {\n var _this10 = this;\n return this.requestLicense(context, new Uint8Array(keyMessage)).then(function (data) {\n return _this10.updateKeySession(context, new Uint8Array(data)).catch(function (error) {\n throw new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_SESSION_UPDATE_FAILED,\n error: error,\n fatal: true\n }, error.message);\n });\n });\n };\n _proto.unpackPlayReadyKeyMessage = function unpackPlayReadyKeyMessage(xhr, licenseChallenge) {\n // On Edge, the raw license message is UTF-16-encoded XML. We need\n // to unpack the Challenge element (base64-encoded string containing the\n // actual license request) and any HttpHeader elements (sent as request\n // headers).\n // For PlayReady CDMs, we need to dig the Challenge out of the XML.\n var xmlString = String.fromCharCode.apply(null, new Uint16Array(licenseChallenge.buffer));\n if (!xmlString.includes('PlayReadyKeyMessage')) {\n // This does not appear to be a wrapped message as on Edge. Some\n // clients do not need this unwrapping, so we will assume this is one of\n // them. Note that \"xml\" at this point probably looks like random\n // garbage, since we interpreted UTF-8 as UTF-16.\n xhr.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');\n return licenseChallenge;\n }\n var keyMessageXml = new DOMParser().parseFromString(xmlString, 'application/xml');\n // Set request headers.\n var headers = keyMessageXml.querySelectorAll('HttpHeader');\n if (headers.length > 0) {\n var header;\n for (var i = 0, len = headers.length; i < len; i++) {\n var _header$querySelector, _header$querySelector2;\n header = headers[i];\n var name = (_header$querySelector = header.querySelector('name')) == null ? void 0 : _header$querySelector.textContent;\n var _value = (_header$querySelector2 = header.querySelector('value')) == null ? void 0 : _header$querySelector2.textContent;\n if (name && _value) {\n xhr.setRequestHeader(name, _value);\n }\n }\n }\n var challengeElement = keyMessageXml.querySelector('Challenge');\n var challengeText = challengeElement == null ? void 0 : challengeElement.textContent;\n if (!challengeText) {\n throw new Error(\"Cannot find <Challenge> in key message\");\n }\n return strToUtf8array(atob(challengeText));\n };\n _proto.setupLicenseXHR = function setupLicenseXHR(xhr, url, keysListItem, licenseChallenge) {\n var _this11 = this;\n var licenseXhrSetup = this.config.licenseXhrSetup;\n if (!licenseXhrSetup) {\n xhr.open('POST', url, true);\n return Promise.resolve({\n xhr: xhr,\n licenseChallenge: licenseChallenge\n });\n }\n return Promise.resolve().then(function () {\n if (!keysListItem.decryptdata) {\n throw new Error('Key removed');\n }\n return licenseXhrSetup.call(_this11.hls, xhr, url, keysListItem, licenseChallenge);\n }).catch(function (error) {\n if (!keysListItem.decryptdata) {\n // Key session removed. Cancel license request.\n throw error;\n }\n // let's try to open before running setup\n xhr.open('POST', url, true);\n return licenseXhrSetup.call(_this11.hls, xhr, url, keysListItem, licenseChallenge);\n }).then(function (licenseXhrSetupResult) {\n // if licenseXhrSetup did not yet call open, let's do it now\n if (!xhr.readyState) {\n xhr.open('POST', url, true);\n }\n var finalLicenseChallenge = licenseXhrSetupResult ? licenseXhrSetupResult : licenseChallenge;\n return {\n xhr: xhr,\n licenseChallenge: finalLicenseChallenge\n };\n });\n };\n _proto.requestLicense = function requestLicense(keySessionContext, licenseChallenge) {\n var _this12 = this;\n var keyLoadPolicy = this.config.keyLoadPolicy.default;\n return new Promise(function (resolve, reject) {\n var url = _this12.getLicenseServerUrl(keySessionContext.keySystem);\n _this12.log(\"Sending license request to URL: \" + url);\n var xhr = new XMLHttpRequest();\n xhr.responseType = 'arraybuffer';\n xhr.onreadystatechange = function () {\n if (!_this12.hls || !keySessionContext.mediaKeysSession) {\n return reject(new Error('invalid state'));\n }\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n _this12._requestLicenseFailureCount = 0;\n var data = xhr.response;\n _this12.log(\"License received \" + (data instanceof ArrayBuffer ? data.byteLength : data));\n var licenseResponseCallback = _this12.config.licenseResponseCallback;\n if (licenseResponseCallback) {\n try {\n data = licenseResponseCallback.call(_this12.hls, xhr, url, keySessionContext);\n } catch (error) {\n _this12.error(error);\n }\n }\n resolve(data);\n } else {\n var retryConfig = keyLoadPolicy.errorRetry;\n var maxNumRetry = retryConfig ? retryConfig.maxNumRetry : 0;\n _this12._requestLicenseFailureCount++;\n if (_this12._requestLicenseFailureCount > maxNumRetry || xhr.status >= 400 && xhr.status < 500) {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true,\n networkDetails: xhr,\n response: {\n url: url,\n data: undefined,\n code: xhr.status,\n text: xhr.statusText\n }\n }, \"License Request XHR failed (\" + url + \"). Status: \" + xhr.status + \" (\" + xhr.statusText + \")\"));\n } else {\n var attemptsLeft = maxNumRetry - _this12._requestLicenseFailureCount + 1;\n _this12.warn(\"Retrying license request, \" + attemptsLeft + \" attempts left\");\n _this12.requestLicense(keySessionContext, licenseChallenge).then(resolve, reject);\n }\n }\n }\n };\n if (keySessionContext.licenseXhr && keySessionContext.licenseXhr.readyState !== XMLHttpRequest.DONE) {\n keySessionContext.licenseXhr.abort();\n }\n keySessionContext.licenseXhr = xhr;\n _this12.setupLicenseXHR(xhr, url, keySessionContext, licenseChallenge).then(function (_ref5) {\n var xhr = _ref5.xhr,\n licenseChallenge = _ref5.licenseChallenge;\n if (keySessionContext.keySystem == KeySystems.PLAYREADY) {\n licenseChallenge = _this12.unpackPlayReadyKeyMessage(xhr, licenseChallenge);\n }\n xhr.send(licenseChallenge);\n });\n });\n };\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n if (!this.config.emeEnabled) {\n return;\n }\n var media = data.media;\n\n // keep reference of media\n this.media = media;\n media.addEventListener('encrypted', this.onMediaEncrypted);\n media.addEventListener('waitingforkey', this.onWaitingForKey);\n };\n _proto.onMediaDetached = function onMediaDetached() {\n var _this13 = this;\n var media = this.media;\n var mediaKeysList = this.mediaKeySessions;\n if (media) {\n media.removeEventListener('encrypted', this.onMediaEncrypted);\n media.removeEventListener('waitingforkey', this.onWaitingForKey);\n this.media = null;\n }\n this._requestLicenseFailureCount = 0;\n this.setMediaKeysQueue = [];\n this.mediaKeySessions = [];\n this.keyIdToKeySessionPromise = {};\n LevelKey.clearKeyUriToKeyIdMap();\n\n // Close all sessions and remove media keys from the video element.\n var keySessionCount = mediaKeysList.length;\n EMEController.CDMCleanupPromise = Promise.all(mediaKeysList.map(function (mediaKeySessionContext) {\n return _this13.removeSession(mediaKeySessionContext);\n }).concat(media == null ? void 0 : media.setMediaKeys(null).catch(function (error) {\n _this13.log(\"Could not clear media keys: \" + error);\n }))).then(function () {\n if (keySessionCount) {\n _this13.log('finished closing key sessions and clearing media keys');\n mediaKeysList.length = 0;\n }\n }).catch(function (error) {\n _this13.log(\"Could not close sessions and clear media keys: \" + error);\n });\n };\n _proto.onManifestLoading = function onManifestLoading() {\n this.keyFormatPromise = null;\n };\n _proto.onManifestLoaded = function onManifestLoaded(event, _ref6) {\n var sessionKeys = _ref6.sessionKeys;\n if (!sessionKeys || !this.config.emeEnabled) {\n return;\n }\n if (!this.keyFormatPromise) {\n var keyFormats = sessionKeys.reduce(function (formats, sessionKey) {\n if (formats.indexOf(sessionKey.keyFormat) === -1) {\n formats.push(sessionKey.keyFormat);\n }\n return formats;\n }, []);\n this.log(\"Selecting key-system from session-keys \" + keyFormats.join(', '));\n this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n }\n };\n _proto.removeSession = function removeSession(mediaKeySessionContext) {\n var _this14 = this;\n var mediaKeysSession = mediaKeySessionContext.mediaKeysSession,\n licenseXhr = mediaKeySessionContext.licenseXhr;\n if (mediaKeysSession) {\n this.log(\"Remove licenses and keys and close session \" + mediaKeysSession.sessionId);\n if (mediaKeySessionContext._onmessage) {\n mediaKeysSession.removeEventListener('message', mediaKeySessionContext._onmessage);\n mediaKeySessionContext._onmessage = undefined;\n }\n if (mediaKeySessionContext._onkeystatuseschange) {\n mediaKeysSession.removeEventListener('keystatuseschange', mediaKeySessionContext._onkeystatuseschange);\n mediaKeySessionContext._onkeystatuseschange = undefined;\n }\n if (licenseXhr && licenseXhr.readyState !== XMLHttpRequest.DONE) {\n licenseXhr.abort();\n }\n mediaKeySessionContext.mediaKeysSession = mediaKeySessionContext.decryptdata = mediaKeySessionContext.licenseXhr = undefined;\n var index = this.mediaKeySessions.indexOf(mediaKeySessionContext);\n if (index > -1) {\n this.mediaKeySessions.splice(index, 1);\n }\n return mediaKeysSession.remove().catch(function (error) {\n _this14.log(\"Could not remove session: \" + error);\n }).then(function () {\n return mediaKeysSession.close();\n }).catch(function (error) {\n _this14.log(\"Could not close session: \" + error);\n });\n }\n };\n return EMEController;\n }();\n EMEController.CDMCleanupPromise = void 0;\n var EMEKeyError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(EMEKeyError, _Error);\n function EMEKeyError(data, message) {\n var _this15;\n _this15 = _Error.call(this, message) || this;\n _this15.data = void 0;\n data.error || (data.error = new Error(message));\n _this15.data = data;\n data.err = data.error;\n return _this15;\n }\n return EMEKeyError;\n }( /*#__PURE__*/_wrapNativeSuper(Error));\n\n /**\n * Common Media Object Type\n *\n * @group CMCD\n * @group CMSD\n *\n * @beta\n */\n var CmObjectType;\n (function (CmObjectType) {\n /**\n * text file, such as a manifest or playlist\n */\n CmObjectType[\"MANIFEST\"] = \"m\";\n /**\n * audio only\n */\n CmObjectType[\"AUDIO\"] = \"a\";\n /**\n * video only\n */\n CmObjectType[\"VIDEO\"] = \"v\";\n /**\n * muxed audio and video\n */\n CmObjectType[\"MUXED\"] = \"av\";\n /**\n * init segment\n */\n CmObjectType[\"INIT\"] = \"i\";\n /**\n * caption or subtitle\n */\n CmObjectType[\"CAPTION\"] = \"c\";\n /**\n * ISOBMFF timed text track\n */\n CmObjectType[\"TIMED_TEXT\"] = \"tt\";\n /**\n * cryptographic key, license or certificate.\n */\n CmObjectType[\"KEY\"] = \"k\";\n /**\n * other\n */\n CmObjectType[\"OTHER\"] = \"o\";\n })(CmObjectType || (CmObjectType = {}));\n\n /**\n * Common Media Streaming Format\n *\n * @group CMCD\n * @group CMSD\n *\n * @beta\n */\n var CmStreamingFormat;\n (function (CmStreamingFormat) {\n /**\n * MPEG DASH\n */\n CmStreamingFormat[\"DASH\"] = \"d\";\n /**\n * HTTP Live Streaming (HLS)\n */\n CmStreamingFormat[\"HLS\"] = \"h\";\n /**\n * Smooth Streaming\n */\n CmStreamingFormat[\"SMOOTH\"] = \"s\";\n /**\n * Other\n */\n CmStreamingFormat[\"OTHER\"] = \"o\";\n })(CmStreamingFormat || (CmStreamingFormat = {}));\n\n /**\n * CMCD header fields.\n *\n * @group CMCD\n *\n * @beta\n */\n var CmcdHeaderField;\n (function (CmcdHeaderField) {\n /**\n * keys whose values vary with the object being requested.\n */\n CmcdHeaderField[\"OBJECT\"] = \"CMCD-Object\";\n /**\n * keys whose values vary with each request.\n */\n CmcdHeaderField[\"REQUEST\"] = \"CMCD-Request\";\n /**\n * keys whose values are expected to be invariant over the life of the session.\n */\n CmcdHeaderField[\"SESSION\"] = \"CMCD-Session\";\n /**\n * keys whose values do not vary with every request or object.\n */\n CmcdHeaderField[\"STATUS\"] = \"CMCD-Status\";\n })(CmcdHeaderField || (CmcdHeaderField = {}));\n\n var _CmcdHeaderMap;\n /**\n * The map of CMCD header fields to official CMCD keys.\n *\n * @internal\n *\n * @group CMCD\n */\n var CmcdHeaderMap = (_CmcdHeaderMap = {}, _CmcdHeaderMap[CmcdHeaderField.OBJECT] = ['br', 'd', 'ot', 'tb'], _CmcdHeaderMap[CmcdHeaderField.REQUEST] = ['bl', 'dl', 'mtp', 'nor', 'nrr', 'su'], _CmcdHeaderMap[CmcdHeaderField.SESSION] = ['cid', 'pr', 'sf', 'sid', 'st', 'v'], _CmcdHeaderMap[CmcdHeaderField.STATUS] = ['bs', 'rtp'], _CmcdHeaderMap);\n\n /**\n * Structured Field Item\n *\n * @group Structured Field\n *\n * @beta\n */\n var SfItem = function SfItem(value, params) {\n this.value = void 0;\n this.params = void 0;\n if (Array.isArray(value)) {\n value = value.map(function (v) {\n return v instanceof SfItem ? v : new SfItem(v);\n });\n }\n this.value = value;\n this.params = params;\n };\n\n /**\n * A class to represent structured field tokens when `Symbol` is not available.\n *\n * @group Structured Field\n *\n * @beta\n */\n var SfToken = function SfToken(description) {\n this.description = void 0;\n this.description = description;\n };\n\n var DICT = 'Dict';\n\n function format(value) {\n if (Array.isArray(value)) {\n return JSON.stringify(value);\n }\n if (value instanceof Map) {\n return 'Map{}';\n }\n if (value instanceof Set) {\n return 'Set{}';\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n }\n function throwError(action, src, type, cause) {\n return new Error(\"failed to \" + action + \" \\\"\" + format(src) + \"\\\" as \" + type, {\n cause: cause\n });\n }\n\n var BARE_ITEM = 'Bare Item';\n\n var BOOLEAN = 'Boolean';\n\n var BYTES = 'Byte Sequence';\n\n var DECIMAL = 'Decimal';\n\n var INTEGER = 'Integer';\n\n function isInvalidInt(value) {\n return value < -999999999999999 || 999999999999999 < value;\n }\n\n var STRING_REGEX = /[\\x00-\\x1f\\x7f]+/; // eslint-disable-line no-control-regex\n\n var TOKEN = 'Token';\n\n var KEY = 'Key';\n\n function serializeError(src, type, cause) {\n return throwError('serialize', src, type, cause);\n }\n\n // 4.1.9. Serializing a Boolean\n //\n // Given a Boolean as input_boolean, return an ASCII string suitable for\n // use in a HTTP field value.\n //\n // 1. If input_boolean is not a boolean, fail serialization.\n //\n // 2. Let output be an empty string.\n //\n // 3. Append \"?\" to output.\n //\n // 4. If input_boolean is true, append \"1\" to output.\n //\n // 5. If input_boolean is false, append \"0\" to output.\n //\n // 6. Return output.\n function serializeBoolean(value) {\n if (typeof value !== 'boolean') {\n throw serializeError(value, BOOLEAN);\n }\n return value ? '?1' : '?0';\n }\n\n /**\n * Encodes binary data to base64\n *\n * @param binary - The binary data to encode\n * @returns The base64 encoded string\n *\n * @group Utils\n *\n * @beta\n */\n function base64encode(binary) {\n return btoa(String.fromCharCode.apply(String, binary));\n }\n\n // 4.1.8. Serializing a Byte Sequence\n //\n // Given a Byte Sequence as input_bytes, return an ASCII string suitable\n // for use in a HTTP field value.\n //\n // 1. If input_bytes is not a sequence of bytes, fail serialization.\n //\n // 2. Let output be an empty string.\n //\n // 3. Append \":\" to output.\n //\n // 4. Append the result of base64-encoding input_bytes as per\n // [RFC4648], Section 4, taking account of the requirements below.\n //\n // 5. Append \":\" to output.\n //\n // 6. Return output.\n //\n // The encoded data is required to be padded with \"=\", as per [RFC4648],\n // Section 3.2.\n //\n // Likewise, encoded data SHOULD have pad bits set to zero, as per\n // [RFC4648], Section 3.5, unless it is not possible to do so due to\n // implementation constraints.\n function serializeByteSequence(value) {\n if (ArrayBuffer.isView(value) === false) {\n throw serializeError(value, BYTES);\n }\n return \":\" + base64encode(value) + \":\";\n }\n\n // 4.1.4. Serializing an Integer\n //\n // Given an Integer as input_integer, return an ASCII string suitable\n // for use in a HTTP field value.\n //\n // 1. If input_integer is not an integer in the range of\n // -999,999,999,999,999 to 999,999,999,999,999 inclusive, fail\n // serialization.\n //\n // 2. Let output be an empty string.\n //\n // 3. If input_integer is less than (but not equal to) 0, append \"-\" to\n // output.\n //\n // 4. Append input_integer's numeric value represented in base 10 using\n // only decimal digits to output.\n //\n // 5. Return output.\n function serializeInteger(value) {\n if (isInvalidInt(value)) {\n throw serializeError(value, INTEGER);\n }\n return value.toString();\n }\n\n // 4.1.10. Serializing a Date\n //\n // Given a Date as input_integer, return an ASCII string suitable for\n // use in an HTTP field value.\n // 1. Let output be \"@\".\n // 2. Append to output the result of running Serializing an Integer\n // with input_date (Section 4.1.4).\n // 3. Return output.\n function serializeDate(value) {\n return \"@\" + serializeInteger(value.getTime() / 1000);\n }\n\n /**\n * This implements the rounding procedure described in step 2 of the \"Serializing a Decimal\" specification.\n * This rounding style is known as \"even rounding\", \"banker's rounding\", or \"commercial rounding\".\n *\n * @param value - The value to round\n * @param precision - The number of decimal places to round to\n * @returns The rounded value\n *\n * @group Utils\n *\n * @beta\n */\n function roundToEven(value, precision) {\n if (value < 0) {\n return -roundToEven(-value, precision);\n }\n var decimalShift = Math.pow(10, precision);\n var isEquidistant = Math.abs(value * decimalShift % 1 - 0.5) < Number.EPSILON;\n if (isEquidistant) {\n // If the tail of the decimal place is 'equidistant' we round to the nearest even value\n var flooredValue = Math.floor(value * decimalShift);\n return (flooredValue % 2 === 0 ? flooredValue : flooredValue + 1) / decimalShift;\n } else {\n // Otherwise, proceed as normal\n return Math.round(value * decimalShift) / decimalShift;\n }\n }\n\n // 4.1.5. Serializing a Decimal\n //\n // Given a decimal number as input_decimal, return an ASCII string\n // suitable for use in a HTTP field value.\n //\n // 1. If input_decimal is not a decimal number, fail serialization.\n //\n // 2. If input_decimal has more than three significant digits to the\n // right of the decimal point, round it to three decimal places,\n // rounding the final digit to the nearest value, or to the even\n // value if it is equidistant.\n //\n // 3. If input_decimal has more than 12 significant digits to the left\n // of the decimal point after rounding, fail serialization.\n //\n // 4. Let output be an empty string.\n //\n // 5. If input_decimal is less than (but not equal to) 0, append \"-\"\n // to output.\n //\n // 6. Append input_decimal's integer component represented in base 10\n // (using only decimal digits) to output; if it is zero, append\n // \"0\".\n //\n // 7. Append \".\" to output.\n //\n // 8. If input_decimal's fractional component is zero, append \"0\" to\n // output.\n //\n // 9. Otherwise, append the significant digits of input_decimal's\n // fractional component represented in base 10 (using only decimal\n // digits) to output.\n //\n // 10. Return output.\n function serializeDecimal(value) {\n var roundedValue = roundToEven(value, 3); // round to 3 decimal places\n if (Math.floor(Math.abs(roundedValue)).toString().length > 12) {\n throw serializeError(value, DECIMAL);\n }\n var stringValue = roundedValue.toString();\n return stringValue.includes('.') ? stringValue : stringValue + \".0\";\n }\n\n var STRING = 'String';\n\n // 4.1.6. Serializing a String\n //\n // Given a String as input_string, return an ASCII string suitable for\n // use in a HTTP field value.\n //\n // 1. Convert input_string into a sequence of ASCII characters; if\n // conversion fails, fail serialization.\n //\n // 2. If input_string contains characters in the range %x00-1f or %x7f\n // (i.e., not in VCHAR or SP), fail serialization.\n //\n // 3. Let output be the string DQUOTE.\n //\n // 4. For each character char in input_string:\n //\n // 1. If char is \"\\\" or DQUOTE:\n //\n // 1. Append \"\\\" to output.\n //\n // 2. Append char to output.\n //\n // 5. Append DQUOTE to output.\n //\n // 6. Return output.\n function serializeString(value) {\n if (STRING_REGEX.test(value)) {\n throw serializeError(value, STRING);\n }\n return \"\\\"\" + value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\"\";\n }\n\n function symbolToStr(symbol) {\n return symbol.description || symbol.toString().slice(7, -1);\n }\n\n function serializeToken(token) {\n var value = symbolToStr(token);\n if (/^([a-zA-Z*])([!#$%&'*+\\-.^_`|~\\w:/]*)$/.test(value) === false) {\n throw serializeError(value, TOKEN);\n }\n return value;\n }\n\n // 4.1.3.1. Serializing a Bare Item\n //\n // Given an Item as input_item, return an ASCII string suitable for use\n // in a HTTP field value.\n //\n // 1. If input_item is an Integer, return the result of running\n // Serializing an Integer (Section 4.1.4) with input_item.\n //\n // 2. If input_item is a Decimal, return the result of running\n // Serializing a Decimal (Section 4.1.5) with input_item.\n //\n // 3. If input_item is a String, return the result of running\n // Serializing a String (Section 4.1.6) with input_item.\n //\n // 4. If input_item is a Token, return the result of running\n // Serializing a Token (Section 4.1.7) with input_item.\n //\n // 5. If input_item is a Boolean, return the result of running\n // Serializing a Boolean (Section 4.1.9) with input_item.\n //\n // 6. If input_item is a Byte Sequence, return the result of running\n // Serializing a Byte Sequence (Section 4.1.8) with input_item.\n //\n // 7. If input_item is a Date, return the result of running Serializing\n // a Date (Section 4.1.10) with input_item.\n //\n // 8. Otherwise, fail serialization.\n function serializeBareItem(value) {\n switch (typeof value) {\n case 'number':\n if (!isFiniteNumber(value)) {\n throw serializeError(value, BARE_ITEM);\n }\n if (Number.isInteger(value)) {\n return serializeInteger(value);\n }\n return serializeDecimal(value);\n case 'string':\n return serializeString(value);\n case 'symbol':\n return serializeToken(value);\n case 'boolean':\n return serializeBoolean(value);\n case 'object':\n if (value instanceof Date) {\n return serializeDate(value);\n }\n if (value instanceof Uint8Array) {\n return serializeByteSequence(value);\n }\n if (value instanceof SfToken) {\n return serializeToken(value);\n }\n default:\n // fail\n throw serializeError(value, BARE_ITEM);\n }\n }\n\n // 4.1.1.3. Serializing a Key\n //\n // Given a key as input_key, return an ASCII string suitable for use in\n // a HTTP field value.\n //\n // 1. Convert input_key into a sequence of ASCII characters; if\n // conversion fails, fail serialization.\n //\n // 2. If input_key contains characters not in lcalpha, DIGIT, \"_\", \"-\",\n // \".\", or \"*\" fail serialization.\n //\n // 3. If the first character of input_key is not lcalpha or \"*\", fail\n // serialization.\n //\n // 4. Let output be an empty string.\n //\n // 5. Append input_key to output.\n //\n // 6. Return output.\n function serializeKey(value) {\n if (/^[a-z*][a-z0-9\\-_.*]*$/.test(value) === false) {\n throw serializeError(value, KEY);\n }\n return value;\n }\n\n // 4.1.1.2. Serializing Parameters\n //\n // Given an ordered Dictionary as input_parameters (each member having a\n // param_name and a param_value), return an ASCII string suitable for\n // use in a HTTP field value.\n //\n // 1. Let output be an empty string.\n //\n // 2. For each param_name with a value of param_value in\n // input_parameters:\n //\n // 1. Append \";\" to output.\n //\n // 2. Append the result of running Serializing a Key\n // (Section 4.1.1.3) with param_name to output.\n //\n // 3. If param_value is not Boolean true:\n //\n // 1. Append \"=\" to output.\n //\n // 2. Append the result of running Serializing a bare Item\n // (Section 4.1.3.1) with param_value to output.\n //\n // 3. Return output.\n function serializeParams(params) {\n if (params == null) {\n return '';\n }\n return Object.entries(params).map(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n if (value === true) {\n return \";\" + serializeKey(key); // omit true\n }\n return \";\" + serializeKey(key) + \"=\" + serializeBareItem(value);\n }).join('');\n }\n\n // 4.1.3. Serializing an Item\n //\n // Given an Item as bare_item and Parameters as item_parameters, return\n // an ASCII string suitable for use in a HTTP field value.\n //\n // 1. Let output be an empty string.\n //\n // 2. Append the result of running Serializing a Bare Item\n // Section 4.1.3.1 with bare_item to output.\n //\n // 3. Append the result of running Serializing Parameters\n // Section 4.1.1.2 with item_parameters to output.\n //\n // 4. Return output.\n function serializeItem(value) {\n if (value instanceof SfItem) {\n return \"\" + serializeBareItem(value.value) + serializeParams(value.params);\n } else {\n return serializeBareItem(value);\n }\n }\n\n // 4.1.1.1. Serializing an Inner List\n //\n // Given an array of (member_value, parameters) tuples as inner_list,\n // and parameters as list_parameters, return an ASCII string suitable\n // for use in a HTTP field value.\n //\n // 1. Let output be the string \"(\".\n //\n // 2. For each (member_value, parameters) of inner_list:\n //\n // 1. Append the result of running Serializing an Item\n // (Section 4.1.3) with (member_value, parameters) to output.\n //\n // 2. If more values remain in inner_list, append a single SP to\n // output.\n //\n // 3. Append \")\" to output.\n //\n // 4. Append the result of running Serializing Parameters\n // (Section 4.1.1.2) with list_parameters to output.\n //\n // 5. Return output.\n function serializeInnerList(value) {\n return \"(\" + value.value.map(serializeItem).join(' ') + \")\" + serializeParams(value.params);\n }\n\n // 4.1.2. Serializing a Dictionary\n //\n // Given an ordered Dictionary as input_dictionary (each member having a\n // member_name and a tuple value of (member_value, parameters)), return\n // an ASCII string suitable for use in a HTTP field value.\n //\n // 1. Let output be an empty string.\n //\n // 2. For each member_name with a value of (member_value, parameters)\n // in input_dictionary:\n //\n // 1. Append the result of running Serializing a Key\n // (Section 4.1.1.3) with member's member_name to output.\n //\n // 2. If member_value is Boolean true:\n //\n // 1. Append the result of running Serializing Parameters\n // (Section 4.1.1.2) with parameters to output.\n //\n // 3. Otherwise:\n //\n // 1. Append \"=\" to output.\n //\n // 2. If member_value is an array, append the result of running\n // Serializing an Inner List (Section 4.1.1.1) with\n // (member_value, parameters) to output.\n //\n // 3. Otherwise, append the result of running Serializing an\n // Item (Section 4.1.3) with (member_value, parameters) to\n // output.\n //\n // 4. If more members remain in input_dictionary:\n //\n // 1. Append \",\" to output.\n //\n // 2. Append a single SP to output.\n //\n // 3. Return output.\n function serializeDict(dict, options) {\n var _options;\n if (options === void 0) {\n options = {\n whitespace: true\n };\n }\n if (typeof dict !== 'object') {\n throw serializeError(dict, DICT);\n }\n var entries = dict instanceof Map ? dict.entries() : Object.entries(dict);\n var optionalWhiteSpace = (_options = options) != null && _options.whitespace ? ' ' : '';\n return Array.from(entries).map(function (_ref) {\n var key = _ref[0],\n item = _ref[1];\n if (item instanceof SfItem === false) {\n item = new SfItem(item);\n }\n var output = serializeKey(key);\n if (item.value === true) {\n output += serializeParams(item.params);\n } else {\n output += '=';\n if (Array.isArray(item.value)) {\n output += serializeInnerList(item);\n } else {\n output += serializeItem(item);\n }\n }\n return output;\n }).join(\",\" + optionalWhiteSpace);\n }\n\n /**\n * Encode an object into a structured field dictionary\n *\n * @param input - The structured field dictionary to encode\n * @returns The structured field string\n *\n * @group Structured Field\n *\n * @beta\n */\n function encodeSfDict(value, options) {\n return serializeDict(value, options);\n }\n\n /**\n * Checks if the given key is a token field.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a token field.\n *\n * @internal\n *\n * @group CMCD\n */\n var isTokenField = function isTokenField(key) {\n return key === 'ot' || key === 'sf' || key === 'st';\n };\n\n var isValid = function isValid(value) {\n if (typeof value === 'number') {\n return isFiniteNumber(value);\n }\n return value != null && value !== '' && value !== false;\n };\n\n /**\n * Constructs a relative path from a URL.\n *\n * @param url - The destination URL\n * @param base - The base URL\n * @returns The relative path\n *\n * @group Utils\n *\n * @beta\n */\n function urlToRelativePath(url, base) {\n var to = new URL(url);\n var from = new URL(base);\n if (to.origin !== from.origin) {\n return url;\n }\n var toPath = to.pathname.split('/').slice(1);\n var fromPath = from.pathname.split('/').slice(1, -1);\n // remove common parents\n while (toPath[0] === fromPath[0]) {\n toPath.shift();\n fromPath.shift();\n }\n // add back paths\n while (fromPath.length) {\n fromPath.shift();\n toPath.unshift('..');\n }\n return toPath.join('/');\n }\n\n /**\n * Generate a random v4 UUID\n *\n * @returns A random v4 UUID\n *\n * @group Utils\n *\n * @beta\n */\n function uuid() {\n try {\n return crypto.randomUUID();\n } catch (error) {\n try {\n var url = URL.createObjectURL(new Blob());\n var _uuid = url.toString();\n URL.revokeObjectURL(url);\n return _uuid.slice(_uuid.lastIndexOf('/') + 1);\n } catch (error) {\n var dt = new Date().getTime();\n var _uuid2 = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (dt + Math.random() * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n return _uuid2;\n }\n }\n }\n\n var toRounded = function toRounded(value) {\n return Math.round(value);\n };\n var toUrlSafe = function toUrlSafe(value, options) {\n if (options != null && options.baseUrl) {\n value = urlToRelativePath(value, options.baseUrl);\n }\n return encodeURIComponent(value);\n };\n var toHundred = function toHundred(value) {\n return toRounded(value / 100) * 100;\n };\n /**\n * The default formatters for CMCD values.\n *\n * @group CMCD\n *\n * @beta\n */\n var CmcdFormatters = {\n /**\n * Bitrate (kbps) rounded integer\n */\n br: toRounded,\n /**\n * Duration (milliseconds) rounded integer\n */\n d: toRounded,\n /**\n * Buffer Length (milliseconds) rounded nearest 100ms\n */\n bl: toHundred,\n /**\n * Deadline (milliseconds) rounded nearest 100ms\n */\n dl: toHundred,\n /**\n * Measured Throughput (kbps) rounded nearest 100kbps\n */\n mtp: toHundred,\n /**\n * Next Object Request URL encoded\n */\n nor: toUrlSafe,\n /**\n * Requested maximum throughput (kbps) rounded nearest 100kbps\n */\n rtp: toHundred,\n /**\n * Top Bitrate (kbps) rounded integer\n */\n tb: toRounded\n };\n\n /**\n * Internal CMCD processing function.\n *\n * @param obj - The CMCD object to process.\n * @param map - The mapping function to use.\n * @param options - Options for encoding.\n *\n * @internal\n *\n * @group CMCD\n */\n function processCmcd(obj, options) {\n var results = {};\n if (obj == null || typeof obj !== 'object') {\n return results;\n }\n var keys = Object.keys(obj).sort();\n var formatters = _extends({}, CmcdFormatters, options == null ? void 0 : options.formatters);\n var filter = options == null ? void 0 : options.filter;\n keys.forEach(function (key) {\n if (filter != null && filter(key)) {\n return;\n }\n var value = obj[key];\n var formatter = formatters[key];\n if (formatter) {\n value = formatter(value, options);\n }\n // Version should only be reported if not equal to 1.\n if (key === 'v' && value === 1) {\n return;\n }\n // Playback rate should only be sent if not equal to 1.\n if (key == 'pr' && value === 1) {\n return;\n }\n // ignore invalid values\n if (!isValid(value)) {\n return;\n }\n if (isTokenField(key) && typeof value === 'string') {\n value = new SfToken(value);\n }\n results[key] = value;\n });\n return results;\n }\n\n /**\n * Encode a CMCD object to a string.\n *\n * @param cmcd - The CMCD object to encode.\n * @param options - Options for encoding.\n *\n * @returns The encoded CMCD string.\n *\n * @group CMCD\n *\n * @beta\n */\n function encodeCmcd(cmcd, options) {\n if (options === void 0) {\n options = {};\n }\n if (!cmcd) {\n return '';\n }\n return encodeSfDict(processCmcd(cmcd, options), _extends({\n whitespace: false\n }, options));\n }\n\n /**\n * Convert a CMCD data object to request headers\n *\n * @param cmcd - The CMCD data object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The CMCD header shards.\n *\n * @group CMCD\n *\n * @beta\n */\n function toCmcdHeaders(cmcd, options) {\n var _options;\n if (options === void 0) {\n options = {};\n }\n if (!cmcd) {\n return {};\n }\n var entries = Object.entries(cmcd);\n var headerMap = Object.entries(CmcdHeaderMap).concat(Object.entries(((_options = options) == null ? void 0 : _options.customHeaderMap) || {}));\n var shards = entries.reduce(function (acc, entry) {\n var _headerMap$find, _acc$field;\n var key = entry[0],\n value = entry[1];\n var field = ((_headerMap$find = headerMap.find(function (entry) {\n return entry[1].includes(key);\n })) == null ? void 0 : _headerMap$find[0]) || CmcdHeaderField.REQUEST;\n (_acc$field = acc[field]) != null ? _acc$field : acc[field] = {};\n acc[field][key] = value;\n return acc;\n }, {});\n return Object.entries(shards).reduce(function (acc, _ref) {\n var field = _ref[0],\n value = _ref[1];\n acc[field] = encodeCmcd(value, options);\n return acc;\n }, {});\n }\n\n /**\n * Append CMCD query args to a header object.\n *\n * @param headers - The headers to append to.\n * @param cmcd - The CMCD object to append.\n * @param customHeaderMap - A map of custom CMCD keys to header fields.\n *\n * @returns The headers with the CMCD header shards appended.\n *\n * @group CMCD\n *\n * @beta\n */\n function appendCmcdHeaders(headers, cmcd, options) {\n return _extends(headers, toCmcdHeaders(cmcd, options));\n }\n\n /**\n * CMCD parameter name.\n *\n * @group CMCD\n *\n * @beta\n */\n var CMCD_PARAM = 'CMCD';\n\n /**\n * Convert a CMCD data object to a query arg.\n *\n * @param cmcd - The CMCD object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The CMCD query arg.\n *\n * @group CMCD\n *\n * @beta\n */\n function toCmcdQuery(cmcd, options) {\n if (options === void 0) {\n options = {};\n }\n if (!cmcd) {\n return '';\n }\n var params = encodeCmcd(cmcd, options);\n return CMCD_PARAM + \"=\" + encodeURIComponent(params);\n }\n\n var REGEX = /CMCD=[^&#]+/;\n /**\n * Append CMCD query args to a URL.\n *\n * @param url - The URL to append to.\n * @param cmcd - The CMCD object to append.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The URL with the CMCD query args appended.\n *\n * @group CMCD\n *\n * @beta\n */\n function appendCmcdQuery(url, cmcd, options) {\n // TODO: Replace with URLSearchParams once we drop Safari < 10.1 & Chrome < 49 support.\n // https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\n var query = toCmcdQuery(cmcd, options);\n if (!query) {\n return url;\n }\n if (REGEX.test(url)) {\n return url.replace(REGEX, query);\n }\n var separator = url.includes('?') ? '&' : '?';\n return \"\" + url + separator + query;\n }\n\n /**\n * Controller to deal with Common Media Client Data (CMCD)\n * @see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf\n */\n var CMCDController = /*#__PURE__*/function () {\n // eslint-disable-line no-restricted-globals\n\n function CMCDController(hls) {\n var _this = this;\n this.hls = void 0;\n this.config = void 0;\n this.media = void 0;\n this.sid = void 0;\n this.cid = void 0;\n this.useHeaders = false;\n this.includeKeys = void 0;\n this.initialized = false;\n this.starved = false;\n this.buffering = true;\n this.audioBuffer = void 0;\n // eslint-disable-line no-restricted-globals\n this.videoBuffer = void 0;\n this.onWaiting = function () {\n if (_this.initialized) {\n _this.starved = true;\n }\n _this.buffering = true;\n };\n this.onPlaying = function () {\n if (!_this.initialized) {\n _this.initialized = true;\n }\n _this.buffering = false;\n };\n /**\n * Apply CMCD data to a manifest request.\n */\n this.applyPlaylistData = function (context) {\n try {\n _this.apply(context, {\n ot: CmObjectType.MANIFEST,\n su: !_this.initialized\n });\n } catch (error) {\n logger.warn('Could not generate manifest CMCD data.', error);\n }\n };\n /**\n * Apply CMCD data to a segment request\n */\n this.applyFragmentData = function (context) {\n try {\n var fragment = context.frag;\n var level = _this.hls.levels[fragment.level];\n var ot = _this.getObjectType(fragment);\n var data = {\n d: fragment.duration * 1000,\n ot: ot\n };\n if (ot === CmObjectType.VIDEO || ot === CmObjectType.AUDIO || ot == CmObjectType.MUXED) {\n data.br = level.bitrate / 1000;\n data.tb = _this.getTopBandwidth(ot) / 1000;\n data.bl = _this.getBufferLength(ot);\n }\n _this.apply(context, data);\n } catch (error) {\n logger.warn('Could not generate segment CMCD data.', error);\n }\n };\n this.hls = hls;\n var config = this.config = hls.config;\n var cmcd = config.cmcd;\n if (cmcd != null) {\n config.pLoader = this.createPlaylistLoader();\n config.fLoader = this.createFragmentLoader();\n this.sid = cmcd.sessionId || uuid();\n this.cid = cmcd.contentId;\n this.useHeaders = cmcd.useHeaders === true;\n this.includeKeys = cmcd.includeKeys;\n this.registerListeners();\n }\n }\n var _proto = CMCDController.prototype;\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n };\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.onMediaDetached();\n\n // @ts-ignore\n this.hls = this.config = this.audioBuffer = this.videoBuffer = null;\n // @ts-ignore\n this.onWaiting = this.onPlaying = null;\n };\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n this.media.addEventListener('waiting', this.onWaiting);\n this.media.addEventListener('playing', this.onPlaying);\n };\n _proto.onMediaDetached = function onMediaDetached() {\n if (!this.media) {\n return;\n }\n this.media.removeEventListener('waiting', this.onWaiting);\n this.media.removeEventListener('playing', this.onPlaying);\n\n // @ts-ignore\n this.media = null;\n };\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var _data$tracks$audio, _data$tracks$video;\n this.audioBuffer = (_data$tracks$audio = data.tracks.audio) == null ? void 0 : _data$tracks$audio.buffer;\n this.videoBuffer = (_data$tracks$video = data.tracks.video) == null ? void 0 : _data$tracks$video.buffer;\n };\n /**\n * Create baseline CMCD data\n */\n _proto.createData = function createData() {\n var _this$media;\n return {\n v: 1,\n sf: CmStreamingFormat.HLS,\n sid: this.sid,\n cid: this.cid,\n pr: (_this$media = this.media) == null ? void 0 : _this$media.playbackRate,\n mtp: this.hls.bandwidthEstimate / 1000\n };\n }\n\n /**\n * Apply CMCD data to a request.\n */;\n _proto.apply = function apply(context, data) {\n if (data === void 0) {\n data = {};\n }\n // apply baseline data\n _extends(data, this.createData());\n var isVideo = data.ot === CmObjectType.INIT || data.ot === CmObjectType.VIDEO || data.ot === CmObjectType.MUXED;\n if (this.starved && isVideo) {\n data.bs = true;\n data.su = true;\n this.starved = false;\n }\n if (data.su == null) {\n data.su = this.buffering;\n }\n\n // TODO: Implement rtp, nrr, nor, dl\n\n var includeKeys = this.includeKeys;\n if (includeKeys) {\n data = Object.keys(data).reduce(function (acc, key) {\n includeKeys.includes(key) && (acc[key] = data[key]);\n return acc;\n }, {});\n }\n if (this.useHeaders) {\n if (!context.headers) {\n context.headers = {};\n }\n appendCmcdHeaders(context.headers, data);\n } else {\n context.url = appendCmcdQuery(context.url, data);\n }\n };\n /**\n * The CMCD object type.\n */\n _proto.getObjectType = function getObjectType(fragment) {\n var type = fragment.type;\n if (type === 'subtitle') {\n return CmObjectType.TIMED_TEXT;\n }\n if (fragment.sn === 'initSegment') {\n return CmObjectType.INIT;\n }\n if (type === 'audio') {\n return CmObjectType.AUDIO;\n }\n if (type === 'main') {\n if (!this.hls.audioTracks.length) {\n return CmObjectType.MUXED;\n }\n return CmObjectType.VIDEO;\n }\n return undefined;\n }\n\n /**\n * Get the highest bitrate.\n */;\n _proto.getTopBandwidth = function getTopBandwidth(type) {\n var bitrate = 0;\n var levels;\n var hls = this.hls;\n if (type === CmObjectType.AUDIO) {\n levels = hls.audioTracks;\n } else {\n var max = hls.maxAutoLevel;\n var len = max > -1 ? max + 1 : hls.levels.length;\n levels = hls.levels.slice(0, len);\n }\n for (var _iterator = _createForOfIteratorHelperLoose(levels), _step; !(_step = _iterator()).done;) {\n var level = _step.value;\n if (level.bitrate > bitrate) {\n bitrate = level.bitrate;\n }\n }\n return bitrate > 0 ? bitrate : NaN;\n }\n\n /**\n * Get the buffer length for a media type in milliseconds\n */;\n _proto.getBufferLength = function getBufferLength(type) {\n var media = this.hls.media;\n var buffer = type === CmObjectType.AUDIO ? this.audioBuffer : this.videoBuffer;\n if (!buffer || !media) {\n return NaN;\n }\n var info = BufferHelper.bufferInfo(buffer, media.currentTime, this.config.maxBufferHole);\n return info.len * 1000;\n }\n\n /**\n * Create a playlist loader\n */;\n _proto.createPlaylistLoader = function createPlaylistLoader() {\n var pLoader = this.config.pLoader;\n var apply = this.applyPlaylistData;\n var Ctor = pLoader || this.config.loader;\n return /*#__PURE__*/function () {\n function CmcdPlaylistLoader(config) {\n this.loader = void 0;\n this.loader = new Ctor(config);\n }\n var _proto2 = CmcdPlaylistLoader.prototype;\n _proto2.destroy = function destroy() {\n this.loader.destroy();\n };\n _proto2.abort = function abort() {\n this.loader.abort();\n };\n _proto2.load = function load(context, config, callbacks) {\n apply(context);\n this.loader.load(context, config, callbacks);\n };\n _createClass(CmcdPlaylistLoader, [{\n key: \"stats\",\n get: function get() {\n return this.loader.stats;\n }\n }, {\n key: \"context\",\n get: function get() {\n return this.loader.context;\n }\n }]);\n return CmcdPlaylistLoader;\n }();\n }\n\n /**\n * Create a playlist loader\n */;\n _proto.createFragmentLoader = function createFragmentLoader() {\n var fLoader = this.config.fLoader;\n var apply = this.applyFragmentData;\n var Ctor = fLoader || this.config.loader;\n return /*#__PURE__*/function () {\n function CmcdFragmentLoader(config) {\n this.loader = void 0;\n this.loader = new Ctor(config);\n }\n var _proto3 = CmcdFragmentLoader.prototype;\n _proto3.destroy = function destroy() {\n this.loader.destroy();\n };\n _proto3.abort = function abort() {\n this.loader.abort();\n };\n _proto3.load = function load(context, config, callbacks) {\n apply(context);\n this.loader.load(context, config, callbacks);\n };\n _createClass(CmcdFragmentLoader, [{\n key: \"stats\",\n get: function get() {\n return this.loader.stats;\n }\n }, {\n key: \"context\",\n get: function get() {\n return this.loader.context;\n }\n }]);\n return CmcdFragmentLoader;\n }();\n };\n return CMCDController;\n }();\n\n var PATHWAY_PENALTY_DURATION_MS = 300000;\n var ContentSteeringController = /*#__PURE__*/function () {\n function ContentSteeringController(hls) {\n this.hls = void 0;\n this.log = void 0;\n this.loader = null;\n this.uri = null;\n this.pathwayId = '.';\n this.pathwayPriority = null;\n this.timeToLoad = 300;\n this.reloadTimer = -1;\n this.updated = 0;\n this.started = false;\n this.enabled = true;\n this.levels = null;\n this.audioTracks = null;\n this.subtitleTracks = null;\n this.penalizedPathways = {};\n this.hls = hls;\n this.log = logger.log.bind(logger, \"[content-steering]:\");\n this.registerListeners();\n }\n var _proto = ContentSteeringController.prototype;\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.ERROR, this.onError, this);\n };\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n if (!hls) {\n return;\n }\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.ERROR, this.onError, this);\n };\n _proto.startLoad = function startLoad() {\n this.started = true;\n this.clearTimeout();\n if (this.enabled && this.uri) {\n if (this.updated) {\n var ttl = this.timeToLoad * 1000 - (performance.now() - this.updated);\n if (ttl > 0) {\n this.scheduleRefresh(this.uri, ttl);\n return;\n }\n }\n this.loadSteeringManifest(this.uri);\n }\n };\n _proto.stopLoad = function stopLoad() {\n this.started = false;\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n this.clearTimeout();\n };\n _proto.clearTimeout = function clearTimeout() {\n if (this.reloadTimer !== -1) {\n self.clearTimeout(this.reloadTimer);\n this.reloadTimer = -1;\n }\n };\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.stopLoad();\n // @ts-ignore\n this.hls = null;\n this.levels = this.audioTracks = this.subtitleTracks = null;\n };\n _proto.removeLevel = function removeLevel(levelToRemove) {\n var levels = this.levels;\n if (levels) {\n this.levels = levels.filter(function (level) {\n return level !== levelToRemove;\n });\n }\n };\n _proto.onManifestLoading = function onManifestLoading() {\n this.stopLoad();\n this.enabled = true;\n this.timeToLoad = 300;\n this.updated = 0;\n this.uri = null;\n this.pathwayId = '.';\n this.levels = this.audioTracks = this.subtitleTracks = null;\n };\n _proto.onManifestLoaded = function onManifestLoaded(event, data) {\n var contentSteering = data.contentSteering;\n if (contentSteering === null) {\n return;\n }\n this.pathwayId = contentSteering.pathwayId;\n this.uri = contentSteering.uri;\n if (this.started) {\n this.startLoad();\n }\n };\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n this.audioTracks = data.audioTracks;\n this.subtitleTracks = data.subtitleTracks;\n };\n _proto.onError = function onError(event, data) {\n var errorAction = data.errorAction;\n if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox && errorAction.flags === ErrorActionFlags.MoveAllAlternatesMatchingHost) {\n var levels = this.levels;\n var pathwayPriority = this.pathwayPriority;\n var errorPathway = this.pathwayId;\n if (data.context) {\n var _data$context = data.context,\n groupId = _data$context.groupId,\n _pathwayId = _data$context.pathwayId,\n type = _data$context.type;\n if (groupId && levels) {\n errorPathway = this.getPathwayForGroupId(groupId, type, errorPathway);\n } else if (_pathwayId) {\n errorPathway = _pathwayId;\n }\n }\n if (!(errorPathway in this.penalizedPathways)) {\n this.penalizedPathways[errorPathway] = performance.now();\n }\n if (!pathwayPriority && levels) {\n // If PATHWAY-PRIORITY was not provided, list pathways for error handling\n pathwayPriority = levels.reduce(function (pathways, level) {\n if (pathways.indexOf(level.pathwayId) === -1) {\n pathways.push(level.pathwayId);\n }\n return pathways;\n }, []);\n }\n if (pathwayPriority && pathwayPriority.length > 1) {\n this.updatePathwayPriority(pathwayPriority);\n errorAction.resolved = this.pathwayId !== errorPathway;\n }\n if (!errorAction.resolved) {\n logger.warn(\"Could not resolve \" + data.details + \" (\\\"\" + data.error.message + \"\\\") with content-steering for Pathway: \" + errorPathway + \" levels: \" + (levels ? levels.length : levels) + \" priorities: \" + JSON.stringify(pathwayPriority) + \" penalized: \" + JSON.stringify(this.penalizedPathways));\n }\n }\n };\n _proto.filterParsedLevels = function filterParsedLevels(levels) {\n // Filter levels to only include those that are in the initial pathway\n this.levels = levels;\n var pathwayLevels = this.getLevelsForPathway(this.pathwayId);\n if (pathwayLevels.length === 0) {\n var _pathwayId2 = levels[0].pathwayId;\n this.log(\"No levels found in Pathway \" + this.pathwayId + \". Setting initial Pathway to \\\"\" + _pathwayId2 + \"\\\"\");\n pathwayLevels = this.getLevelsForPathway(_pathwayId2);\n this.pathwayId = _pathwayId2;\n }\n if (pathwayLevels.length !== levels.length) {\n this.log(\"Found \" + pathwayLevels.length + \"/\" + levels.length + \" levels in Pathway \\\"\" + this.pathwayId + \"\\\"\");\n return pathwayLevels;\n }\n return levels;\n };\n _proto.getLevelsForPathway = function getLevelsForPathway(pathwayId) {\n if (this.levels === null) {\n return [];\n }\n return this.levels.filter(function (level) {\n return pathwayId === level.pathwayId;\n });\n };\n _proto.updatePathwayPriority = function updatePathwayPriority(pathwayPriority) {\n this.pathwayPriority = pathwayPriority;\n var levels;\n\n // Evaluate if we should remove the pathway from the penalized list\n var penalizedPathways = this.penalizedPathways;\n var now = performance.now();\n Object.keys(penalizedPathways).forEach(function (pathwayId) {\n if (now - penalizedPathways[pathwayId] > PATHWAY_PENALTY_DURATION_MS) {\n delete penalizedPathways[pathwayId];\n }\n });\n for (var i = 0; i < pathwayPriority.length; i++) {\n var _pathwayId3 = pathwayPriority[i];\n if (_pathwayId3 in penalizedPathways) {\n continue;\n }\n if (_pathwayId3 === this.pathwayId) {\n return;\n }\n var selectedIndex = this.hls.nextLoadLevel;\n var selectedLevel = this.hls.levels[selectedIndex];\n levels = this.getLevelsForPathway(_pathwayId3);\n if (levels.length > 0) {\n this.log(\"Setting Pathway to \\\"\" + _pathwayId3 + \"\\\"\");\n this.pathwayId = _pathwayId3;\n reassignFragmentLevelIndexes(levels);\n this.hls.trigger(Events.LEVELS_UPDATED, {\n levels: levels\n });\n // Set LevelController's level to trigger LEVEL_SWITCHING which loads playlist if needed\n var levelAfterChange = this.hls.levels[selectedIndex];\n if (selectedLevel && levelAfterChange && this.levels) {\n if (levelAfterChange.attrs['STABLE-VARIANT-ID'] !== selectedLevel.attrs['STABLE-VARIANT-ID'] && levelAfterChange.bitrate !== selectedLevel.bitrate) {\n this.log(\"Unstable Pathways change from bitrate \" + selectedLevel.bitrate + \" to \" + levelAfterChange.bitrate);\n }\n this.hls.nextLoadLevel = selectedIndex;\n }\n break;\n }\n }\n };\n _proto.getPathwayForGroupId = function getPathwayForGroupId(groupId, type, defaultPathway) {\n var levels = this.getLevelsForPathway(defaultPathway).concat(this.levels || []);\n for (var i = 0; i < levels.length; i++) {\n if (type === PlaylistContextType.AUDIO_TRACK && levels[i].hasAudioGroup(groupId) || type === PlaylistContextType.SUBTITLE_TRACK && levels[i].hasSubtitleGroup(groupId)) {\n return levels[i].pathwayId;\n }\n }\n return defaultPathway;\n };\n _proto.clonePathways = function clonePathways(pathwayClones) {\n var _this = this;\n var levels = this.levels;\n if (!levels) {\n return;\n }\n var audioGroupCloneMap = {};\n var subtitleGroupCloneMap = {};\n pathwayClones.forEach(function (pathwayClone) {\n var cloneId = pathwayClone.ID,\n baseId = pathwayClone['BASE-ID'],\n uriReplacement = pathwayClone['URI-REPLACEMENT'];\n if (levels.some(function (level) {\n return level.pathwayId === cloneId;\n })) {\n return;\n }\n var clonedVariants = _this.getLevelsForPathway(baseId).map(function (baseLevel) {\n var attributes = new AttrList(baseLevel.attrs);\n attributes['PATHWAY-ID'] = cloneId;\n var clonedAudioGroupId = attributes.AUDIO && attributes.AUDIO + \"_clone_\" + cloneId;\n var clonedSubtitleGroupId = attributes.SUBTITLES && attributes.SUBTITLES + \"_clone_\" + cloneId;\n if (clonedAudioGroupId) {\n audioGroupCloneMap[attributes.AUDIO] = clonedAudioGroupId;\n attributes.AUDIO = clonedAudioGroupId;\n }\n if (clonedSubtitleGroupId) {\n subtitleGroupCloneMap[attributes.SUBTITLES] = clonedSubtitleGroupId;\n attributes.SUBTITLES = clonedSubtitleGroupId;\n }\n var url = performUriReplacement(baseLevel.uri, attributes['STABLE-VARIANT-ID'], 'PER-VARIANT-URIS', uriReplacement);\n var clonedLevel = new Level({\n attrs: attributes,\n audioCodec: baseLevel.audioCodec,\n bitrate: baseLevel.bitrate,\n height: baseLevel.height,\n name: baseLevel.name,\n url: url,\n videoCodec: baseLevel.videoCodec,\n width: baseLevel.width\n });\n if (baseLevel.audioGroups) {\n for (var i = 1; i < baseLevel.audioGroups.length; i++) {\n clonedLevel.addGroupId('audio', baseLevel.audioGroups[i] + \"_clone_\" + cloneId);\n }\n }\n if (baseLevel.subtitleGroups) {\n for (var _i = 1; _i < baseLevel.subtitleGroups.length; _i++) {\n clonedLevel.addGroupId('text', baseLevel.subtitleGroups[_i] + \"_clone_\" + cloneId);\n }\n }\n return clonedLevel;\n });\n levels.push.apply(levels, clonedVariants);\n cloneRenditionGroups(_this.audioTracks, audioGroupCloneMap, uriReplacement, cloneId);\n cloneRenditionGroups(_this.subtitleTracks, subtitleGroupCloneMap, uriReplacement, cloneId);\n });\n };\n _proto.loadSteeringManifest = function loadSteeringManifest(uri) {\n var _this2 = this;\n var config = this.hls.config;\n var Loader = config.loader;\n if (this.loader) {\n this.loader.destroy();\n }\n this.loader = new Loader(config);\n var url;\n try {\n url = new self.URL(uri);\n } catch (error) {\n this.enabled = false;\n this.log(\"Failed to parse Steering Manifest URI: \" + uri);\n return;\n }\n if (url.protocol !== 'data:') {\n var throughput = (this.hls.bandwidthEstimate || config.abrEwmaDefaultEstimate) | 0;\n url.searchParams.set('_HLS_pathway', this.pathwayId);\n url.searchParams.set('_HLS_throughput', '' + throughput);\n }\n var context = {\n responseType: 'json',\n url: url.href\n };\n var loadPolicy = config.steeringManifestLoadPolicy.default;\n var legacyRetryCompatibility = loadPolicy.errorRetry || loadPolicy.timeoutRetry || {};\n var loaderConfig = {\n loadPolicy: loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: legacyRetryCompatibility.maxNumRetry || 0,\n retryDelay: legacyRetryCompatibility.retryDelayMs || 0,\n maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0\n };\n var callbacks = {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n _this2.log(\"Loaded steering manifest: \\\"\" + url + \"\\\"\");\n var steeringData = response.data;\n if (steeringData.VERSION !== 1) {\n _this2.log(\"Steering VERSION \" + steeringData.VERSION + \" not supported!\");\n return;\n }\n _this2.updated = performance.now();\n _this2.timeToLoad = steeringData.TTL;\n var reloadUri = steeringData['RELOAD-URI'],\n pathwayClones = steeringData['PATHWAY-CLONES'],\n pathwayPriority = steeringData['PATHWAY-PRIORITY'];\n if (reloadUri) {\n try {\n _this2.uri = new self.URL(reloadUri, url).href;\n } catch (error) {\n _this2.enabled = false;\n _this2.log(\"Failed to parse Steering Manifest RELOAD-URI: \" + reloadUri);\n return;\n }\n }\n _this2.scheduleRefresh(_this2.uri || context.url);\n if (pathwayClones) {\n _this2.clonePathways(pathwayClones);\n }\n var loadedSteeringData = {\n steeringManifest: steeringData,\n url: url.toString()\n };\n _this2.hls.trigger(Events.STEERING_MANIFEST_LOADED, loadedSteeringData);\n if (pathwayPriority) {\n _this2.updatePathwayPriority(pathwayPriority);\n }\n },\n onError: function onError(error, context, networkDetails, stats) {\n _this2.log(\"Error loading steering manifest: \" + error.code + \" \" + error.text + \" (\" + context.url + \")\");\n _this2.stopLoad();\n if (error.code === 410) {\n _this2.enabled = false;\n _this2.log(\"Steering manifest \" + context.url + \" no longer available\");\n return;\n }\n var ttl = _this2.timeToLoad * 1000;\n if (error.code === 429) {\n var loader = _this2.loader;\n if (typeof (loader == null ? void 0 : loader.getResponseHeader) === 'function') {\n var retryAfter = loader.getResponseHeader('Retry-After');\n if (retryAfter) {\n ttl = parseFloat(retryAfter) * 1000;\n }\n }\n _this2.log(\"Steering manifest \" + context.url + \" rate limited\");\n return;\n }\n _this2.scheduleRefresh(_this2.uri || context.url, ttl);\n },\n onTimeout: function onTimeout(stats, context, networkDetails) {\n _this2.log(\"Timeout loading steering manifest (\" + context.url + \")\");\n _this2.scheduleRefresh(_this2.uri || context.url);\n }\n };\n this.log(\"Requesting steering manifest: \" + url);\n this.loader.load(context, loaderConfig, callbacks);\n };\n _proto.scheduleRefresh = function scheduleRefresh(uri, ttlMs) {\n var _this3 = this;\n if (ttlMs === void 0) {\n ttlMs = this.timeToLoad * 1000;\n }\n this.clearTimeout();\n this.reloadTimer = self.setTimeout(function () {\n var _this3$hls;\n var media = (_this3$hls = _this3.hls) == null ? void 0 : _this3$hls.media;\n if (media && !media.ended) {\n _this3.loadSteeringManifest(uri);\n return;\n }\n _this3.scheduleRefresh(uri, _this3.timeToLoad * 1000);\n }, ttlMs);\n };\n return ContentSteeringController;\n }();\n function cloneRenditionGroups(tracks, groupCloneMap, uriReplacement, cloneId) {\n if (!tracks) {\n return;\n }\n Object.keys(groupCloneMap).forEach(function (audioGroupId) {\n var clonedTracks = tracks.filter(function (track) {\n return track.groupId === audioGroupId;\n }).map(function (track) {\n var clonedTrack = _extends({}, track);\n clonedTrack.details = undefined;\n clonedTrack.attrs = new AttrList(clonedTrack.attrs);\n clonedTrack.url = clonedTrack.attrs.URI = performUriReplacement(track.url, track.attrs['STABLE-RENDITION-ID'], 'PER-RENDITION-URIS', uriReplacement);\n clonedTrack.groupId = clonedTrack.attrs['GROUP-ID'] = groupCloneMap[audioGroupId];\n clonedTrack.attrs['PATHWAY-ID'] = cloneId;\n return clonedTrack;\n });\n tracks.push.apply(tracks, clonedTracks);\n });\n }\n function performUriReplacement(uri, stableId, perOptionKey, uriReplacement) {\n var host = uriReplacement.HOST,\n params = uriReplacement.PARAMS,\n perOptionUris = uriReplacement[perOptionKey];\n var perVariantUri;\n if (stableId) {\n perVariantUri = perOptionUris == null ? void 0 : perOptionUris[stableId];\n if (perVariantUri) {\n uri = perVariantUri;\n }\n }\n var url = new self.URL(uri);\n if (host && !perVariantUri) {\n url.host = host;\n }\n if (params) {\n Object.keys(params).sort().forEach(function (key) {\n if (key) {\n url.searchParams.set(key, params[key]);\n }\n });\n }\n return url.href;\n }\n\n var AGE_HEADER_LINE_REGEX = /^age:\\s*[\\d.]+\\s*$/im;\n var XhrLoader = /*#__PURE__*/function () {\n function XhrLoader(config) {\n this.xhrSetup = void 0;\n this.requestTimeout = void 0;\n this.retryTimeout = void 0;\n this.retryDelay = void 0;\n this.config = null;\n this.callbacks = null;\n this.context = null;\n this.loader = null;\n this.stats = void 0;\n this.xhrSetup = config ? config.xhrSetup || null : null;\n this.stats = new LoadStats();\n this.retryDelay = 0;\n }\n var _proto = XhrLoader.prototype;\n _proto.destroy = function destroy() {\n this.callbacks = null;\n this.abortInternal();\n this.loader = null;\n this.config = null;\n this.context = null;\n this.xhrSetup = null;\n };\n _proto.abortInternal = function abortInternal() {\n var loader = this.loader;\n self.clearTimeout(this.requestTimeout);\n self.clearTimeout(this.retryTimeout);\n if (loader) {\n loader.onreadystatechange = null;\n loader.onprogress = null;\n if (loader.readyState !== 4) {\n this.stats.aborted = true;\n loader.abort();\n }\n }\n };\n _proto.abort = function abort() {\n var _this$callbacks;\n this.abortInternal();\n if ((_this$callbacks = this.callbacks) != null && _this$callbacks.onAbort) {\n this.callbacks.onAbort(this.stats, this.context, this.loader);\n }\n };\n _proto.load = function load(context, config, callbacks) {\n if (this.stats.loading.start) {\n throw new Error('Loader can only be used once.');\n }\n this.stats.loading.start = self.performance.now();\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.loadInternal();\n };\n _proto.loadInternal = function loadInternal() {\n var _this = this;\n var config = this.config,\n context = this.context;\n if (!config || !context) {\n return;\n }\n var xhr = this.loader = new self.XMLHttpRequest();\n var stats = this.stats;\n stats.loading.first = 0;\n stats.loaded = 0;\n stats.aborted = false;\n var xhrSetup = this.xhrSetup;\n if (xhrSetup) {\n Promise.resolve().then(function () {\n if (_this.loader !== xhr || _this.stats.aborted) return;\n return xhrSetup(xhr, context.url);\n }).catch(function (error) {\n if (_this.loader !== xhr || _this.stats.aborted) return;\n xhr.open('GET', context.url, true);\n return xhrSetup(xhr, context.url);\n }).then(function () {\n if (_this.loader !== xhr || _this.stats.aborted) return;\n _this.openAndSendXhr(xhr, context, config);\n }).catch(function (error) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n _this.callbacks.onError({\n code: xhr.status,\n text: error.message\n }, context, xhr, stats);\n return;\n });\n } else {\n this.openAndSendXhr(xhr, context, config);\n }\n };\n _proto.openAndSendXhr = function openAndSendXhr(xhr, context, config) {\n if (!xhr.readyState) {\n xhr.open('GET', context.url, true);\n }\n var headers = context.headers;\n var _config$loadPolicy = config.loadPolicy,\n maxTimeToFirstByteMs = _config$loadPolicy.maxTimeToFirstByteMs,\n maxLoadTimeMs = _config$loadPolicy.maxLoadTimeMs;\n if (headers) {\n for (var header in headers) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n if (context.rangeEnd) {\n xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1));\n }\n xhr.onreadystatechange = this.readystatechange.bind(this);\n xhr.onprogress = this.loadprogress.bind(this);\n xhr.responseType = context.responseType;\n // setup timeout before we perform request\n self.clearTimeout(this.requestTimeout);\n config.timeout = maxTimeToFirstByteMs && isFiniteNumber(maxTimeToFirstByteMs) ? maxTimeToFirstByteMs : maxLoadTimeMs;\n this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout);\n xhr.send();\n };\n _proto.readystatechange = function readystatechange() {\n var context = this.context,\n xhr = this.loader,\n stats = this.stats;\n if (!context || !xhr) {\n return;\n }\n var readyState = xhr.readyState;\n var config = this.config;\n\n // don't proceed if xhr has been aborted\n if (stats.aborted) {\n return;\n }\n\n // >= HEADERS_RECEIVED\n if (readyState >= 2) {\n if (stats.loading.first === 0) {\n stats.loading.first = Math.max(self.performance.now(), stats.loading.start);\n // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet\n if (config.timeout !== config.loadPolicy.maxLoadTimeMs) {\n self.clearTimeout(this.requestTimeout);\n config.timeout = config.loadPolicy.maxLoadTimeMs;\n this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.loadPolicy.maxLoadTimeMs - (stats.loading.first - stats.loading.start));\n }\n }\n if (readyState === 4) {\n self.clearTimeout(this.requestTimeout);\n xhr.onreadystatechange = null;\n xhr.onprogress = null;\n var _status = xhr.status;\n // http status between 200 to 299 are all successful\n var useResponse = xhr.responseType !== 'text';\n if (_status >= 200 && _status < 300 && (useResponse && xhr.response || xhr.responseText !== null)) {\n stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n var data = useResponse ? xhr.response : xhr.responseText;\n var len = xhr.responseType === 'arraybuffer' ? data.byteLength : data.length;\n stats.loaded = stats.total = len;\n stats.bwEstimate = stats.total * 8000 / (stats.loading.end - stats.loading.first);\n if (!this.callbacks) {\n return;\n }\n var onProgress = this.callbacks.onProgress;\n if (onProgress) {\n onProgress(stats, context, data, xhr);\n }\n if (!this.callbacks) {\n return;\n }\n var response = {\n url: xhr.responseURL,\n data: data,\n code: _status\n };\n this.callbacks.onSuccess(response, stats, context, xhr);\n } else {\n var retryConfig = config.loadPolicy.errorRetry;\n var retryCount = stats.retry;\n // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error\n var _response = {\n url: context.url,\n data: undefined,\n code: _status\n };\n if (shouldRetry(retryConfig, retryCount, false, _response)) {\n this.retry(retryConfig);\n } else {\n logger.error(_status + \" while loading \" + context.url);\n this.callbacks.onError({\n code: _status,\n text: xhr.statusText\n }, context, xhr, stats);\n }\n }\n }\n }\n };\n _proto.loadtimeout = function loadtimeout() {\n if (!this.config) return;\n var retryConfig = this.config.loadPolicy.timeoutRetry;\n var retryCount = this.stats.retry;\n if (shouldRetry(retryConfig, retryCount, true)) {\n this.retry(retryConfig);\n } else {\n var _this$context;\n logger.warn(\"timeout while loading \" + ((_this$context = this.context) == null ? void 0 : _this$context.url));\n var callbacks = this.callbacks;\n if (callbacks) {\n this.abortInternal();\n callbacks.onTimeout(this.stats, this.context, this.loader);\n }\n }\n };\n _proto.retry = function retry(retryConfig) {\n var context = this.context,\n stats = this.stats;\n this.retryDelay = getRetryDelay(retryConfig, stats.retry);\n stats.retry++;\n logger.warn((status ? 'HTTP Status ' + status : 'Timeout') + \" while loading \" + (context == null ? void 0 : context.url) + \", retrying \" + stats.retry + \"/\" + retryConfig.maxNumRetry + \" in \" + this.retryDelay + \"ms\");\n // abort and reset internal state\n this.abortInternal();\n this.loader = null;\n // schedule retry\n self.clearTimeout(this.retryTimeout);\n this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay);\n };\n _proto.loadprogress = function loadprogress(event) {\n var stats = this.stats;\n stats.loaded = event.loaded;\n if (event.lengthComputable) {\n stats.total = event.total;\n }\n };\n _proto.getCacheAge = function getCacheAge() {\n var result = null;\n if (this.loader && AGE_HEADER_LINE_REGEX.test(this.loader.getAllResponseHeaders())) {\n var ageHeader = this.loader.getResponseHeader('age');\n result = ageHeader ? parseFloat(ageHeader) : null;\n }\n return result;\n };\n _proto.getResponseHeader = function getResponseHeader(name) {\n if (this.loader && new RegExp(\"^\" + name + \":\\\\s*[\\\\d.]+\\\\s*$\", 'im').test(this.loader.getAllResponseHeaders())) {\n return this.loader.getResponseHeader(name);\n }\n return null;\n };\n return XhrLoader;\n }();\n\n function fetchSupported() {\n if (\n // @ts-ignore\n self.fetch && self.AbortController && self.ReadableStream && self.Request) {\n try {\n new self.ReadableStream({}); // eslint-disable-line no-new\n return true;\n } catch (e) {\n /* noop */\n }\n }\n return false;\n }\n var BYTERANGE = /(\\d+)-(\\d+)\\/(\\d+)/;\n var FetchLoader = /*#__PURE__*/function () {\n function FetchLoader(config /* HlsConfig */) {\n this.fetchSetup = void 0;\n this.requestTimeout = void 0;\n this.request = null;\n this.response = null;\n this.controller = void 0;\n this.context = null;\n this.config = null;\n this.callbacks = null;\n this.stats = void 0;\n this.loader = null;\n this.fetchSetup = config.fetchSetup || getRequest;\n this.controller = new self.AbortController();\n this.stats = new LoadStats();\n }\n var _proto = FetchLoader.prototype;\n _proto.destroy = function destroy() {\n this.loader = this.callbacks = this.context = this.config = this.request = null;\n this.abortInternal();\n this.response = null;\n // @ts-ignore\n this.fetchSetup = this.controller = this.stats = null;\n };\n _proto.abortInternal = function abortInternal() {\n if (this.controller && !this.stats.loading.end) {\n this.stats.aborted = true;\n this.controller.abort();\n }\n };\n _proto.abort = function abort() {\n var _this$callbacks;\n this.abortInternal();\n if ((_this$callbacks = this.callbacks) != null && _this$callbacks.onAbort) {\n this.callbacks.onAbort(this.stats, this.context, this.response);\n }\n };\n _proto.load = function load(context, config, callbacks) {\n var _this = this;\n var stats = this.stats;\n if (stats.loading.start) {\n throw new Error('Loader can only be used once.');\n }\n stats.loading.start = self.performance.now();\n var initParams = getRequestParameters(context, this.controller.signal);\n var onProgress = callbacks.onProgress;\n var isArrayBuffer = context.responseType === 'arraybuffer';\n var LENGTH = isArrayBuffer ? 'byteLength' : 'length';\n var _config$loadPolicy = config.loadPolicy,\n maxTimeToFirstByteMs = _config$loadPolicy.maxTimeToFirstByteMs,\n maxLoadTimeMs = _config$loadPolicy.maxLoadTimeMs;\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.request = this.fetchSetup(context, initParams);\n self.clearTimeout(this.requestTimeout);\n config.timeout = maxTimeToFirstByteMs && isFiniteNumber(maxTimeToFirstByteMs) ? maxTimeToFirstByteMs : maxLoadTimeMs;\n this.requestTimeout = self.setTimeout(function () {\n _this.abortInternal();\n callbacks.onTimeout(stats, context, _this.response);\n }, config.timeout);\n self.fetch(this.request).then(function (response) {\n _this.response = _this.loader = response;\n var first = Math.max(self.performance.now(), stats.loading.start);\n self.clearTimeout(_this.requestTimeout);\n config.timeout = maxLoadTimeMs;\n _this.requestTimeout = self.setTimeout(function () {\n _this.abortInternal();\n callbacks.onTimeout(stats, context, _this.response);\n }, maxLoadTimeMs - (first - stats.loading.start));\n if (!response.ok) {\n var status = response.status,\n statusText = response.statusText;\n throw new FetchError(statusText || 'fetch, bad network response', status, response);\n }\n stats.loading.first = first;\n stats.total = getContentLength(response.headers) || stats.total;\n if (onProgress && isFiniteNumber(config.highWaterMark)) {\n return _this.loadProgressively(response, stats, context, config.highWaterMark, onProgress);\n }\n if (isArrayBuffer) {\n return response.arrayBuffer();\n }\n if (context.responseType === 'json') {\n return response.json();\n }\n return response.text();\n }).then(function (responseData) {\n var response = _this.response;\n if (!response) {\n throw new Error('loader destroyed');\n }\n self.clearTimeout(_this.requestTimeout);\n stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n var total = responseData[LENGTH];\n if (total) {\n stats.loaded = stats.total = total;\n }\n var loaderResponse = {\n url: response.url,\n data: responseData,\n code: response.status\n };\n if (onProgress && !isFiniteNumber(config.highWaterMark)) {\n onProgress(stats, context, responseData, response);\n }\n callbacks.onSuccess(loaderResponse, stats, context, response);\n }).catch(function (error) {\n self.clearTimeout(_this.requestTimeout);\n if (stats.aborted) {\n return;\n }\n // CORS errors result in an undefined code. Set it to 0 here to align with XHR's behavior\n // when destroying, 'error' itself can be undefined\n var code = !error ? 0 : error.code || 0;\n var text = !error ? null : error.message;\n callbacks.onError({\n code: code,\n text: text\n }, context, error ? error.details : null, stats);\n });\n };\n _proto.getCacheAge = function getCacheAge() {\n var result = null;\n if (this.response) {\n var ageHeader = this.response.headers.get('age');\n result = ageHeader ? parseFloat(ageHeader) : null;\n }\n return result;\n };\n _proto.getResponseHeader = function getResponseHeader(name) {\n return this.response ? this.response.headers.get(name) : null;\n };\n _proto.loadProgressively = function loadProgressively(response, stats, context, highWaterMark, onProgress) {\n if (highWaterMark === void 0) {\n highWaterMark = 0;\n }\n var chunkCache = new ChunkCache();\n var reader = response.body.getReader();\n var pump = function pump() {\n return reader.read().then(function (data) {\n if (data.done) {\n if (chunkCache.dataLength) {\n onProgress(stats, context, chunkCache.flush(), response);\n }\n return Promise.resolve(new ArrayBuffer(0));\n }\n var chunk = data.value;\n var len = chunk.length;\n stats.loaded += len;\n if (len < highWaterMark || chunkCache.dataLength) {\n // The current chunk is too small to to be emitted or the cache already has data\n // Push it to the cache\n chunkCache.push(chunk);\n if (chunkCache.dataLength >= highWaterMark) {\n // flush in order to join the typed arrays\n onProgress(stats, context, chunkCache.flush(), response);\n }\n } else {\n // If there's nothing cached already, and the chache is large enough\n // just emit the progress event\n onProgress(stats, context, chunk, response);\n }\n return pump();\n }).catch(function () {\n /* aborted */\n return Promise.reject();\n });\n };\n return pump();\n };\n return FetchLoader;\n }();\n function getRequestParameters(context, signal) {\n var initParams = {\n method: 'GET',\n mode: 'cors',\n credentials: 'same-origin',\n signal: signal,\n headers: new self.Headers(_extends({}, context.headers))\n };\n if (context.rangeEnd) {\n initParams.headers.set('Range', 'bytes=' + context.rangeStart + '-' + String(context.rangeEnd - 1));\n }\n return initParams;\n }\n function getByteRangeLength(byteRangeHeader) {\n var result = BYTERANGE.exec(byteRangeHeader);\n if (result) {\n return parseInt(result[2]) - parseInt(result[1]) + 1;\n }\n }\n function getContentLength(headers) {\n var contentRange = headers.get('Content-Range');\n if (contentRange) {\n var byteRangeLength = getByteRangeLength(contentRange);\n if (isFiniteNumber(byteRangeLength)) {\n return byteRangeLength;\n }\n }\n var contentLength = headers.get('Content-Length');\n if (contentLength) {\n return parseInt(contentLength);\n }\n }\n function getRequest(context, initParams) {\n return new self.Request(context.url, initParams);\n }\n var FetchError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(FetchError, _Error);\n function FetchError(message, code, details) {\n var _this2;\n _this2 = _Error.call(this, message) || this;\n _this2.code = void 0;\n _this2.details = void 0;\n _this2.code = code;\n _this2.details = details;\n return _this2;\n }\n return FetchError;\n }( /*#__PURE__*/_wrapNativeSuper(Error));\n\n var WHITESPACE_CHAR = /\\s/;\n var Cues = {\n newCue: function newCue(track, startTime, endTime, captionScreen) {\n var result = [];\n var row;\n // the type data states this is VTTCue, but it can potentially be a TextTrackCue on old browsers\n var cue;\n var indenting;\n var indent;\n var text;\n var Cue = self.VTTCue || self.TextTrackCue;\n for (var r = 0; r < captionScreen.rows.length; r++) {\n row = captionScreen.rows[r];\n indenting = true;\n indent = 0;\n text = '';\n if (!row.isEmpty()) {\n var _track$cues;\n for (var c = 0; c < row.chars.length; c++) {\n if (WHITESPACE_CHAR.test(row.chars[c].uchar) && indenting) {\n indent++;\n } else {\n text += row.chars[c].uchar;\n indenting = false;\n }\n }\n // To be used for cleaning-up orphaned roll-up captions\n row.cueStartTime = startTime;\n\n // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE\n if (startTime === endTime) {\n endTime += 0.0001;\n }\n if (indent >= 16) {\n indent--;\n } else {\n indent++;\n }\n var cueText = fixLineBreaks(text.trim());\n var id = generateCueId(startTime, endTime, cueText);\n\n // If this cue already exists in the track do not push it\n if (!(track != null && (_track$cues = track.cues) != null && _track$cues.getCueById(id))) {\n cue = new Cue(startTime, endTime, cueText);\n cue.id = id;\n cue.line = r + 1;\n cue.align = 'left';\n // Clamp the position between 10 and 80 percent (CEA-608 PAC indent code)\n // https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-608\n // Firefox throws an exception and captions break with out of bounds 0-100 values\n cue.position = 10 + Math.min(80, Math.floor(indent * 8 / 32) * 10);\n result.push(cue);\n }\n }\n }\n if (track && result.length) {\n // Sort bottom cues in reverse order so that they render in line order when overlapping in Chrome\n result.sort(function (cueA, cueB) {\n if (cueA.line === 'auto' || cueB.line === 'auto') {\n return 0;\n }\n if (cueA.line > 8 && cueB.line > 8) {\n return cueB.line - cueA.line;\n }\n return cueA.line - cueB.line;\n });\n result.forEach(function (cue) {\n return addCueToTrack(track, cue);\n });\n }\n return result;\n }\n };\n\n /**\n * @deprecated use fragLoadPolicy.default\n */\n\n /**\n * @deprecated use manifestLoadPolicy.default and playlistLoadPolicy.default\n */\n\n var defaultLoadPolicy = {\n maxTimeToFirstByteMs: 8000,\n maxLoadTimeMs: 20000,\n timeoutRetry: null,\n errorRetry: null\n };\n\n /**\n * @ignore\n * If possible, keep hlsDefaultConfig shallow\n * It is cloned whenever a new Hls instance is created, by keeping the config\n * shallow the properties are cloned, and we don't end up manipulating the default\n */\n var hlsDefaultConfig = _objectSpread2(_objectSpread2({\n autoStartLoad: true,\n // used by stream-controller\n startPosition: -1,\n // used by stream-controller\n defaultAudioCodec: undefined,\n // used by stream-controller\n debug: false,\n // used by logger\n capLevelOnFPSDrop: false,\n // used by fps-controller\n capLevelToPlayerSize: false,\n // used by cap-level-controller\n ignoreDevicePixelRatio: false,\n // used by cap-level-controller\n preferManagedMediaSource: true,\n initialLiveManifestSize: 1,\n // used by stream-controller\n maxBufferLength: 30,\n // used by stream-controller\n backBufferLength: Infinity,\n // used by buffer-controller\n frontBufferFlushThreshold: Infinity,\n maxBufferSize: 60 * 1000 * 1000,\n // used by stream-controller\n maxBufferHole: 0.1,\n // used by stream-controller\n highBufferWatchdogPeriod: 2,\n // used by stream-controller\n nudgeOffset: 0.1,\n // used by stream-controller\n nudgeMaxRetry: 3,\n // used by stream-controller\n maxFragLookUpTolerance: 0.25,\n // used by stream-controller\n liveSyncDurationCount: 3,\n // used by latency-controller\n liveMaxLatencyDurationCount: Infinity,\n // used by latency-controller\n liveSyncDuration: undefined,\n // used by latency-controller\n liveMaxLatencyDuration: undefined,\n // used by latency-controller\n maxLiveSyncPlaybackRate: 1,\n // used by latency-controller\n liveDurationInfinity: false,\n // used by buffer-controller\n /**\n * @deprecated use backBufferLength\n */\n liveBackBufferLength: null,\n // used by buffer-controller\n maxMaxBufferLength: 600,\n // used by stream-controller\n enableWorker: true,\n // used by transmuxer\n workerPath: null,\n // used by transmuxer\n enableSoftwareAES: true,\n // used by decrypter\n startLevel: undefined,\n // used by level-controller\n startFragPrefetch: false,\n // used by stream-controller\n fpsDroppedMonitoringPeriod: 5000,\n // used by fps-controller\n fpsDroppedMonitoringThreshold: 0.2,\n // used by fps-controller\n appendErrorMaxRetry: 3,\n // used by buffer-controller\n loader: XhrLoader,\n // loader: FetchLoader,\n fLoader: undefined,\n // used by fragment-loader\n pLoader: undefined,\n // used by playlist-loader\n xhrSetup: undefined,\n // used by xhr-loader\n licenseXhrSetup: undefined,\n // used by eme-controller\n licenseResponseCallback: undefined,\n // used by eme-controller\n abrController: AbrController,\n bufferController: BufferController,\n capLevelController: CapLevelController,\n errorController: ErrorController,\n fpsController: FPSController,\n stretchShortVideoTrack: false,\n // used by mp4-remuxer\n maxAudioFramesDrift: 1,\n // used by mp4-remuxer\n forceKeyFrameOnDiscontinuity: true,\n // used by ts-demuxer\n abrEwmaFastLive: 3,\n // used by abr-controller\n abrEwmaSlowLive: 9,\n // used by abr-controller\n abrEwmaFastVoD: 3,\n // used by abr-controller\n abrEwmaSlowVoD: 9,\n // used by abr-controller\n abrEwmaDefaultEstimate: 5e5,\n // 500 kbps // used by abr-controller\n abrEwmaDefaultEstimateMax: 5e6,\n // 5 mbps\n abrBandWidthFactor: 0.95,\n // used by abr-controller\n abrBandWidthUpFactor: 0.7,\n // used by abr-controller\n abrMaxWithRealBitrate: false,\n // used by abr-controller\n maxStarvationDelay: 4,\n // used by abr-controller\n maxLoadingDelay: 4,\n // used by abr-controller\n minAutoBitrate: 0,\n // used by hls\n emeEnabled: false,\n // used by eme-controller\n widevineLicenseUrl: undefined,\n // used by eme-controller\n drmSystems: {},\n // used by eme-controller\n drmSystemOptions: {},\n // used by eme-controller\n requestMediaKeySystemAccessFunc: requestMediaKeySystemAccess ,\n // used by eme-controller\n testBandwidth: true,\n progressive: false,\n lowLatencyMode: true,\n cmcd: undefined,\n enableDateRangeMetadataCues: true,\n enableEmsgMetadataCues: true,\n enableID3MetadataCues: true,\n useMediaCapabilities: true,\n certLoadPolicy: {\n default: defaultLoadPolicy\n },\n keyLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 8000,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 1,\n retryDelayMs: 1000,\n maxRetryDelayMs: 20000,\n backoff: 'linear'\n },\n errorRetry: {\n maxNumRetry: 8,\n retryDelayMs: 1000,\n maxRetryDelayMs: 20000,\n backoff: 'linear'\n }\n }\n },\n manifestLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: Infinity,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 2,\n retryDelayMs: 0,\n maxRetryDelayMs: 0\n },\n errorRetry: {\n maxNumRetry: 1,\n retryDelayMs: 1000,\n maxRetryDelayMs: 8000\n }\n }\n },\n playlistLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 10000,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 2,\n retryDelayMs: 0,\n maxRetryDelayMs: 0\n },\n errorRetry: {\n maxNumRetry: 2,\n retryDelayMs: 1000,\n maxRetryDelayMs: 8000\n }\n }\n },\n fragLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 10000,\n maxLoadTimeMs: 120000,\n timeoutRetry: {\n maxNumRetry: 4,\n retryDelayMs: 0,\n maxRetryDelayMs: 0\n },\n errorRetry: {\n maxNumRetry: 6,\n retryDelayMs: 1000,\n maxRetryDelayMs: 8000\n }\n }\n },\n steeringManifestLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 10000,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 2,\n retryDelayMs: 0,\n maxRetryDelayMs: 0\n },\n errorRetry: {\n maxNumRetry: 1,\n retryDelayMs: 1000,\n maxRetryDelayMs: 8000\n }\n } \n },\n // These default settings are deprecated in favor of the above policies\n // and are maintained for backwards compatibility\n manifestLoadingTimeOut: 10000,\n manifestLoadingMaxRetry: 1,\n manifestLoadingRetryDelay: 1000,\n manifestLoadingMaxRetryTimeout: 64000,\n levelLoadingTimeOut: 10000,\n levelLoadingMaxRetry: 4,\n levelLoadingRetryDelay: 1000,\n levelLoadingMaxRetryTimeout: 64000,\n fragLoadingTimeOut: 20000,\n fragLoadingMaxRetry: 6,\n fragLoadingRetryDelay: 1000,\n fragLoadingMaxRetryTimeout: 64000\n }, timelineConfig()), {}, {\n subtitleStreamController: SubtitleStreamController ,\n subtitleTrackController: SubtitleTrackController ,\n timelineController: TimelineController ,\n audioStreamController: AudioStreamController ,\n audioTrackController: AudioTrackController ,\n emeController: EMEController ,\n cmcdController: CMCDController ,\n contentSteeringController: ContentSteeringController \n });\n function timelineConfig() {\n return {\n cueHandler: Cues,\n // used by timeline-controller\n enableWebVTT: true,\n // used by timeline-controller\n enableIMSC1: true,\n // used by timeline-controller\n enableCEA708Captions: true,\n // used by timeline-controller\n captionsTextTrack1Label: 'English',\n // used by timeline-controller\n captionsTextTrack1LanguageCode: 'en',\n // used by timeline-controller\n captionsTextTrack2Label: 'Spanish',\n // used by timeline-controller\n captionsTextTrack2LanguageCode: 'es',\n // used by timeline-controller\n captionsTextTrack3Label: 'Unknown CC',\n // used by timeline-controller\n captionsTextTrack3LanguageCode: '',\n // used by timeline-controller\n captionsTextTrack4Label: 'Unknown CC',\n // used by timeline-controller\n captionsTextTrack4LanguageCode: '',\n // used by timeline-controller\n renderTextTracksNatively: true\n };\n }\n\n /**\n * @ignore\n */\n function mergeConfig(defaultConfig, userConfig) {\n if ((userConfig.liveSyncDurationCount || userConfig.liveMaxLatencyDurationCount) && (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)) {\n throw new Error(\"Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration\");\n }\n if (userConfig.liveMaxLatencyDurationCount !== undefined && (userConfig.liveSyncDurationCount === undefined || userConfig.liveMaxLatencyDurationCount <= userConfig.liveSyncDurationCount)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be greater than \"liveSyncDurationCount\"');\n }\n if (userConfig.liveMaxLatencyDuration !== undefined && (userConfig.liveSyncDuration === undefined || userConfig.liveMaxLatencyDuration <= userConfig.liveSyncDuration)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDuration\" must be greater than \"liveSyncDuration\"');\n }\n var defaultsCopy = deepCpy(defaultConfig);\n\n // Backwards compatibility with deprecated config values\n var deprecatedSettingTypes = ['manifest', 'level', 'frag'];\n var deprecatedSettings = ['TimeOut', 'MaxRetry', 'RetryDelay', 'MaxRetryTimeout'];\n deprecatedSettingTypes.forEach(function (type) {\n var policyName = (type === 'level' ? 'playlist' : type) + \"LoadPolicy\";\n var policyNotSet = userConfig[policyName] === undefined;\n var report = [];\n deprecatedSettings.forEach(function (setting) {\n var deprecatedSetting = type + \"Loading\" + setting;\n var value = userConfig[deprecatedSetting];\n if (value !== undefined && policyNotSet) {\n report.push(deprecatedSetting);\n var settings = defaultsCopy[policyName].default;\n userConfig[policyName] = {\n default: settings\n };\n switch (setting) {\n case 'TimeOut':\n settings.maxLoadTimeMs = value;\n settings.maxTimeToFirstByteMs = value;\n break;\n case 'MaxRetry':\n settings.errorRetry.maxNumRetry = value;\n settings.timeoutRetry.maxNumRetry = value;\n break;\n case 'RetryDelay':\n settings.errorRetry.retryDelayMs = value;\n settings.timeoutRetry.retryDelayMs = value;\n break;\n case 'MaxRetryTimeout':\n settings.errorRetry.maxRetryDelayMs = value;\n settings.timeoutRetry.maxRetryDelayMs = value;\n break;\n }\n }\n });\n if (report.length) {\n logger.warn(\"hls.js config: \\\"\" + report.join('\", \"') + \"\\\" setting(s) are deprecated, use \\\"\" + policyName + \"\\\": \" + JSON.stringify(userConfig[policyName]));\n }\n });\n return _objectSpread2(_objectSpread2({}, defaultsCopy), userConfig);\n }\n function deepCpy(obj) {\n if (obj && typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return obj.map(deepCpy);\n }\n return Object.keys(obj).reduce(function (result, key) {\n result[key] = deepCpy(obj[key]);\n return result;\n }, {});\n }\n return obj;\n }\n\n /**\n * @ignore\n */\n function enableStreamingMode(config) {\n var currentLoader = config.loader;\n if (currentLoader !== FetchLoader && currentLoader !== XhrLoader) {\n // If a developer has configured their own loader, respect that choice\n logger.log('[config]: Custom loader detected, cannot enable progressive streaming');\n config.progressive = false;\n } else {\n var canStreamProgressively = fetchSupported();\n if (canStreamProgressively) {\n config.loader = FetchLoader;\n config.progressive = true;\n config.enableSoftwareAES = true;\n logger.log('[config]: Progressive streaming enabled, using FetchLoader');\n }\n }\n }\n\n var chromeOrFirefox;\n var LevelController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(LevelController, _BasePlaylistControll);\n function LevelController(hls, contentSteeringController) {\n var _this;\n _this = _BasePlaylistControll.call(this, hls, '[level-controller]') || this;\n _this._levels = [];\n _this._firstLevel = -1;\n _this._maxAutoLevel = -1;\n _this._startLevel = void 0;\n _this.currentLevel = null;\n _this.currentLevelIndex = -1;\n _this.manualLevelIndex = -1;\n _this.steering = void 0;\n _this.onParsedComplete = void 0;\n _this.steering = contentSteeringController;\n _this._registerListeners();\n return _this;\n }\n var _proto = LevelController.prototype;\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(Events.ERROR, this.onError, this);\n };\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(Events.ERROR, this.onError, this);\n };\n _proto.destroy = function destroy() {\n this._unregisterListeners();\n this.steering = null;\n this.resetLevels();\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n _proto.stopLoad = function stopLoad() {\n var levels = this._levels;\n\n // clean up live level details to force reload them, and reset load errors\n levels.forEach(function (level) {\n level.loadError = 0;\n level.fragmentError = 0;\n });\n _BasePlaylistControll.prototype.stopLoad.call(this);\n };\n _proto.resetLevels = function resetLevels() {\n this._startLevel = undefined;\n this.manualLevelIndex = -1;\n this.currentLevelIndex = -1;\n this.currentLevel = null;\n this._levels = [];\n this._maxAutoLevel = -1;\n };\n _proto.onManifestLoading = function onManifestLoading(event, data) {\n this.resetLevels();\n };\n _proto.onManifestLoaded = function onManifestLoaded(event, data) {\n var preferManagedMediaSource = this.hls.config.preferManagedMediaSource;\n var levels = [];\n var redundantSet = {};\n var generatePathwaySet = {};\n var resolutionFound = false;\n var videoCodecFound = false;\n var audioCodecFound = false;\n data.levels.forEach(function (levelParsed) {\n var _audioCodec, _videoCodec;\n var attributes = levelParsed.attrs;\n\n // erase audio codec info if browser does not support mp4a.40.34.\n // demuxer will autodetect codec and fallback to mpeg/audio\n var audioCodec = levelParsed.audioCodec,\n videoCodec = levelParsed.videoCodec;\n if (((_audioCodec = audioCodec) == null ? void 0 : _audioCodec.indexOf('mp4a.40.34')) !== -1) {\n chromeOrFirefox || (chromeOrFirefox = /chrome|firefox/i.test(navigator.userAgent));\n if (chromeOrFirefox) {\n levelParsed.audioCodec = audioCodec = undefined;\n }\n }\n if (audioCodec) {\n levelParsed.audioCodec = audioCodec = getCodecCompatibleName(audioCodec, preferManagedMediaSource);\n }\n if (((_videoCodec = videoCodec) == null ? void 0 : _videoCodec.indexOf('avc1')) === 0) {\n videoCodec = levelParsed.videoCodec = convertAVC1ToAVCOTI(videoCodec);\n }\n\n // only keep levels with supported audio/video codecs\n var width = levelParsed.width,\n height = levelParsed.height,\n unknownCodecs = levelParsed.unknownCodecs;\n resolutionFound || (resolutionFound = !!(width && height));\n videoCodecFound || (videoCodecFound = !!videoCodec);\n audioCodecFound || (audioCodecFound = !!audioCodec);\n if (unknownCodecs != null && unknownCodecs.length || audioCodec && !areCodecsMediaSourceSupported(audioCodec, 'audio', preferManagedMediaSource) || videoCodec && !areCodecsMediaSourceSupported(videoCodec, 'video', preferManagedMediaSource)) {\n return;\n }\n var CODECS = attributes.CODECS,\n FRAMERATE = attributes['FRAME-RATE'],\n HDCP = attributes['HDCP-LEVEL'],\n PATHWAY = attributes['PATHWAY-ID'],\n RESOLUTION = attributes.RESOLUTION,\n VIDEO_RANGE = attributes['VIDEO-RANGE'];\n var contentSteeringPrefix = (PATHWAY || '.') + \"-\";\n var levelKey = \"\" + contentSteeringPrefix + levelParsed.bitrate + \"-\" + RESOLUTION + \"-\" + FRAMERATE + \"-\" + CODECS + \"-\" + VIDEO_RANGE + \"-\" + HDCP;\n if (!redundantSet[levelKey]) {\n var level = new Level(levelParsed);\n redundantSet[levelKey] = level;\n generatePathwaySet[levelKey] = 1;\n levels.push(level);\n } else if (redundantSet[levelKey].uri !== levelParsed.url && !levelParsed.attrs['PATHWAY-ID']) {\n // Assign Pathway IDs to Redundant Streams (default Pathways is \".\". Redundant Streams \"..\", \"...\", and so on.)\n // Content Steering controller to handles Pathway fallback on error\n var pathwayCount = generatePathwaySet[levelKey] += 1;\n levelParsed.attrs['PATHWAY-ID'] = new Array(pathwayCount + 1).join('.');\n var _level = new Level(levelParsed);\n redundantSet[levelKey] = _level;\n levels.push(_level);\n } else {\n redundantSet[levelKey].addGroupId('audio', attributes.AUDIO);\n redundantSet[levelKey].addGroupId('text', attributes.SUBTITLES);\n }\n });\n this.filterAndSortMediaOptions(levels, data, resolutionFound, videoCodecFound, audioCodecFound);\n };\n _proto.filterAndSortMediaOptions = function filterAndSortMediaOptions(filteredLevels, data, resolutionFound, videoCodecFound, audioCodecFound) {\n var _this2 = this;\n var audioTracks = [];\n var subtitleTracks = [];\n var levels = filteredLevels;\n\n // remove audio-only and invalid video-range levels if we also have levels with video codecs or RESOLUTION signalled\n if ((resolutionFound || videoCodecFound) && audioCodecFound) {\n levels = levels.filter(function (_ref) {\n var videoCodec = _ref.videoCodec,\n videoRange = _ref.videoRange,\n width = _ref.width,\n height = _ref.height;\n return (!!videoCodec || !!(width && height)) && isVideoRange(videoRange);\n });\n }\n if (levels.length === 0) {\n // Dispatch error after MANIFEST_LOADED is done propagating\n Promise.resolve().then(function () {\n if (_this2.hls) {\n if (data.levels.length) {\n _this2.warn(\"One or more CODECS in variant not supported: \" + JSON.stringify(data.levels[0].attrs));\n }\n var error = new Error('no level with compatible codecs found in manifest');\n _this2.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n url: data.url,\n error: error,\n reason: error.message\n });\n }\n });\n return;\n }\n if (data.audioTracks) {\n var preferManagedMediaSource = this.hls.config.preferManagedMediaSource;\n audioTracks = data.audioTracks.filter(function (track) {\n return !track.audioCodec || areCodecsMediaSourceSupported(track.audioCodec, 'audio', preferManagedMediaSource);\n });\n // Assign ids after filtering as array indices by group-id\n assignTrackIdsByGroup(audioTracks);\n }\n if (data.subtitles) {\n subtitleTracks = data.subtitles;\n assignTrackIdsByGroup(subtitleTracks);\n }\n // start bitrate is the first bitrate of the manifest\n var unsortedLevels = levels.slice(0);\n // sort levels from lowest to highest\n levels.sort(function (a, b) {\n if (a.attrs['HDCP-LEVEL'] !== b.attrs['HDCP-LEVEL']) {\n return (a.attrs['HDCP-LEVEL'] || '') > (b.attrs['HDCP-LEVEL'] || '') ? 1 : -1;\n }\n // sort on height before bitrate for cap-level-controller\n if (resolutionFound && a.height !== b.height) {\n return a.height - b.height;\n }\n if (a.frameRate !== b.frameRate) {\n return a.frameRate - b.frameRate;\n }\n if (a.videoRange !== b.videoRange) {\n return VideoRangeValues.indexOf(a.videoRange) - VideoRangeValues.indexOf(b.videoRange);\n }\n if (a.videoCodec !== b.videoCodec) {\n var valueA = videoCodecPreferenceValue(a.videoCodec);\n var valueB = videoCodecPreferenceValue(b.videoCodec);\n if (valueA !== valueB) {\n return valueB - valueA;\n }\n }\n if (a.uri === b.uri && a.codecSet !== b.codecSet) {\n var _valueA = codecsSetSelectionPreferenceValue(a.codecSet);\n var _valueB = codecsSetSelectionPreferenceValue(b.codecSet);\n if (_valueA !== _valueB) {\n return _valueB - _valueA;\n }\n }\n if (a.averageBitrate !== b.averageBitrate) {\n return a.averageBitrate - b.averageBitrate;\n }\n return 0;\n });\n var firstLevelInPlaylist = unsortedLevels[0];\n if (this.steering) {\n levels = this.steering.filterParsedLevels(levels);\n if (levels.length !== unsortedLevels.length) {\n for (var i = 0; i < unsortedLevels.length; i++) {\n if (unsortedLevels[i].pathwayId === levels[0].pathwayId) {\n firstLevelInPlaylist = unsortedLevels[i];\n break;\n }\n }\n }\n }\n this._levels = levels;\n\n // find index of first level in sorted levels\n for (var _i = 0; _i < levels.length; _i++) {\n if (levels[_i] === firstLevelInPlaylist) {\n var _this$hls$userConfig;\n this._firstLevel = _i;\n var firstLevelBitrate = firstLevelInPlaylist.bitrate;\n var bandwidthEstimate = this.hls.bandwidthEstimate;\n this.log(\"manifest loaded, \" + levels.length + \" level(s) found, first bitrate: \" + firstLevelBitrate);\n // Update default bwe to first variant bitrate as long it has not been configured or set\n if (((_this$hls$userConfig = this.hls.userConfig) == null ? void 0 : _this$hls$userConfig.abrEwmaDefaultEstimate) === undefined) {\n var startingBwEstimate = Math.min(firstLevelBitrate, this.hls.config.abrEwmaDefaultEstimateMax);\n if (startingBwEstimate > bandwidthEstimate && bandwidthEstimate === hlsDefaultConfig.abrEwmaDefaultEstimate) {\n this.hls.bandwidthEstimate = startingBwEstimate;\n }\n }\n break;\n }\n }\n\n // Audio is only alternate if manifest include a URI along with the audio group tag,\n // and this is not an audio-only stream where levels contain audio-only\n var audioOnly = audioCodecFound && !videoCodecFound;\n var edata = {\n levels: levels,\n audioTracks: audioTracks,\n subtitleTracks: subtitleTracks,\n sessionData: data.sessionData,\n sessionKeys: data.sessionKeys,\n firstLevel: this._firstLevel,\n stats: data.stats,\n audio: audioCodecFound,\n video: videoCodecFound,\n altAudio: !audioOnly && audioTracks.some(function (t) {\n return !!t.url;\n })\n };\n this.hls.trigger(Events.MANIFEST_PARSED, edata);\n\n // Initiate loading after all controllers have received MANIFEST_PARSED\n if (this.hls.config.autoStartLoad || this.hls.forceStartLoad) {\n this.hls.startLoad(this.hls.config.startPosition);\n }\n };\n _proto.onError = function onError(event, data) {\n if (data.fatal || !data.context) {\n return;\n }\n if (data.context.type === PlaylistContextType.LEVEL && data.context.level === this.level) {\n this.checkRetry(data);\n }\n }\n\n // reset errors on the successful load of a fragment\n ;\n _proto.onFragBuffered = function onFragBuffered(event, _ref2) {\n var frag = _ref2.frag;\n if (frag !== undefined && frag.type === PlaylistLevelType.MAIN) {\n var el = frag.elementaryStreams;\n if (!Object.keys(el).some(function (type) {\n return !!el[type];\n })) {\n return;\n }\n var level = this._levels[frag.level];\n if (level != null && level.loadError) {\n this.log(\"Resetting level error count of \" + level.loadError + \" on frag buffered\");\n level.loadError = 0;\n }\n }\n };\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var _data$deliveryDirecti2;\n var level = data.level,\n details = data.details;\n var curLevel = this._levels[level];\n if (!curLevel) {\n var _data$deliveryDirecti;\n this.warn(\"Invalid level index \" + level);\n if ((_data$deliveryDirecti = data.deliveryDirectives) != null && _data$deliveryDirecti.skip) {\n details.deltaUpdateFailed = true;\n }\n return;\n }\n\n // only process level loaded events matching with expected level\n if (level === this.currentLevelIndex) {\n // reset level load error counter on successful level loaded only if there is no issues with fragments\n if (curLevel.fragmentError === 0) {\n curLevel.loadError = 0;\n }\n this.playlistLoaded(level, data, curLevel.details);\n } else if ((_data$deliveryDirecti2 = data.deliveryDirectives) != null && _data$deliveryDirecti2.skip) {\n // received a delta playlist update that cannot be merged\n details.deltaUpdateFailed = true;\n }\n };\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n _BasePlaylistControll.prototype.loadPlaylist.call(this);\n var currentLevelIndex = this.currentLevelIndex;\n var currentLevel = this.currentLevel;\n if (currentLevel && this.shouldLoadPlaylist(currentLevel)) {\n var url = currentLevel.uri;\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n }\n var pathwayId = currentLevel.attrs['PATHWAY-ID'];\n this.log(\"Loading level index \" + currentLevelIndex + ((hlsUrlParameters == null ? void 0 : hlsUrlParameters.msn) !== undefined ? ' at sn ' + hlsUrlParameters.msn + ' part ' + hlsUrlParameters.part : '') + \" with\" + (pathwayId ? ' Pathway ' + pathwayId : '') + \" \" + url);\n\n // console.log('Current audio track group ID:', this.hls.audioTracks[this.hls.audioTrack].groupId);\n // console.log('New video quality level audio group id:', levelObject.attrs.AUDIO, level);\n this.clearTimer();\n this.hls.trigger(Events.LEVEL_LOADING, {\n url: url,\n level: currentLevelIndex,\n pathwayId: currentLevel.attrs['PATHWAY-ID'],\n id: 0,\n // Deprecated Level urlId\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n };\n _proto.removeLevel = function removeLevel(levelIndex) {\n var _this3 = this,\n _this$currentLevel;\n var levels = this._levels.filter(function (level, index) {\n if (index !== levelIndex) {\n return true;\n }\n if (_this3.steering) {\n _this3.steering.removeLevel(level);\n }\n if (level === _this3.currentLevel) {\n _this3.currentLevel = null;\n _this3.currentLevelIndex = -1;\n if (level.details) {\n level.details.fragments.forEach(function (f) {\n return f.level = -1;\n });\n }\n }\n return false;\n });\n reassignFragmentLevelIndexes(levels);\n this._levels = levels;\n if (this.currentLevelIndex > -1 && (_this$currentLevel = this.currentLevel) != null && _this$currentLevel.details) {\n this.currentLevelIndex = this.currentLevel.details.fragments[0].level;\n }\n this.hls.trigger(Events.LEVELS_UPDATED, {\n levels: levels\n });\n };\n _proto.onLevelsUpdated = function onLevelsUpdated(event, _ref3) {\n var levels = _ref3.levels;\n this._levels = levels;\n };\n _proto.checkMaxAutoUpdated = function checkMaxAutoUpdated() {\n var _this$hls = this.hls,\n autoLevelCapping = _this$hls.autoLevelCapping,\n maxAutoLevel = _this$hls.maxAutoLevel,\n maxHdcpLevel = _this$hls.maxHdcpLevel;\n if (this._maxAutoLevel !== maxAutoLevel) {\n this._maxAutoLevel = maxAutoLevel;\n this.hls.trigger(Events.MAX_AUTO_LEVEL_UPDATED, {\n autoLevelCapping: autoLevelCapping,\n levels: this.levels,\n maxAutoLevel: maxAutoLevel,\n minAutoLevel: this.hls.minAutoLevel,\n maxHdcpLevel: maxHdcpLevel\n });\n }\n };\n _createClass(LevelController, [{\n key: \"levels\",\n get: function get() {\n if (this._levels.length === 0) {\n return null;\n }\n return this._levels;\n }\n }, {\n key: \"level\",\n get: function get() {\n return this.currentLevelIndex;\n },\n set: function set(newLevel) {\n var levels = this._levels;\n if (levels.length === 0) {\n return;\n }\n // check if level idx is valid\n if (newLevel < 0 || newLevel >= levels.length) {\n // invalid level id given, trigger error\n var error = new Error('invalid level idx');\n var fatal = newLevel < 0;\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.OTHER_ERROR,\n details: ErrorDetails.LEVEL_SWITCH_ERROR,\n level: newLevel,\n fatal: fatal,\n error: error,\n reason: error.message\n });\n if (fatal) {\n return;\n }\n newLevel = Math.min(newLevel, levels.length - 1);\n }\n var lastLevelIndex = this.currentLevelIndex;\n var lastLevel = this.currentLevel;\n var lastPathwayId = lastLevel ? lastLevel.attrs['PATHWAY-ID'] : undefined;\n var level = levels[newLevel];\n var pathwayId = level.attrs['PATHWAY-ID'];\n this.currentLevelIndex = newLevel;\n this.currentLevel = level;\n if (lastLevelIndex === newLevel && level.details && lastLevel && lastPathwayId === pathwayId) {\n return;\n }\n this.log(\"Switching to level \" + newLevel + \" (\" + (level.height ? level.height + 'p ' : '') + (level.videoRange ? level.videoRange + ' ' : '') + (level.codecSet ? level.codecSet + ' ' : '') + \"@\" + level.bitrate + \")\" + (pathwayId ? ' with Pathway ' + pathwayId : '') + \" from level \" + lastLevelIndex + (lastPathwayId ? ' with Pathway ' + lastPathwayId : ''));\n var levelSwitchingData = {\n level: newLevel,\n attrs: level.attrs,\n details: level.details,\n bitrate: level.bitrate,\n averageBitrate: level.averageBitrate,\n maxBitrate: level.maxBitrate,\n realBitrate: level.realBitrate,\n width: level.width,\n height: level.height,\n codecSet: level.codecSet,\n audioCodec: level.audioCodec,\n videoCodec: level.videoCodec,\n audioGroups: level.audioGroups,\n subtitleGroups: level.subtitleGroups,\n loaded: level.loaded,\n loadError: level.loadError,\n fragmentError: level.fragmentError,\n name: level.name,\n id: level.id,\n uri: level.uri,\n url: level.url,\n urlId: 0,\n audioGroupIds: level.audioGroupIds,\n textGroupIds: level.textGroupIds\n };\n this.hls.trigger(Events.LEVEL_SWITCHING, levelSwitchingData);\n // check if we need to load playlist for this level\n var levelDetails = level.details;\n if (!levelDetails || levelDetails.live) {\n // level not retrieved yet, or live playlist we need to (re)load it\n var hlsUrlParameters = this.switchParams(level.uri, lastLevel == null ? void 0 : lastLevel.details, levelDetails);\n this.loadPlaylist(hlsUrlParameters);\n }\n }\n }, {\n key: \"manualLevel\",\n get: function get() {\n return this.manualLevelIndex;\n },\n set: function set(newLevel) {\n this.manualLevelIndex = newLevel;\n if (this._startLevel === undefined) {\n this._startLevel = newLevel;\n }\n if (newLevel !== -1) {\n this.level = newLevel;\n }\n }\n }, {\n key: \"firstLevel\",\n get: function get() {\n return this._firstLevel;\n },\n set: function set(newLevel) {\n this._firstLevel = newLevel;\n }\n }, {\n key: \"startLevel\",\n get: function get() {\n // Setting hls.startLevel (this._startLevel) overrides config.startLevel\n if (this._startLevel === undefined) {\n var configStartLevel = this.hls.config.startLevel;\n if (configStartLevel !== undefined) {\n return configStartLevel;\n }\n return this.hls.firstAutoLevel;\n }\n return this._startLevel;\n },\n set: function set(newLevel) {\n this._startLevel = newLevel;\n }\n }, {\n key: \"nextLoadLevel\",\n get: function get() {\n if (this.manualLevelIndex !== -1) {\n return this.manualLevelIndex;\n } else {\n return this.hls.nextAutoLevel;\n }\n },\n set: function set(nextLevel) {\n this.level = nextLevel;\n if (this.manualLevelIndex === -1) {\n this.hls.nextAutoLevel = nextLevel;\n }\n }\n }]);\n return LevelController;\n }(BasePlaylistController);\n function assignTrackIdsByGroup(tracks) {\n var groups = {};\n tracks.forEach(function (track) {\n var groupId = track.groupId || '';\n track.id = groups[groupId] = groups[groupId] || 0;\n groups[groupId]++;\n });\n }\n\n var KeyLoader = /*#__PURE__*/function () {\n function KeyLoader(config) {\n this.config = void 0;\n this.keyUriToKeyInfo = {};\n this.emeController = null;\n this.config = config;\n }\n var _proto = KeyLoader.prototype;\n _proto.abort = function abort(type) {\n for (var uri in this.keyUriToKeyInfo) {\n var loader = this.keyUriToKeyInfo[uri].loader;\n if (loader) {\n var _loader$context;\n if (type && type !== ((_loader$context = loader.context) == null ? void 0 : _loader$context.frag.type)) {\n return;\n }\n loader.abort();\n }\n }\n };\n _proto.detach = function detach() {\n for (var uri in this.keyUriToKeyInfo) {\n var keyInfo = this.keyUriToKeyInfo[uri];\n // Remove cached EME keys on detach\n if (keyInfo.mediaKeySessionContext || keyInfo.decryptdata.isCommonEncryption) {\n delete this.keyUriToKeyInfo[uri];\n }\n }\n };\n _proto.destroy = function destroy() {\n this.detach();\n for (var uri in this.keyUriToKeyInfo) {\n var loader = this.keyUriToKeyInfo[uri].loader;\n if (loader) {\n loader.destroy();\n }\n }\n this.keyUriToKeyInfo = {};\n };\n _proto.createKeyLoadError = function createKeyLoadError(frag, details, error, networkDetails, response) {\n if (details === void 0) {\n details = ErrorDetails.KEY_LOAD_ERROR;\n }\n return new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: details,\n fatal: false,\n frag: frag,\n response: response,\n error: error,\n networkDetails: networkDetails\n });\n };\n _proto.loadClear = function loadClear(loadingFrag, encryptedFragments) {\n var _this = this;\n if (this.emeController && this.config.emeEnabled) {\n // access key-system with nearest key on start (loaidng frag is unencrypted)\n var sn = loadingFrag.sn,\n cc = loadingFrag.cc;\n var _loop = function _loop() {\n var frag = encryptedFragments[i];\n if (cc <= frag.cc && (sn === 'initSegment' || frag.sn === 'initSegment' || sn < frag.sn)) {\n _this.emeController.selectKeySystemFormat(frag).then(function (keySystemFormat) {\n frag.setKeyFormat(keySystemFormat);\n });\n return 1; // break\n }\n };\n for (var i = 0; i < encryptedFragments.length; i++) {\n if (_loop()) break;\n }\n }\n };\n _proto.load = function load(frag) {\n var _this2 = this;\n if (!frag.decryptdata && frag.encrypted && this.emeController) {\n // Multiple keys, but none selected, resolve in eme-controller\n return this.emeController.selectKeySystemFormat(frag).then(function (keySystemFormat) {\n return _this2.loadInternal(frag, keySystemFormat);\n });\n }\n return this.loadInternal(frag);\n };\n _proto.loadInternal = function loadInternal(frag, keySystemFormat) {\n var _keyInfo, _keyInfo2;\n if (keySystemFormat) {\n frag.setKeyFormat(keySystemFormat);\n }\n var decryptdata = frag.decryptdata;\n if (!decryptdata) {\n var error = new Error(keySystemFormat ? \"Expected frag.decryptdata to be defined after setting format \" + keySystemFormat : 'Missing decryption data on fragment in onKeyLoading');\n return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, error));\n }\n var uri = decryptdata.uri;\n if (!uri) {\n return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(\"Invalid key URI: \\\"\" + uri + \"\\\"\")));\n }\n var keyInfo = this.keyUriToKeyInfo[uri];\n if ((_keyInfo = keyInfo) != null && _keyInfo.decryptdata.key) {\n decryptdata.key = keyInfo.decryptdata.key;\n return Promise.resolve({\n frag: frag,\n keyInfo: keyInfo\n });\n }\n // Return key load promise as long as it does not have a mediakey session with an unusable key status\n if ((_keyInfo2 = keyInfo) != null && _keyInfo2.keyLoadPromise) {\n var _keyInfo$mediaKeySess;\n switch ((_keyInfo$mediaKeySess = keyInfo.mediaKeySessionContext) == null ? void 0 : _keyInfo$mediaKeySess.keyStatus) {\n case undefined:\n case 'status-pending':\n case 'usable':\n case 'usable-in-future':\n return keyInfo.keyLoadPromise.then(function (keyLoadedData) {\n // Return the correct fragment with updated decryptdata key and loaded keyInfo\n decryptdata.key = keyLoadedData.keyInfo.decryptdata.key;\n return {\n frag: frag,\n keyInfo: keyInfo\n };\n });\n }\n // If we have a key session and status and it is not pending or usable, continue\n // This will go back to the eme-controller for expired keys to get a new keyLoadPromise\n }\n\n // Load the key or return the loading promise\n keyInfo = this.keyUriToKeyInfo[uri] = {\n decryptdata: decryptdata,\n keyLoadPromise: null,\n loader: null,\n mediaKeySessionContext: null\n };\n switch (decryptdata.method) {\n case 'ISO-23001-7':\n case 'SAMPLE-AES':\n case 'SAMPLE-AES-CENC':\n case 'SAMPLE-AES-CTR':\n if (decryptdata.keyFormat === 'identity') {\n // loadKeyHTTP handles http(s) and data URLs\n return this.loadKeyHTTP(keyInfo, frag);\n }\n return this.loadKeyEME(keyInfo, frag);\n case 'AES-128':\n return this.loadKeyHTTP(keyInfo, frag);\n default:\n return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(\"Key supplied with unsupported METHOD: \\\"\" + decryptdata.method + \"\\\"\")));\n }\n };\n _proto.loadKeyEME = function loadKeyEME(keyInfo, frag) {\n var keyLoadedData = {\n frag: frag,\n keyInfo: keyInfo\n };\n if (this.emeController && this.config.emeEnabled) {\n var keySessionContextPromise = this.emeController.loadKey(keyLoadedData);\n if (keySessionContextPromise) {\n return (keyInfo.keyLoadPromise = keySessionContextPromise.then(function (keySessionContext) {\n keyInfo.mediaKeySessionContext = keySessionContext;\n return keyLoadedData;\n })).catch(function (error) {\n // Remove promise for license renewal or retry\n keyInfo.keyLoadPromise = null;\n throw error;\n });\n }\n }\n return Promise.resolve(keyLoadedData);\n };\n _proto.loadKeyHTTP = function loadKeyHTTP(keyInfo, frag) {\n var _this3 = this;\n var config = this.config;\n var Loader = config.loader;\n var keyLoader = new Loader(config);\n frag.keyLoader = keyInfo.loader = keyLoader;\n return keyInfo.keyLoadPromise = new Promise(function (resolve, reject) {\n var loaderContext = {\n keyInfo: keyInfo,\n frag: frag,\n responseType: 'arraybuffer',\n url: keyInfo.decryptdata.uri\n };\n\n // maxRetry is 0 so that instead of retrying the same key on the same variant multiple times,\n // key-loader will trigger an error and rely on stream-controller to handle retry logic.\n // this will also align retry logic with fragment-loader\n var loadPolicy = config.keyLoadPolicy.default;\n var loaderConfig = {\n loadPolicy: loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: 0\n };\n var loaderCallbacks = {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n var frag = context.frag,\n keyInfo = context.keyInfo,\n uri = context.url;\n if (!frag.decryptdata || keyInfo !== _this3.keyUriToKeyInfo[uri]) {\n return reject(_this3.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error('after key load, decryptdata unset or changed'), networkDetails));\n }\n keyInfo.decryptdata.key = frag.decryptdata.key = new Uint8Array(response.data);\n\n // detach fragment key loader on load success\n frag.keyLoader = null;\n keyInfo.loader = null;\n resolve({\n frag: frag,\n keyInfo: keyInfo\n });\n },\n onError: function onError(response, context, networkDetails, stats) {\n _this3.resetLoader(context);\n reject(_this3.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(\"HTTP Error \" + response.code + \" loading key \" + response.text), networkDetails, _objectSpread2({\n url: loaderContext.url,\n data: undefined\n }, response)));\n },\n onTimeout: function onTimeout(stats, context, networkDetails) {\n _this3.resetLoader(context);\n reject(_this3.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_TIMEOUT, new Error('key loading timed out'), networkDetails));\n },\n onAbort: function onAbort(stats, context, networkDetails) {\n _this3.resetLoader(context);\n reject(_this3.createKeyLoadError(frag, ErrorDetails.INTERNAL_ABORTED, new Error('key loading aborted'), networkDetails));\n }\n };\n keyLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n });\n };\n _proto.resetLoader = function resetLoader(context) {\n var frag = context.frag,\n keyInfo = context.keyInfo,\n uri = context.url;\n var loader = keyInfo.loader;\n if (frag.keyLoader === loader) {\n frag.keyLoader = null;\n keyInfo.loader = null;\n }\n delete this.keyUriToKeyInfo[uri];\n if (loader) {\n loader.destroy();\n }\n };\n return KeyLoader;\n }();\n\n function getSourceBuffer() {\n return self.SourceBuffer || self.WebKitSourceBuffer;\n }\n function isMSESupported() {\n var mediaSource = getMediaSource();\n if (!mediaSource) {\n return false;\n }\n\n // if SourceBuffer is exposed ensure its API is valid\n // Older browsers do not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible\n var sourceBuffer = getSourceBuffer();\n return !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function';\n }\n function isSupported() {\n if (!isMSESupported()) {\n return false;\n }\n var mediaSource = getMediaSource();\n return typeof (mediaSource == null ? void 0 : mediaSource.isTypeSupported) === 'function' && (['avc1.42E01E,mp4a.40.2', 'av01.0.01M.08', 'vp09.00.50.08'].some(function (codecsForVideoContainer) {\n return mediaSource.isTypeSupported(mimeTypeForCodec(codecsForVideoContainer, 'video'));\n }) || ['mp4a.40.2', 'fLaC'].some(function (codecForAudioContainer) {\n return mediaSource.isTypeSupported(mimeTypeForCodec(codecForAudioContainer, 'audio'));\n }));\n }\n function changeTypeSupported() {\n var _sourceBuffer$prototy;\n var sourceBuffer = getSourceBuffer();\n return typeof (sourceBuffer == null ? void 0 : (_sourceBuffer$prototy = sourceBuffer.prototype) == null ? void 0 : _sourceBuffer$prototy.changeType) === 'function';\n }\n\n var STALL_MINIMUM_DURATION_MS = 250;\n var MAX_START_GAP_JUMP = 2.0;\n var SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1;\n var SKIP_BUFFER_RANGE_START = 0.05;\n var GapController = /*#__PURE__*/function () {\n function GapController(config, media, fragmentTracker, hls) {\n this.config = void 0;\n this.media = null;\n this.fragmentTracker = void 0;\n this.hls = void 0;\n this.nudgeRetry = 0;\n this.stallReported = false;\n this.stalled = null;\n this.moved = false;\n this.seeking = false;\n this.config = config;\n this.media = media;\n this.fragmentTracker = fragmentTracker;\n this.hls = hls;\n }\n var _proto = GapController.prototype;\n _proto.destroy = function destroy() {\n this.media = null;\n // @ts-ignore\n this.hls = this.fragmentTracker = null;\n }\n\n /**\n * Checks if the playhead is stuck within a gap, and if so, attempts to free it.\n * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range).\n *\n * @param lastCurrentTime - Previously read playhead position\n */;\n _proto.poll = function poll(lastCurrentTime, activeFrag) {\n var config = this.config,\n media = this.media,\n stalled = this.stalled;\n if (media === null) {\n return;\n }\n var currentTime = media.currentTime,\n seeking = media.seeking;\n var seeked = this.seeking && !seeking;\n var beginSeek = !this.seeking && seeking;\n this.seeking = seeking;\n\n // The playhead is moving, no-op\n if (currentTime !== lastCurrentTime) {\n this.moved = true;\n if (!seeking) {\n this.nudgeRetry = 0;\n }\n if (stalled !== null) {\n // The playhead is now moving, but was previously stalled\n if (this.stallReported) {\n var _stalledDuration = self.performance.now() - stalled;\n logger.warn(\"playback not stuck anymore @\" + currentTime + \", after \" + Math.round(_stalledDuration) + \"ms\");\n this.stallReported = false;\n }\n this.stalled = null;\n }\n return;\n }\n\n // Clear stalled state when beginning or finishing seeking so that we don't report stalls coming out of a seek\n if (beginSeek || seeked) {\n this.stalled = null;\n return;\n }\n\n // The playhead should not be moving\n if (media.paused && !seeking || media.ended || media.playbackRate === 0 || !BufferHelper.getBuffered(media).length) {\n this.nudgeRetry = 0;\n return;\n }\n var bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n var nextStart = bufferInfo.nextStart || 0;\n if (seeking) {\n // Waiting for seeking in a buffered range to complete\n var hasEnoughBuffer = bufferInfo.len > MAX_START_GAP_JUMP;\n // Next buffered range is too far ahead to jump to while still seeking\n var noBufferGap = !nextStart || activeFrag && activeFrag.start <= currentTime || nextStart - currentTime > MAX_START_GAP_JUMP && !this.fragmentTracker.getPartialFragment(currentTime);\n if (hasEnoughBuffer || noBufferGap) {\n return;\n }\n // Reset moved state when seeking to a point in or before a gap\n this.moved = false;\n }\n\n // Skip start gaps if we haven't played, but the last poll detected the start of a stall\n // The addition poll gives the browser a chance to jump the gap for us\n if (!this.moved && this.stalled !== null) {\n var _level$details;\n // There is no playable buffer (seeked, waiting for buffer)\n var isBuffered = bufferInfo.len > 0;\n if (!isBuffered && !nextStart) {\n return;\n }\n // Jump start gaps within jump threshold\n var startJump = Math.max(nextStart, bufferInfo.start || 0) - currentTime;\n\n // When joining a live stream with audio tracks, account for live playlist window sliding by allowing\n // a larger jump over start gaps caused by the audio-stream-controller buffering a start fragment\n // that begins over 1 target duration after the video start position.\n var level = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null;\n var isLive = level == null ? void 0 : (_level$details = level.details) == null ? void 0 : _level$details.live;\n var maxStartGapJump = isLive ? level.details.targetduration * 2 : MAX_START_GAP_JUMP;\n var partialOrGap = this.fragmentTracker.getPartialFragment(currentTime);\n if (startJump > 0 && (startJump <= maxStartGapJump || partialOrGap)) {\n if (!media.paused) {\n this._trySkipBufferHole(partialOrGap);\n }\n return;\n }\n }\n\n // Start tracking stall time\n var tnow = self.performance.now();\n if (stalled === null) {\n this.stalled = tnow;\n return;\n }\n var stalledDuration = tnow - stalled;\n if (!seeking && stalledDuration >= STALL_MINIMUM_DURATION_MS) {\n // Report stalling after trying to fix\n this._reportStall(bufferInfo);\n if (!this.media) {\n return;\n }\n }\n var bufferedWithHoles = BufferHelper.bufferInfo(media, currentTime, config.maxBufferHole);\n this._tryFixBufferStall(bufferedWithHoles, stalledDuration);\n }\n\n /**\n * Detects and attempts to fix known buffer stalling issues.\n * @param bufferInfo - The properties of the current buffer.\n * @param stalledDurationMs - The amount of time Hls.js has been stalling for.\n * @private\n */;\n _proto._tryFixBufferStall = function _tryFixBufferStall(bufferInfo, stalledDurationMs) {\n var config = this.config,\n fragmentTracker = this.fragmentTracker,\n media = this.media;\n if (media === null) {\n return;\n }\n var currentTime = media.currentTime;\n var partial = fragmentTracker.getPartialFragment(currentTime);\n if (partial) {\n // Try to skip over the buffer hole caused by a partial fragment\n // This method isn't limited by the size of the gap between buffered ranges\n var targetTime = this._trySkipBufferHole(partial);\n // we return here in this case, meaning\n // the branch below only executes when we haven't seeked to a new position\n if (targetTime || !this.media) {\n return;\n }\n }\n\n // if we haven't had to skip over a buffer hole of a partial fragment\n // we may just have to \"nudge\" the playlist as the browser decoding/rendering engine\n // needs to cross some sort of threshold covering all source-buffers content\n // to start playing properly.\n if ((bufferInfo.len > config.maxBufferHole || bufferInfo.nextStart && bufferInfo.nextStart - currentTime < config.maxBufferHole) && stalledDurationMs > config.highBufferWatchdogPeriod * 1000) {\n logger.warn('Trying to nudge playhead over buffer-hole');\n // Try to nudge currentTime over a buffer hole if we've been stalling for the configured amount of seconds\n // We only try to jump the hole if it's under the configured size\n // Reset stalled so to rearm watchdog timer\n this.stalled = null;\n this._tryNudgeBuffer();\n }\n }\n\n /**\n * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period.\n * @param bufferLen - The playhead distance from the end of the current buffer segment.\n * @private\n */;\n _proto._reportStall = function _reportStall(bufferInfo) {\n var hls = this.hls,\n media = this.media,\n stallReported = this.stallReported;\n if (!stallReported && media) {\n // Report stalled error once\n this.stallReported = true;\n var error = new Error(\"Playback stalling at @\" + media.currentTime + \" due to low buffer (\" + JSON.stringify(bufferInfo) + \")\");\n logger.warn(error.message);\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_STALLED_ERROR,\n fatal: false,\n error: error,\n buffer: bufferInfo.len\n });\n }\n }\n\n /**\n * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments\n * @param partial - The partial fragment found at the current time (where playback is stalling).\n * @private\n */;\n _proto._trySkipBufferHole = function _trySkipBufferHole(partial) {\n var config = this.config,\n hls = this.hls,\n media = this.media;\n if (media === null) {\n return 0;\n }\n\n // Check if currentTime is between unbuffered regions of partial fragments\n var currentTime = media.currentTime;\n var bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n var startTime = currentTime < bufferInfo.start ? bufferInfo.start : bufferInfo.nextStart;\n if (startTime) {\n var bufferStarved = bufferInfo.len <= config.maxBufferHole;\n var waiting = bufferInfo.len > 0 && bufferInfo.len < 1 && media.readyState < 3;\n var gapLength = startTime - currentTime;\n if (gapLength > 0 && (bufferStarved || waiting)) {\n // Only allow large gaps to be skipped if it is a start gap, or all fragments in skip range are partial\n if (gapLength > config.maxBufferHole) {\n var fragmentTracker = this.fragmentTracker;\n var startGap = false;\n if (currentTime === 0) {\n var startFrag = fragmentTracker.getAppendedFrag(0, PlaylistLevelType.MAIN);\n if (startFrag && startTime < startFrag.end) {\n startGap = true;\n }\n }\n if (!startGap) {\n var startProvisioned = partial || fragmentTracker.getAppendedFrag(currentTime, PlaylistLevelType.MAIN);\n if (startProvisioned) {\n var moreToLoad = false;\n var pos = startProvisioned.end;\n while (pos < startTime) {\n var provisioned = fragmentTracker.getPartialFragment(pos);\n if (provisioned) {\n pos += provisioned.duration;\n } else {\n moreToLoad = true;\n break;\n }\n }\n if (moreToLoad) {\n return 0;\n }\n }\n }\n }\n var targetTime = Math.max(startTime + SKIP_BUFFER_RANGE_START, currentTime + SKIP_BUFFER_HOLE_STEP_SECONDS);\n logger.warn(\"skipping hole, adjusting currentTime from \" + currentTime + \" to \" + targetTime);\n this.moved = true;\n this.stalled = null;\n media.currentTime = targetTime;\n if (partial && !partial.gap) {\n var error = new Error(\"fragment loaded with buffer holes, seeking from \" + currentTime + \" to \" + targetTime);\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_SEEK_OVER_HOLE,\n fatal: false,\n error: error,\n reason: error.message,\n frag: partial\n });\n }\n return targetTime;\n }\n }\n return 0;\n }\n\n /**\n * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount.\n * @private\n */;\n _proto._tryNudgeBuffer = function _tryNudgeBuffer() {\n var config = this.config,\n hls = this.hls,\n media = this.media,\n nudgeRetry = this.nudgeRetry;\n if (media === null) {\n return;\n }\n var currentTime = media.currentTime;\n this.nudgeRetry++;\n if (nudgeRetry < config.nudgeMaxRetry) {\n var targetTime = currentTime + (nudgeRetry + 1) * config.nudgeOffset;\n // playback stalled in buffered area ... let's nudge currentTime to try to overcome this\n var error = new Error(\"Nudging 'currentTime' from \" + currentTime + \" to \" + targetTime);\n logger.warn(error.message);\n media.currentTime = targetTime;\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_NUDGE_ON_STALL,\n error: error,\n fatal: false\n });\n } else {\n var _error = new Error(\"Playhead still not moving while enough data buffered @\" + currentTime + \" after \" + config.nudgeMaxRetry + \" nudges\");\n logger.error(_error.message);\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_STALLED_ERROR,\n error: _error,\n fatal: true\n });\n }\n };\n return GapController;\n }();\n\n var TICK_INTERVAL = 100; // how often to tick in ms\n var StreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(StreamController, _BaseStreamController);\n function StreamController(hls, fragmentTracker, keyLoader) {\n var _this;\n _this = _BaseStreamController.call(this, hls, fragmentTracker, keyLoader, '[stream-controller]', PlaylistLevelType.MAIN) || this;\n _this.audioCodecSwap = false;\n _this.gapController = null;\n _this.level = -1;\n _this._forceStartLoad = false;\n _this.altAudio = false;\n _this.audioOnly = false;\n _this.fragPlaying = null;\n _this.onvplaying = null;\n _this.onvseeked = null;\n _this.fragLastKbps = 0;\n _this.couldBacktrack = false;\n _this.backtrackFragment = null;\n _this.audioCodecSwitch = false;\n _this.videoBuffer = null;\n _this._registerListeners();\n return _this;\n }\n var _proto = StreamController.prototype;\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n hls.on(Events.ERROR, this.onError, this);\n hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.on(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n };\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n hls.off(Events.ERROR, this.onError, this);\n hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.off(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n };\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n _BaseStreamController.prototype.onHandlerDestroying.call(this);\n };\n _proto.startLoad = function startLoad(startPosition) {\n if (this.levels) {\n var lastCurrentTime = this.lastCurrentTime,\n hls = this.hls;\n this.stopLoad();\n this.setInterval(TICK_INTERVAL);\n this.level = -1;\n if (!this.startFragRequested) {\n // determine load level\n var startLevel = hls.startLevel;\n if (startLevel === -1) {\n if (hls.config.testBandwidth && this.levels.length > 1) {\n // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level\n startLevel = 0;\n this.bitrateTest = true;\n } else {\n startLevel = hls.firstAutoLevel;\n }\n }\n // set new level to playlist loader : this will trigger start level load\n // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded\n hls.nextLoadLevel = startLevel;\n this.level = hls.loadLevel;\n this.loadedmetadata = false;\n }\n // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime\n if (lastCurrentTime > 0 && startPosition === -1) {\n this.log(\"Override startPosition with lastCurrentTime @\" + lastCurrentTime.toFixed(3));\n startPosition = lastCurrentTime;\n }\n this.state = State.IDLE;\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n } else {\n this._forceStartLoad = true;\n this.state = State.STOPPED;\n }\n };\n _proto.stopLoad = function stopLoad() {\n this._forceStartLoad = false;\n _BaseStreamController.prototype.stopLoad.call(this);\n };\n _proto.doTick = function doTick() {\n switch (this.state) {\n case State.WAITING_LEVEL:\n {\n var levels = this.levels,\n level = this.level;\n var currentLevel = levels == null ? void 0 : levels[level];\n var details = currentLevel == null ? void 0 : currentLevel.details;\n if (details && (!details.live || this.levelLastLoaded === currentLevel)) {\n if (this.waitForCdnTuneIn(details)) {\n break;\n }\n this.state = State.IDLE;\n break;\n } else if (this.hls.nextLoadLevel !== this.level) {\n this.state = State.IDLE;\n break;\n }\n break;\n }\n case State.FRAG_LOADING_WAITING_RETRY:\n {\n var _this$media;\n var now = self.performance.now();\n var retryDate = this.retryDate;\n // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n if (!retryDate || now >= retryDate || (_this$media = this.media) != null && _this$media.seeking) {\n var _levels = this.levels,\n _level = this.level;\n var _currentLevel = _levels == null ? void 0 : _levels[_level];\n this.resetStartWhenNotLoaded(_currentLevel || null);\n this.state = State.IDLE;\n }\n }\n break;\n }\n if (this.state === State.IDLE) {\n this.doTickIdle();\n }\n this.onTickEnd();\n };\n _proto.onTickEnd = function onTickEnd() {\n _BaseStreamController.prototype.onTickEnd.call(this);\n this.checkBuffer();\n this.checkFragmentChanged();\n };\n _proto.doTickIdle = function doTickIdle() {\n var hls = this.hls,\n levelLastLoaded = this.levelLastLoaded,\n levels = this.levels,\n media = this.media;\n\n // if start level not parsed yet OR\n // if video not attached AND start fragment already requested OR start frag prefetch not enabled\n // exit loop, as we either need more info (level not parsed) or we need media to be attached to load new fragment\n if (levelLastLoaded === null || !media && (this.startFragRequested || !hls.config.startFragPrefetch)) {\n return;\n }\n\n // If the \"main\" level is audio-only but we are loading an alternate track in the same group, do not load anything\n if (this.altAudio && this.audioOnly) {\n return;\n }\n var level = hls.nextLoadLevel;\n if (!(levels != null && levels[level])) {\n return;\n }\n var levelInfo = levels[level];\n\n // if buffer length is less than maxBufLen try to load a new fragment\n\n var bufferInfo = this.getMainFwdBufferInfo();\n if (bufferInfo === null) {\n return;\n }\n var lastDetails = this.getLevelDetails();\n if (lastDetails && this._streamEnded(bufferInfo, lastDetails)) {\n var data = {};\n if (this.altAudio) {\n data.type = 'video';\n }\n this.hls.trigger(Events.BUFFER_EOS, data);\n this.state = State.ENDED;\n return;\n }\n\n // set next load level : this will trigger a playlist load if needed\n if (hls.loadLevel !== level && hls.manualLevel === -1) {\n this.log(\"Adapting to level \" + level + \" from level \" + this.level);\n }\n this.level = hls.nextLoadLevel = level;\n var levelDetails = levelInfo.details;\n // if level info not retrieved yet, switch state and wait for level retrieval\n // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load\n // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)\n if (!levelDetails || this.state === State.WAITING_LEVEL || levelDetails.live && this.levelLastLoaded !== levelInfo) {\n this.level = level;\n this.state = State.WAITING_LEVEL;\n return;\n }\n var bufferLen = bufferInfo.len;\n\n // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s\n var maxBufLen = this.getMaxBufferLength(levelInfo.maxBitrate);\n\n // Stay idle if we are still with buffer margins\n if (bufferLen >= maxBufLen) {\n return;\n }\n if (this.backtrackFragment && this.backtrackFragment.start > bufferInfo.end) {\n this.backtrackFragment = null;\n }\n var targetBufferTime = this.backtrackFragment ? this.backtrackFragment.start : bufferInfo.end;\n var frag = this.getNextFragment(targetBufferTime, levelDetails);\n // Avoid backtracking by loading an earlier segment in streams with segments that do not start with a key frame (flagged by `couldBacktrack`)\n if (this.couldBacktrack && !this.fragPrevious && frag && frag.sn !== 'initSegment' && this.fragmentTracker.getState(frag) !== FragmentState.OK) {\n var _this$backtrackFragme;\n var backtrackSn = ((_this$backtrackFragme = this.backtrackFragment) != null ? _this$backtrackFragme : frag).sn;\n var fragIdx = backtrackSn - levelDetails.startSN;\n var backtrackFrag = levelDetails.fragments[fragIdx - 1];\n if (backtrackFrag && frag.cc === backtrackFrag.cc) {\n frag = backtrackFrag;\n this.fragmentTracker.removeFragment(backtrackFrag);\n }\n } else if (this.backtrackFragment && bufferInfo.len) {\n this.backtrackFragment = null;\n }\n // Avoid loop loading by using nextLoadPosition set for backtracking and skipping consecutive GAP tags\n if (frag && this.isLoopLoading(frag, targetBufferTime)) {\n var gapStart = frag.gap;\n if (!gapStart) {\n // Cleanup the fragment tracker before trying to find the next unbuffered fragment\n var type = this.audioOnly && !this.altAudio ? ElementaryStreamTypes.AUDIO : ElementaryStreamTypes.VIDEO;\n var mediaBuffer = (type === ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n if (mediaBuffer) {\n this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN);\n }\n }\n frag = this.getNextFragmentLoopLoading(frag, levelDetails, bufferInfo, PlaylistLevelType.MAIN, maxBufLen);\n }\n if (!frag) {\n return;\n }\n if (frag.initSegment && !frag.initSegment.data && !this.bitrateTest) {\n frag = frag.initSegment;\n }\n this.loadFragment(frag, levelInfo, targetBufferTime);\n };\n _proto.loadFragment = function loadFragment(frag, level, targetBufferTime) {\n // Check if fragment is not loaded\n var fragState = this.fragmentTracker.getState(frag);\n this.fragCurrent = frag;\n if (fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) {\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag, level);\n } else if (this.bitrateTest) {\n this.log(\"Fragment \" + frag.sn + \" of level \" + frag.level + \" is being downloaded to test bitrate and will not be buffered\");\n this._loadBitrateTestFrag(frag, level);\n } else {\n this.startFragRequested = true;\n _BaseStreamController.prototype.loadFragment.call(this, frag, level, targetBufferTime);\n }\n } else {\n this.clearTrackerIfNeeded(frag);\n }\n };\n _proto.getBufferedFrag = function getBufferedFrag(position) {\n return this.fragmentTracker.getBufferedFrag(position, PlaylistLevelType.MAIN);\n };\n _proto.followingBufferedFrag = function followingBufferedFrag(frag) {\n if (frag) {\n // try to get range of next fragment (500ms after this range)\n return this.getBufferedFrag(frag.end + 0.5);\n }\n return null;\n }\n\n /*\n on immediate level switch :\n - pause playback if playing\n - cancel any pending load request\n - and trigger a buffer flush\n */;\n _proto.immediateLevelSwitch = function immediateLevelSwitch() {\n this.abortCurrentFrag();\n this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n }\n\n /**\n * try to switch ASAP without breaking video playback:\n * in order to ensure smooth but quick level switching,\n * we need to find the next flushable buffer range\n * we should take into account new segment fetch time\n */;\n _proto.nextLevelSwitch = function nextLevelSwitch() {\n var levels = this.levels,\n media = this.media;\n // ensure that media is defined and that metadata are available (to retrieve currentTime)\n if (media != null && media.readyState) {\n var fetchdelay;\n var fragPlayingCurrent = this.getAppendedFrag(media.currentTime);\n if (fragPlayingCurrent && fragPlayingCurrent.start > 1) {\n // flush buffer preceding current fragment (flush until current fragment start offset)\n // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...\n this.flushMainBuffer(0, fragPlayingCurrent.start - 1);\n }\n var levelDetails = this.getLevelDetails();\n if (levelDetails != null && levelDetails.live) {\n var bufferInfo = this.getMainFwdBufferInfo();\n // Do not flush in live stream with low buffer\n if (!bufferInfo || bufferInfo.len < levelDetails.targetduration * 2) {\n return;\n }\n }\n if (!media.paused && levels) {\n // add a safety delay of 1s\n var nextLevelId = this.hls.nextLoadLevel;\n var nextLevel = levels[nextLevelId];\n var fragLastKbps = this.fragLastKbps;\n if (fragLastKbps && this.fragCurrent) {\n fetchdelay = this.fragCurrent.duration * nextLevel.maxBitrate / (1000 * fragLastKbps) + 1;\n } else {\n fetchdelay = 0;\n }\n } else {\n fetchdelay = 0;\n }\n // this.log('fetchdelay:'+fetchdelay);\n // find buffer range that will be reached once new fragment will be fetched\n var bufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay);\n if (bufferedFrag) {\n // we can flush buffer range following this one without stalling playback\n var nextBufferedFrag = this.followingBufferedFrag(bufferedFrag);\n if (nextBufferedFrag) {\n // if we are here, we can also cancel any loading/demuxing in progress, as they are useless\n this.abortCurrentFrag();\n // start flush position is in next buffered frag. Leave some padding for non-independent segments and smoother playback.\n var maxStart = nextBufferedFrag.maxStartPTS ? nextBufferedFrag.maxStartPTS : nextBufferedFrag.start;\n var fragDuration = nextBufferedFrag.duration;\n var startPts = Math.max(bufferedFrag.end, maxStart + Math.min(Math.max(fragDuration - this.config.maxFragLookUpTolerance, fragDuration * (this.couldBacktrack ? 0.5 : 0.125)), fragDuration * (this.couldBacktrack ? 0.75 : 0.25)));\n this.flushMainBuffer(startPts, Number.POSITIVE_INFINITY);\n }\n }\n }\n };\n _proto.abortCurrentFrag = function abortCurrentFrag() {\n var fragCurrent = this.fragCurrent;\n this.fragCurrent = null;\n this.backtrackFragment = null;\n if (fragCurrent) {\n fragCurrent.abortRequests();\n this.fragmentTracker.removeFragment(fragCurrent);\n }\n switch (this.state) {\n case State.KEY_LOADING:\n case State.FRAG_LOADING:\n case State.FRAG_LOADING_WAITING_RETRY:\n case State.PARSING:\n case State.PARSED:\n this.state = State.IDLE;\n break;\n }\n this.nextLoadPosition = this.getLoadPosition();\n };\n _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset) {\n _BaseStreamController.prototype.flushMainBuffer.call(this, startOffset, endOffset, this.altAudio ? 'video' : null);\n };\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n _BaseStreamController.prototype.onMediaAttached.call(this, event, data);\n var media = data.media;\n this.onvplaying = this.onMediaPlaying.bind(this);\n this.onvseeked = this.onMediaSeeked.bind(this);\n media.addEventListener('playing', this.onvplaying);\n media.addEventListener('seeked', this.onvseeked);\n this.gapController = new GapController(this.config, media, this.fragmentTracker, this.hls);\n };\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media;\n if (media && this.onvplaying && this.onvseeked) {\n media.removeEventListener('playing', this.onvplaying);\n media.removeEventListener('seeked', this.onvseeked);\n this.onvplaying = this.onvseeked = null;\n this.videoBuffer = null;\n }\n this.fragPlaying = null;\n if (this.gapController) {\n this.gapController.destroy();\n this.gapController = null;\n }\n _BaseStreamController.prototype.onMediaDetaching.call(this);\n };\n _proto.onMediaPlaying = function onMediaPlaying() {\n // tick to speed up FRAG_CHANGED triggering\n this.tick();\n };\n _proto.onMediaSeeked = function onMediaSeeked() {\n var media = this.media;\n var currentTime = media ? media.currentTime : null;\n if (isFiniteNumber(currentTime)) {\n this.log(\"Media seeked to \" + currentTime.toFixed(3));\n }\n\n // If seeked was issued before buffer was appended do not tick immediately\n var bufferInfo = this.getMainFwdBufferInfo();\n if (bufferInfo === null || bufferInfo.len === 0) {\n this.warn(\"Main forward buffer length on \\\"seeked\\\" event \" + (bufferInfo ? bufferInfo.len : 'empty') + \")\");\n return;\n }\n\n // tick to speed up FRAG_CHANGED triggering\n this.tick();\n };\n _proto.onManifestLoading = function onManifestLoading() {\n // reset buffer on manifest loading\n this.log('Trigger BUFFER_RESET');\n this.hls.trigger(Events.BUFFER_RESET, undefined);\n this.fragmentTracker.removeAllFragments();\n this.couldBacktrack = false;\n this.startPosition = this.lastCurrentTime = this.fragLastKbps = 0;\n this.levels = this.fragPlaying = this.backtrackFragment = this.levelLastLoaded = null;\n this.altAudio = this.audioOnly = this.startFragRequested = false;\n };\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n // detect if we have different kind of audio codecs used amongst playlists\n var aac = false;\n var heaac = false;\n data.levels.forEach(function (level) {\n var codec = level.audioCodec;\n if (codec) {\n aac = aac || codec.indexOf('mp4a.40.2') !== -1;\n heaac = heaac || codec.indexOf('mp4a.40.5') !== -1;\n }\n });\n this.audioCodecSwitch = aac && heaac && !changeTypeSupported();\n if (this.audioCodecSwitch) {\n this.log('Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC');\n }\n this.levels = data.levels;\n this.startFragRequested = false;\n };\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n var levels = this.levels;\n if (!levels || this.state !== State.IDLE) {\n return;\n }\n var level = levels[data.level];\n if (!level.details || level.details.live && this.levelLastLoaded !== level || this.waitForCdnTuneIn(level.details)) {\n this.state = State.WAITING_LEVEL;\n }\n };\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var _curLevel$details;\n var levels = this.levels;\n var newLevelId = data.level;\n var newDetails = data.details;\n var duration = newDetails.totalduration;\n if (!levels) {\n this.warn(\"Levels were reset while loading level \" + newLevelId);\n return;\n }\n this.log(\"Level \" + newLevelId + \" loaded [\" + newDetails.startSN + \",\" + newDetails.endSN + \"]\" + (newDetails.lastPartSn ? \"[part-\" + newDetails.lastPartSn + \"-\" + newDetails.lastPartIndex + \"]\" : '') + \", cc [\" + newDetails.startCC + \", \" + newDetails.endCC + \"] duration:\" + duration);\n var curLevel = levels[newLevelId];\n var fragCurrent = this.fragCurrent;\n if (fragCurrent && (this.state === State.FRAG_LOADING || this.state === State.FRAG_LOADING_WAITING_RETRY)) {\n if (fragCurrent.level !== data.level && fragCurrent.loader) {\n this.abortCurrentFrag();\n }\n }\n var sliding = 0;\n if (newDetails.live || (_curLevel$details = curLevel.details) != null && _curLevel$details.live) {\n var _this$levelLastLoaded;\n this.checkLiveUpdate(newDetails);\n if (newDetails.deltaUpdateFailed) {\n return;\n }\n sliding = this.alignPlaylists(newDetails, curLevel.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n }\n // override level info\n curLevel.details = newDetails;\n this.levelLastLoaded = curLevel;\n this.hls.trigger(Events.LEVEL_UPDATED, {\n details: newDetails,\n level: newLevelId\n });\n\n // only switch back to IDLE state if we were waiting for level to start downloading a new fragment\n if (this.state === State.WAITING_LEVEL) {\n if (this.waitForCdnTuneIn(newDetails)) {\n // Wait for Low-Latency CDN Tune-in\n return;\n }\n this.state = State.IDLE;\n }\n if (!this.startFragRequested) {\n this.setStartPosition(newDetails, sliding);\n } else if (newDetails.live) {\n this.synchronizeToLiveEdge(newDetails);\n }\n\n // trigger handler right now\n this.tick();\n };\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(data) {\n var _frag$initSegment;\n var frag = data.frag,\n part = data.part,\n payload = data.payload;\n var levels = this.levels;\n if (!levels) {\n this.warn(\"Levels were reset while fragment load was in progress. Fragment \" + frag.sn + \" of level \" + frag.level + \" will not be buffered\");\n return;\n }\n var currentLevel = levels[frag.level];\n var details = currentLevel.details;\n if (!details) {\n this.warn(\"Dropping fragment \" + frag.sn + \" of level \" + frag.level + \" after level details were reset\");\n this.fragmentTracker.removeFragment(frag);\n return;\n }\n var videoCodec = currentLevel.videoCodec;\n\n // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n var accurateTimeOffset = details.PTSKnown || !details.live;\n var initSegmentData = (_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.data;\n var audioCodec = this._getAudioCodec(currentLevel);\n\n // transmux the MPEG-TS data to ISO-BMFF segments\n // this.log(`Transmuxing ${frag.sn} of [${details.startSN} ,${details.endSN}],level ${frag.level}, cc ${frag.cc}`);\n var transmuxer = this.transmuxer = this.transmuxer || new TransmuxerInterface(this.hls, PlaylistLevelType.MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n var partIndex = part ? part.index : -1;\n var partial = partIndex !== -1;\n var chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n var initPTS = this.initPTS[frag.cc];\n transmuxer.push(payload, initSegmentData, audioCodec, videoCodec, frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n };\n _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) {\n // if any URL found on new audio track, it is an alternate audio track\n var fromAltAudio = this.altAudio;\n var altAudio = !!data.url;\n // if we switch on main audio, ensure that main fragment scheduling is synced with media.buffered\n // don't do anything if we switch to alt audio: audio stream controller is handling it.\n // we will just have to change buffer scheduling on audioTrackSwitched\n if (!altAudio) {\n if (this.mediaBuffer !== this.media) {\n this.log('Switching on main audio, use media.buffered to schedule main fragment loading');\n this.mediaBuffer = this.media;\n var fragCurrent = this.fragCurrent;\n // we need to refill audio buffer from main: cancel any frag loading to speed up audio switch\n if (fragCurrent) {\n this.log('Switching to main audio track, cancel main fragment load');\n fragCurrent.abortRequests();\n this.fragmentTracker.removeFragment(fragCurrent);\n }\n // destroy transmuxer to force init segment generation (following audio switch)\n this.resetTransmuxer();\n // switch to IDLE state to load new fragment\n this.resetLoadingState();\n } else if (this.audioOnly) {\n // Reset audio transmuxer so when switching back to main audio we're not still appending where we left off\n this.resetTransmuxer();\n }\n var hls = this.hls;\n // If switching from alt to main audio, flush all audio and trigger track switched\n if (fromAltAudio) {\n hls.trigger(Events.BUFFER_FLUSHING, {\n startOffset: 0,\n endOffset: Number.POSITIVE_INFINITY,\n type: null\n });\n this.fragmentTracker.removeAllFragments();\n }\n hls.trigger(Events.AUDIO_TRACK_SWITCHED, data);\n }\n };\n _proto.onAudioTrackSwitched = function onAudioTrackSwitched(event, data) {\n var trackId = data.id;\n var altAudio = !!this.hls.audioTracks[trackId].url;\n if (altAudio) {\n var videoBuffer = this.videoBuffer;\n // if we switched on alternate audio, ensure that main fragment scheduling is synced with video sourcebuffer buffered\n if (videoBuffer && this.mediaBuffer !== videoBuffer) {\n this.log('Switching on alternate audio, use video.buffered to schedule main fragment loading');\n this.mediaBuffer = videoBuffer;\n }\n }\n this.altAudio = altAudio;\n this.tick();\n };\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var tracks = data.tracks;\n var mediaTrack;\n var name;\n var alternate = false;\n for (var type in tracks) {\n var track = tracks[type];\n if (track.id === 'main') {\n name = type;\n mediaTrack = track;\n // keep video source buffer reference\n if (type === 'video') {\n var videoTrack = tracks[type];\n if (videoTrack) {\n this.videoBuffer = videoTrack.buffer;\n }\n }\n } else {\n alternate = true;\n }\n }\n if (alternate && mediaTrack) {\n this.log(\"Alternate track found, use \" + name + \".buffered to schedule main fragment loading\");\n this.mediaBuffer = mediaTrack.buffer;\n } else {\n this.mediaBuffer = this.media;\n }\n };\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n if (frag && frag.type !== PlaylistLevelType.MAIN) {\n return;\n }\n if (this.fragContextChanged(frag)) {\n // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n // Avoid setting state back to IDLE, since that will interfere with a level switch\n this.warn(\"Fragment \" + frag.sn + (part ? ' p: ' + part.index : '') + \" of level \" + frag.level + \" finished buffering, but was aborted. state: \" + this.state);\n if (this.state === State.PARSED) {\n this.state = State.IDLE;\n }\n return;\n }\n var stats = part ? part.stats : frag.stats;\n this.fragLastKbps = Math.round(8 * stats.total / (stats.buffering.end - stats.loading.first));\n if (frag.sn !== 'initSegment') {\n this.fragPrevious = frag;\n }\n this.fragBufferedComplete(frag, part);\n };\n _proto.onError = function onError(event, data) {\n var _data$context;\n if (data.fatal) {\n this.state = State.ERROR;\n return;\n }\n switch (data.details) {\n case ErrorDetails.FRAG_GAP:\n case ErrorDetails.FRAG_PARSING_ERROR:\n case ErrorDetails.FRAG_DECRYPT_ERROR:\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n this.onFragmentOrKeyLoadError(PlaylistLevelType.MAIN, data);\n break;\n case ErrorDetails.LEVEL_LOAD_ERROR:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n case ErrorDetails.LEVEL_PARSING_ERROR:\n // in case of non fatal error while loading level, if level controller is not retrying to load level, switch back to IDLE\n if (!data.levelRetry && this.state === State.WAITING_LEVEL && ((_data$context = data.context) == null ? void 0 : _data$context.type) === PlaylistContextType.LEVEL) {\n this.state = State.IDLE;\n }\n break;\n case ErrorDetails.BUFFER_APPEND_ERROR:\n case ErrorDetails.BUFFER_FULL_ERROR:\n if (!data.parent || data.parent !== 'main') {\n return;\n }\n if (data.details === ErrorDetails.BUFFER_APPEND_ERROR) {\n this.resetLoadingState();\n return;\n }\n if (this.reduceLengthAndFlushBuffer(data)) {\n this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n }\n break;\n case ErrorDetails.INTERNAL_EXCEPTION:\n this.recoverWorkerError(data);\n break;\n }\n }\n\n // Checks the health of the buffer and attempts to resolve playback stalls.\n ;\n _proto.checkBuffer = function checkBuffer() {\n var media = this.media,\n gapController = this.gapController;\n if (!media || !gapController || !media.readyState) {\n // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n return;\n }\n if (this.loadedmetadata || !BufferHelper.getBuffered(media).length) {\n // Resolve gaps using the main buffer, whose ranges are the intersections of the A/V sourcebuffers\n var activeFrag = this.state !== State.IDLE ? this.fragCurrent : null;\n gapController.poll(this.lastCurrentTime, activeFrag);\n }\n this.lastCurrentTime = media.currentTime;\n };\n _proto.onFragLoadEmergencyAborted = function onFragLoadEmergencyAborted() {\n this.state = State.IDLE;\n // if loadedmetadata is not set, it means that we are emergency switch down on first frag\n // in that case, reset startFragRequested flag\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n this.nextLoadPosition = this.startPosition;\n }\n this.tickImmediate();\n };\n _proto.onBufferFlushed = function onBufferFlushed(event, _ref) {\n var type = _ref.type;\n if (type !== ElementaryStreamTypes.AUDIO || this.audioOnly && !this.altAudio) {\n var mediaBuffer = (type === ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN);\n this.tick();\n }\n };\n _proto.onLevelsUpdated = function onLevelsUpdated(event, data) {\n if (this.level > -1 && this.fragCurrent) {\n this.level = this.fragCurrent.level;\n }\n this.levels = data.levels;\n };\n _proto.swapAudioCodec = function swapAudioCodec() {\n this.audioCodecSwap = !this.audioCodecSwap;\n }\n\n /**\n * Seeks to the set startPosition if not equal to the mediaElement's current time.\n */;\n _proto.seekToStartPos = function seekToStartPos() {\n var media = this.media;\n if (!media) {\n return;\n }\n var currentTime = media.currentTime;\n var startPosition = this.startPosition;\n // only adjust currentTime if different from startPosition or if startPosition not buffered\n // at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered\n if (startPosition >= 0 && currentTime < startPosition) {\n if (media.seeking) {\n this.log(\"could not seek to \" + startPosition + \", already seeking at \" + currentTime);\n return;\n }\n var buffered = BufferHelper.getBuffered(media);\n var bufferStart = buffered.length ? buffered.start(0) : 0;\n var delta = bufferStart - startPosition;\n if (delta > 0 && (delta < this.config.maxBufferHole || delta < this.config.maxFragLookUpTolerance)) {\n this.log(\"adjusting start position by \" + delta + \" to match buffer start\");\n startPosition += delta;\n this.startPosition = startPosition;\n }\n this.log(\"seek to target start position \" + startPosition + \" from current time \" + currentTime);\n media.currentTime = startPosition;\n }\n };\n _proto._getAudioCodec = function _getAudioCodec(currentLevel) {\n var audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec;\n if (this.audioCodecSwap && audioCodec) {\n this.log('Swapping audio codec');\n if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n return audioCodec;\n };\n _proto._loadBitrateTestFrag = function _loadBitrateTestFrag(frag, level) {\n var _this2 = this;\n frag.bitrateTest = true;\n this._doFragLoad(frag, level).then(function (data) {\n var hls = _this2.hls;\n if (!data || _this2.fragContextChanged(frag)) {\n return;\n }\n level.fragmentError = 0;\n _this2.state = State.IDLE;\n _this2.startFragRequested = false;\n _this2.bitrateTest = false;\n var stats = frag.stats;\n // Bitrate tests fragments are neither parsed nor buffered\n stats.parsing.start = stats.parsing.end = stats.buffering.start = stats.buffering.end = self.performance.now();\n hls.trigger(Events.FRAG_LOADED, data);\n frag.bitrateTest = false;\n });\n };\n _proto._handleTransmuxComplete = function _handleTransmuxComplete(transmuxResult) {\n var _id3$samples;\n var id = 'main';\n var hls = this.hls;\n var remuxResult = transmuxResult.remuxResult,\n chunkMeta = transmuxResult.chunkMeta;\n var context = this.getCurrentContext(chunkMeta);\n if (!context) {\n this.resetWhenMissingContext(chunkMeta);\n return;\n }\n var frag = context.frag,\n part = context.part,\n level = context.level;\n var video = remuxResult.video,\n text = remuxResult.text,\n id3 = remuxResult.id3,\n initSegment = remuxResult.initSegment;\n var details = level.details;\n // The audio-stream-controller handles audio buffering if Hls.js is playing an alternate audio track\n var audio = this.altAudio ? undefined : remuxResult.audio;\n\n // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n if (this.fragContextChanged(frag)) {\n this.fragmentTracker.removeFragment(frag);\n return;\n }\n this.state = State.PARSING;\n if (initSegment) {\n if (initSegment != null && initSegment.tracks) {\n var mapFragment = frag.initSegment || frag;\n this._bufferInitSegment(level, initSegment.tracks, mapFragment, chunkMeta);\n hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, {\n frag: mapFragment,\n id: id,\n tracks: initSegment.tracks\n });\n }\n\n // This would be nice if Number.isFinite acted as a typeguard, but it doesn't. See: https://github.com/Microsoft/TypeScript/issues/10038\n var initPTS = initSegment.initPTS;\n var timescale = initSegment.timescale;\n if (isFiniteNumber(initPTS)) {\n this.initPTS[frag.cc] = {\n baseTime: initPTS,\n timescale: timescale\n };\n hls.trigger(Events.INIT_PTS_FOUND, {\n frag: frag,\n id: id,\n initPTS: initPTS,\n timescale: timescale\n });\n }\n }\n\n // Avoid buffering if backtracking this fragment\n if (video && details && frag.sn !== 'initSegment') {\n var prevFrag = details.fragments[frag.sn - 1 - details.startSN];\n var isFirstFragment = frag.sn === details.startSN;\n var isFirstInDiscontinuity = !prevFrag || frag.cc > prevFrag.cc;\n if (remuxResult.independent !== false) {\n var startPTS = video.startPTS,\n endPTS = video.endPTS,\n startDTS = video.startDTS,\n endDTS = video.endDTS;\n if (part) {\n part.elementaryStreams[video.type] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS\n };\n } else {\n if (video.firstKeyFrame && video.independent && chunkMeta.id === 1 && !isFirstInDiscontinuity) {\n this.couldBacktrack = true;\n }\n if (video.dropped && video.independent) {\n // Backtrack if dropped frames create a gap after currentTime\n\n var bufferInfo = this.getMainFwdBufferInfo();\n var targetBufferTime = (bufferInfo ? bufferInfo.end : this.getLoadPosition()) + this.config.maxBufferHole;\n var startTime = video.firstKeyFramePTS ? video.firstKeyFramePTS : startPTS;\n if (!isFirstFragment && targetBufferTime < startTime - this.config.maxBufferHole && !isFirstInDiscontinuity) {\n this.backtrack(frag);\n return;\n } else if (isFirstInDiscontinuity) {\n // Mark segment with a gap to avoid loop loading\n frag.gap = true;\n }\n // Set video stream start to fragment start so that truncated samples do not distort the timeline, and mark it partial\n frag.setElementaryStreamInfo(video.type, frag.start, endPTS, frag.start, endDTS, true);\n } else if (isFirstFragment && startPTS > MAX_START_GAP_JUMP) {\n // Mark segment with a gap to skip large start gap\n frag.gap = true;\n }\n }\n frag.setElementaryStreamInfo(video.type, startPTS, endPTS, startDTS, endDTS);\n if (this.backtrackFragment) {\n this.backtrackFragment = frag;\n }\n this.bufferFragmentData(video, frag, part, chunkMeta, isFirstFragment || isFirstInDiscontinuity);\n } else if (isFirstFragment || isFirstInDiscontinuity) {\n // Mark segment with a gap to avoid loop loading\n frag.gap = true;\n } else {\n this.backtrack(frag);\n return;\n }\n }\n if (audio) {\n var _startPTS = audio.startPTS,\n _endPTS = audio.endPTS,\n _startDTS = audio.startDTS,\n _endDTS = audio.endDTS;\n if (part) {\n part.elementaryStreams[ElementaryStreamTypes.AUDIO] = {\n startPTS: _startPTS,\n endPTS: _endPTS,\n startDTS: _startDTS,\n endDTS: _endDTS\n };\n }\n frag.setElementaryStreamInfo(ElementaryStreamTypes.AUDIO, _startPTS, _endPTS, _startDTS, _endDTS);\n this.bufferFragmentData(audio, frag, part, chunkMeta);\n }\n if (details && id3 != null && (_id3$samples = id3.samples) != null && _id3$samples.length) {\n var emittedID3 = {\n id: id,\n frag: frag,\n details: details,\n samples: id3.samples\n };\n hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3);\n }\n if (details && text) {\n var emittedText = {\n id: id,\n frag: frag,\n details: details,\n samples: text.samples\n };\n hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText);\n }\n };\n _proto._bufferInitSegment = function _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n var _this3 = this;\n if (this.state !== State.PARSING) {\n return;\n }\n this.audioOnly = !!tracks.audio && !tracks.video;\n\n // if audio track is expected to come from audio stream controller, discard any coming from main\n if (this.altAudio && !this.audioOnly) {\n delete tracks.audio;\n }\n // include levelCodec in audio and video tracks\n var audio = tracks.audio,\n video = tracks.video,\n audiovideo = tracks.audiovideo;\n if (audio) {\n var audioCodec = currentLevel.audioCodec;\n var ua = navigator.userAgent.toLowerCase();\n if (this.audioCodecSwitch) {\n if (audioCodec) {\n if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n // In the case that AAC and HE-AAC audio codecs are signalled in manifest,\n // force HE-AAC, as it seems that most browsers prefers it.\n // don't force HE-AAC if mono stream, or in Firefox\n var audioMetadata = audio.metadata;\n if (audioMetadata && 'channelCount' in audioMetadata && (audioMetadata.channelCount || 1) !== 1 && ua.indexOf('firefox') === -1) {\n audioCodec = 'mp4a.40.5';\n }\n }\n // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise\n if (audioCodec && audioCodec.indexOf('mp4a.40.5') !== -1 && ua.indexOf('android') !== -1 && audio.container !== 'audio/mpeg') {\n // Exclude mpeg audio\n audioCodec = 'mp4a.40.2';\n this.log(\"Android: force audio codec to \" + audioCodec);\n }\n if (currentLevel.audioCodec && currentLevel.audioCodec !== audioCodec) {\n this.log(\"Swapping manifest audio codec \\\"\" + currentLevel.audioCodec + \"\\\" for \\\"\" + audioCodec + \"\\\"\");\n }\n audio.levelCodec = audioCodec;\n audio.id = 'main';\n this.log(\"Init audio buffer, container:\" + audio.container + \", codecs[selected/level/parsed]=[\" + (audioCodec || '') + \"/\" + (currentLevel.audioCodec || '') + \"/\" + audio.codec + \"]\");\n }\n if (video) {\n video.levelCodec = currentLevel.videoCodec;\n video.id = 'main';\n this.log(\"Init video buffer, container:\" + video.container + \", codecs[level/parsed]=[\" + (currentLevel.videoCodec || '') + \"/\" + video.codec + \"]\");\n }\n if (audiovideo) {\n this.log(\"Init audiovideo buffer, container:\" + audiovideo.container + \", codecs[level/parsed]=[\" + currentLevel.codecs + \"/\" + audiovideo.codec + \"]\");\n }\n this.hls.trigger(Events.BUFFER_CODECS, tracks);\n // loop through tracks that are going to be provided to bufferController\n Object.keys(tracks).forEach(function (trackName) {\n var track = tracks[trackName];\n var initSegment = track.initSegment;\n if (initSegment != null && initSegment.byteLength) {\n _this3.hls.trigger(Events.BUFFER_APPENDING, {\n type: trackName,\n data: initSegment,\n frag: frag,\n part: null,\n chunkMeta: chunkMeta,\n parent: frag.type\n });\n }\n });\n // trigger handler right now\n this.tickImmediate();\n };\n _proto.getMainFwdBufferInfo = function getMainFwdBufferInfo() {\n return this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, PlaylistLevelType.MAIN);\n };\n _proto.backtrack = function backtrack(frag) {\n this.couldBacktrack = true;\n // Causes findFragments to backtrack through fragments to find the keyframe\n this.backtrackFragment = frag;\n this.resetTransmuxer();\n this.flushBufferGap(frag);\n this.fragmentTracker.removeFragment(frag);\n this.fragPrevious = null;\n this.nextLoadPosition = frag.start;\n this.state = State.IDLE;\n };\n _proto.checkFragmentChanged = function checkFragmentChanged() {\n var video = this.media;\n var fragPlayingCurrent = null;\n if (video && video.readyState > 1 && video.seeking === false) {\n var currentTime = video.currentTime;\n /* if video element is in seeked state, currentTime can only increase.\n (assuming that playback rate is positive ...)\n As sometimes currentTime jumps back to zero after a\n media decode error, check this, to avoid seeking back to\n wrong position after a media decode error\n */\n\n if (BufferHelper.isBuffered(video, currentTime)) {\n fragPlayingCurrent = this.getAppendedFrag(currentTime);\n } else if (BufferHelper.isBuffered(video, currentTime + 0.1)) {\n /* ensure that FRAG_CHANGED event is triggered at startup,\n when first video frame is displayed and playback is paused.\n add a tolerance of 100ms, in case current position is not buffered,\n check if current pos+100ms is buffered and use that buffer range\n for FRAG_CHANGED event reporting */\n fragPlayingCurrent = this.getAppendedFrag(currentTime + 0.1);\n }\n if (fragPlayingCurrent) {\n this.backtrackFragment = null;\n var fragPlaying = this.fragPlaying;\n var fragCurrentLevel = fragPlayingCurrent.level;\n if (!fragPlaying || fragPlayingCurrent.sn !== fragPlaying.sn || fragPlaying.level !== fragCurrentLevel) {\n this.fragPlaying = fragPlayingCurrent;\n this.hls.trigger(Events.FRAG_CHANGED, {\n frag: fragPlayingCurrent\n });\n if (!fragPlaying || fragPlaying.level !== fragCurrentLevel) {\n this.hls.trigger(Events.LEVEL_SWITCHED, {\n level: fragCurrentLevel\n });\n }\n }\n }\n }\n };\n _createClass(StreamController, [{\n key: \"nextLevel\",\n get: function get() {\n var frag = this.nextBufferedFrag;\n if (frag) {\n return frag.level;\n }\n return -1;\n }\n }, {\n key: \"currentFrag\",\n get: function get() {\n var media = this.media;\n if (media) {\n return this.fragPlaying || this.getAppendedFrag(media.currentTime);\n }\n return null;\n }\n }, {\n key: \"currentProgramDateTime\",\n get: function get() {\n var media = this.media;\n if (media) {\n var currentTime = media.currentTime;\n var frag = this.currentFrag;\n if (frag && isFiniteNumber(currentTime) && isFiniteNumber(frag.programDateTime)) {\n var epocMs = frag.programDateTime + (currentTime - frag.start) * 1000;\n return new Date(epocMs);\n }\n }\n return null;\n }\n }, {\n key: \"currentLevel\",\n get: function get() {\n var frag = this.currentFrag;\n if (frag) {\n return frag.level;\n }\n return -1;\n }\n }, {\n key: \"nextBufferedFrag\",\n get: function get() {\n var frag = this.currentFrag;\n if (frag) {\n return this.followingBufferedFrag(frag);\n }\n return null;\n }\n }, {\n key: \"forceStartLoad\",\n get: function get() {\n return this._forceStartLoad;\n }\n }]);\n return StreamController;\n }(BaseStreamController);\n\n /**\n * The `Hls` class is the core of the HLS.js library used to instantiate player instances.\n * @public\n */\n var Hls = /*#__PURE__*/function () {\n /**\n * Check if the required MediaSource Extensions are available.\n */\n Hls.isMSESupported = function isMSESupported$1() {\n return isMSESupported();\n }\n\n /**\n * Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs.\n */;\n Hls.isSupported = function isSupported$1() {\n return isSupported();\n }\n\n /**\n * Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource).\n */;\n Hls.getMediaSource = function getMediaSource$1() {\n return getMediaSource();\n };\n /**\n * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.\n * @param userConfig - Configuration options applied over `Hls.DefaultConfig`\n */\n function Hls(userConfig) {\n if (userConfig === void 0) {\n userConfig = {};\n }\n /**\n * The runtime configuration used by the player. At instantiation this is combination of `hls.userConfig` merged over `Hls.DefaultConfig`.\n */\n this.config = void 0;\n /**\n * The configuration object provided on player instantiation.\n */\n this.userConfig = void 0;\n this.coreComponents = void 0;\n this.networkControllers = void 0;\n this.started = false;\n this._emitter = new EventEmitter();\n this._autoLevelCapping = -1;\n this._maxHdcpLevel = null;\n this.abrController = void 0;\n this.bufferController = void 0;\n this.capLevelController = void 0;\n this.latencyController = void 0;\n this.levelController = void 0;\n this.streamController = void 0;\n this.audioTrackController = void 0;\n this.subtitleTrackController = void 0;\n this.emeController = void 0;\n this.cmcdController = void 0;\n this._media = null;\n this.url = null;\n this.triggeringException = void 0;\n enableLogs(userConfig.debug || false, 'Hls instance');\n var config = this.config = mergeConfig(Hls.DefaultConfig, userConfig);\n this.userConfig = userConfig;\n if (config.progressive) {\n enableStreamingMode(config);\n }\n\n // core controllers and network loaders\n var ConfigAbrController = config.abrController,\n ConfigBufferController = config.bufferController,\n ConfigCapLevelController = config.capLevelController,\n ConfigErrorController = config.errorController,\n ConfigFpsController = config.fpsController;\n var errorController = new ConfigErrorController(this);\n var abrController = this.abrController = new ConfigAbrController(this);\n var bufferController = this.bufferController = new ConfigBufferController(this);\n var capLevelController = this.capLevelController = new ConfigCapLevelController(this);\n var fpsController = new ConfigFpsController(this);\n var playListLoader = new PlaylistLoader(this);\n var id3TrackController = new ID3TrackController(this);\n var ConfigContentSteeringController = config.contentSteeringController;\n // ConentSteeringController is defined before LevelController to receive Multivariant Playlist events first\n var contentSteering = ConfigContentSteeringController ? new ConfigContentSteeringController(this) : null;\n var levelController = this.levelController = new LevelController(this, contentSteering);\n // FragmentTracker must be defined before StreamController because the order of event handling is important\n var fragmentTracker = new FragmentTracker(this);\n var keyLoader = new KeyLoader(this.config);\n var streamController = this.streamController = new StreamController(this, fragmentTracker, keyLoader);\n\n // Cap level controller uses streamController to flush the buffer\n capLevelController.setStreamController(streamController);\n // fpsController uses streamController to switch when frames are being dropped\n fpsController.setStreamController(streamController);\n var networkControllers = [playListLoader, levelController, streamController];\n if (contentSteering) {\n networkControllers.splice(1, 0, contentSteering);\n }\n this.networkControllers = networkControllers;\n var coreComponents = [abrController, bufferController, capLevelController, fpsController, id3TrackController, fragmentTracker];\n this.audioTrackController = this.createController(config.audioTrackController, networkControllers);\n var AudioStreamControllerClass = config.audioStreamController;\n if (AudioStreamControllerClass) {\n networkControllers.push(new AudioStreamControllerClass(this, fragmentTracker, keyLoader));\n }\n // subtitleTrackController must be defined before subtitleStreamController because the order of event handling is important\n this.subtitleTrackController = this.createController(config.subtitleTrackController, networkControllers);\n var SubtitleStreamControllerClass = config.subtitleStreamController;\n if (SubtitleStreamControllerClass) {\n networkControllers.push(new SubtitleStreamControllerClass(this, fragmentTracker, keyLoader));\n }\n this.createController(config.timelineController, coreComponents);\n keyLoader.emeController = this.emeController = this.createController(config.emeController, coreComponents);\n this.cmcdController = this.createController(config.cmcdController, coreComponents);\n this.latencyController = this.createController(LatencyController, coreComponents);\n this.coreComponents = coreComponents;\n\n // Error controller handles errors before and after all other controllers\n // This listener will be invoked after all other controllers error listeners\n networkControllers.push(errorController);\n var onErrorOut = errorController.onErrorOut;\n if (typeof onErrorOut === 'function') {\n this.on(Events.ERROR, onErrorOut, errorController);\n }\n }\n var _proto = Hls.prototype;\n _proto.createController = function createController(ControllerClass, components) {\n if (ControllerClass) {\n var controllerInstance = new ControllerClass(this);\n if (components) {\n components.push(controllerInstance);\n }\n return controllerInstance;\n }\n return null;\n }\n\n // Delegate the EventEmitter through the public API of Hls.js\n ;\n _proto.on = function on(event, listener, context) {\n if (context === void 0) {\n context = this;\n }\n this._emitter.on(event, listener, context);\n };\n _proto.once = function once(event, listener, context) {\n if (context === void 0) {\n context = this;\n }\n this._emitter.once(event, listener, context);\n };\n _proto.removeAllListeners = function removeAllListeners(event) {\n this._emitter.removeAllListeners(event);\n };\n _proto.off = function off(event, listener, context, once) {\n if (context === void 0) {\n context = this;\n }\n this._emitter.off(event, listener, context, once);\n };\n _proto.listeners = function listeners(event) {\n return this._emitter.listeners(event);\n };\n _proto.emit = function emit(event, name, eventObject) {\n return this._emitter.emit(event, name, eventObject);\n };\n _proto.trigger = function trigger(event, eventObject) {\n if (this.config.debug) {\n return this.emit(event, event, eventObject);\n } else {\n try {\n return this.emit(event, event, eventObject);\n } catch (error) {\n logger.error('An internal error happened while handling event ' + event + '. Error message: \"' + error.message + '\". Here is a stacktrace:', error);\n // Prevent recursion in error event handlers that throw #5497\n if (!this.triggeringException) {\n this.triggeringException = true;\n var fatal = event === Events.ERROR;\n this.trigger(Events.ERROR, {\n type: ErrorTypes.OTHER_ERROR,\n details: ErrorDetails.INTERNAL_EXCEPTION,\n fatal: fatal,\n event: event,\n error: error\n });\n this.triggeringException = false;\n }\n }\n }\n return false;\n };\n _proto.listenerCount = function listenerCount(event) {\n return this._emitter.listenerCount(event);\n }\n\n /**\n * Dispose of the instance\n */;\n _proto.destroy = function destroy() {\n logger.log('destroy');\n this.trigger(Events.DESTROYING, undefined);\n this.detachMedia();\n this.removeAllListeners();\n this._autoLevelCapping = -1;\n this.url = null;\n this.networkControllers.forEach(function (component) {\n return component.destroy();\n });\n this.networkControllers.length = 0;\n this.coreComponents.forEach(function (component) {\n return component.destroy();\n });\n this.coreComponents.length = 0;\n // Remove any references that could be held in config options or callbacks\n var config = this.config;\n config.xhrSetup = config.fetchSetup = undefined;\n // @ts-ignore\n this.userConfig = null;\n }\n\n /**\n * Attaches Hls.js to a media element\n */;\n _proto.attachMedia = function attachMedia(media) {\n logger.log('attachMedia');\n this._media = media;\n this.trigger(Events.MEDIA_ATTACHING, {\n media: media\n });\n }\n\n /**\n * Detach Hls.js from the media\n */;\n _proto.detachMedia = function detachMedia() {\n logger.log('detachMedia');\n this.trigger(Events.MEDIA_DETACHING, undefined);\n this._media = null;\n }\n\n /**\n * Set the source URL. Can be relative or absolute.\n */;\n _proto.loadSource = function loadSource(url) {\n this.stopLoad();\n var media = this.media;\n var loadedSource = this.url;\n var loadingSource = this.url = urlToolkitExports.buildAbsoluteURL(self.location.href, url, {\n alwaysNormalize: true\n });\n this._autoLevelCapping = -1;\n this._maxHdcpLevel = null;\n logger.log(\"loadSource:\" + loadingSource);\n if (media && loadedSource && (loadedSource !== loadingSource || this.bufferController.hasSourceTypes())) {\n this.detachMedia();\n this.attachMedia(media);\n }\n // when attaching to a source URL, trigger a playlist load\n this.trigger(Events.MANIFEST_LOADING, {\n url: url\n });\n }\n\n /**\n * Start loading data from the stream source.\n * Depending on default config, client starts loading automatically when a source is set.\n *\n * @param startPosition - Set the start position to stream from.\n * Defaults to -1 (None: starts from earliest point)\n */;\n _proto.startLoad = function startLoad(startPosition) {\n if (startPosition === void 0) {\n startPosition = -1;\n }\n logger.log(\"startLoad(\" + startPosition + \")\");\n this.started = true;\n this.networkControllers.forEach(function (controller) {\n controller.startLoad(startPosition);\n });\n }\n\n /**\n * Stop loading of any stream data.\n */;\n _proto.stopLoad = function stopLoad() {\n logger.log('stopLoad');\n this.started = false;\n this.networkControllers.forEach(function (controller) {\n controller.stopLoad();\n });\n }\n\n /**\n * Resumes stream controller segment loading if previously started.\n */;\n _proto.resumeBuffering = function resumeBuffering() {\n if (this.started) {\n this.networkControllers.forEach(function (controller) {\n if ('fragmentLoader' in controller) {\n controller.startLoad(-1);\n }\n });\n }\n }\n\n /**\n * Stops stream controller segment loading without changing 'started' state like stopLoad().\n * This allows for media buffering to be paused without interupting playlist loading.\n */;\n _proto.pauseBuffering = function pauseBuffering() {\n this.networkControllers.forEach(function (controller) {\n if ('fragmentLoader' in controller) {\n controller.stopLoad();\n }\n });\n }\n\n /**\n * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)\n */;\n _proto.swapAudioCodec = function swapAudioCodec() {\n logger.log('swapAudioCodec');\n this.streamController.swapAudioCodec();\n }\n\n /**\n * When the media-element fails, this allows to detach and then re-attach it\n * as one call (convenience method).\n *\n * Automatic recovery of media-errors by this process is configurable.\n */;\n _proto.recoverMediaError = function recoverMediaError() {\n logger.log('recoverMediaError');\n var media = this._media;\n this.detachMedia();\n if (media) {\n this.attachMedia(media);\n }\n };\n _proto.removeLevel = function removeLevel(levelIndex) {\n this.levelController.removeLevel(levelIndex);\n }\n\n /**\n * @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH\n */;\n /**\n * Find and select the best matching audio track, making a level switch when a Group change is necessary.\n * Updates `hls.config.audioPreference`. Returns the selected track, or null when no matching track is found.\n */\n _proto.setAudioOption = function setAudioOption(audioOption) {\n var _this$audioTrackContr;\n return (_this$audioTrackContr = this.audioTrackController) == null ? void 0 : _this$audioTrackContr.setAudioOption(audioOption);\n }\n /**\n * Find and select the best matching subtitle track, making a level switch when a Group change is necessary.\n * Updates `hls.config.subtitlePreference`. Returns the selected track, or null when no matching track is found.\n */;\n _proto.setSubtitleOption = function setSubtitleOption(subtitleOption) {\n var _this$subtitleTrackCo;\n (_this$subtitleTrackCo = this.subtitleTrackController) == null ? void 0 : _this$subtitleTrackCo.setSubtitleOption(subtitleOption);\n return null;\n }\n\n /**\n * Get the complete list of audio tracks across all media groups\n */;\n _createClass(Hls, [{\n key: \"levels\",\n get: function get() {\n var levels = this.levelController.levels;\n return levels ? levels : [];\n }\n\n /**\n * Index of quality level (variant) currently played\n */\n }, {\n key: \"currentLevel\",\n get: function get() {\n return this.streamController.currentLevel;\n }\n\n /**\n * Set quality level index immediately. This will flush the current buffer to replace the quality asap. That means playback will interrupt at least shortly to re-buffer and re-sync eventually. Set to -1 for automatic level selection.\n */,\n set: function set(newLevel) {\n logger.log(\"set currentLevel:\" + newLevel);\n this.levelController.manualLevel = newLevel;\n this.streamController.immediateLevelSwitch();\n }\n\n /**\n * Index of next quality level loaded as scheduled by stream controller.\n */\n }, {\n key: \"nextLevel\",\n get: function get() {\n return this.streamController.nextLevel;\n }\n\n /**\n * Set quality level index for next loaded data.\n * This will switch the video quality asap, without interrupting playback.\n * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).\n * @param newLevel - Pass -1 for automatic level selection\n */,\n set: function set(newLevel) {\n logger.log(\"set nextLevel:\" + newLevel);\n this.levelController.manualLevel = newLevel;\n this.streamController.nextLevelSwitch();\n }\n\n /**\n * Return the quality level of the currently or last (of none is loaded currently) segment\n */\n }, {\n key: \"loadLevel\",\n get: function get() {\n return this.levelController.level;\n }\n\n /**\n * Set quality level index for next loaded data in a conservative way.\n * This will switch the quality without flushing, but interrupt current loading.\n * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.\n * @param newLevel - Pass -1 for automatic level selection\n */,\n set: function set(newLevel) {\n logger.log(\"set loadLevel:\" + newLevel);\n this.levelController.manualLevel = newLevel;\n }\n\n /**\n * get next quality level loaded\n */\n }, {\n key: \"nextLoadLevel\",\n get: function get() {\n return this.levelController.nextLoadLevel;\n }\n\n /**\n * Set quality level of next loaded segment in a fully \"non-destructive\" way.\n * Same as `loadLevel` but will wait for next switch (until current loading is done).\n */,\n set: function set(level) {\n this.levelController.nextLoadLevel = level;\n }\n\n /**\n * Return \"first level\": like a default level, if not set,\n * falls back to index of first level referenced in manifest\n */\n }, {\n key: \"firstLevel\",\n get: function get() {\n return Math.max(this.levelController.firstLevel, this.minAutoLevel);\n }\n\n /**\n * Sets \"first-level\", see getter.\n */,\n set: function set(newLevel) {\n logger.log(\"set firstLevel:\" + newLevel);\n this.levelController.firstLevel = newLevel;\n }\n\n /**\n * Return the desired start level for the first fragment that will be loaded.\n * The default value of -1 indicates automatic start level selection.\n * Setting hls.nextAutoLevel without setting a startLevel will result in\n * the nextAutoLevel value being used for one fragment load.\n */\n }, {\n key: \"startLevel\",\n get: function get() {\n var startLevel = this.levelController.startLevel;\n if (startLevel === -1 && this.abrController.forcedAutoLevel > -1) {\n return this.abrController.forcedAutoLevel;\n }\n return startLevel;\n }\n\n /**\n * set start level (level of first fragment that will be played back)\n * if not overrided by user, first level appearing in manifest will be used as start level\n * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n * (determined from download of first segment)\n */,\n set: function set(newLevel) {\n logger.log(\"set startLevel:\" + newLevel);\n // if not in automatic start level detection, ensure startLevel is greater than minAutoLevel\n if (newLevel !== -1) {\n newLevel = Math.max(newLevel, this.minAutoLevel);\n }\n this.levelController.startLevel = newLevel;\n }\n\n /**\n * Whether level capping is enabled.\n * Default value is set via `config.capLevelToPlayerSize`.\n */\n }, {\n key: \"capLevelToPlayerSize\",\n get: function get() {\n return this.config.capLevelToPlayerSize;\n }\n\n /**\n * Enables or disables level capping. If disabled after previously enabled, `nextLevelSwitch` will be immediately called.\n */,\n set: function set(shouldStartCapping) {\n var newCapLevelToPlayerSize = !!shouldStartCapping;\n if (newCapLevelToPlayerSize !== this.config.capLevelToPlayerSize) {\n if (newCapLevelToPlayerSize) {\n this.capLevelController.startCapping(); // If capping occurs, nextLevelSwitch will happen based on size.\n } else {\n this.capLevelController.stopCapping();\n this.autoLevelCapping = -1;\n this.streamController.nextLevelSwitch(); // Now we're uncapped, get the next level asap.\n }\n this.config.capLevelToPlayerSize = newCapLevelToPlayerSize;\n }\n }\n\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n */\n }, {\n key: \"autoLevelCapping\",\n get: function get() {\n return this._autoLevelCapping;\n }\n\n /**\n * Returns the current bandwidth estimate in bits per second, when available. Otherwise, `NaN` is returned.\n */,\n set:\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n */\n function set(newLevel) {\n if (this._autoLevelCapping !== newLevel) {\n logger.log(\"set autoLevelCapping:\" + newLevel);\n this._autoLevelCapping = newLevel;\n this.levelController.checkMaxAutoUpdated();\n }\n }\n }, {\n key: \"bandwidthEstimate\",\n get: function get() {\n var bwEstimator = this.abrController.bwEstimator;\n if (!bwEstimator) {\n return NaN;\n }\n return bwEstimator.getEstimate();\n },\n set: function set(abrEwmaDefaultEstimate) {\n this.abrController.resetEstimator(abrEwmaDefaultEstimate);\n }\n\n /**\n * get time to first byte estimate\n * @type {number}\n */\n }, {\n key: \"ttfbEstimate\",\n get: function get() {\n var bwEstimator = this.abrController.bwEstimator;\n if (!bwEstimator) {\n return NaN;\n }\n return bwEstimator.getEstimateTTFB();\n }\n }, {\n key: \"maxHdcpLevel\",\n get: function get() {\n return this._maxHdcpLevel;\n },\n set: function set(value) {\n if (isHdcpLevel(value) && this._maxHdcpLevel !== value) {\n this._maxHdcpLevel = value;\n this.levelController.checkMaxAutoUpdated();\n }\n }\n\n /**\n * True when automatic level selection enabled\n */\n }, {\n key: \"autoLevelEnabled\",\n get: function get() {\n return this.levelController.manualLevel === -1;\n }\n\n /**\n * Level set manually (if any)\n */\n }, {\n key: \"manualLevel\",\n get: function get() {\n return this.levelController.manualLevel;\n }\n\n /**\n * min level selectable in auto mode according to config.minAutoBitrate\n */\n }, {\n key: \"minAutoLevel\",\n get: function get() {\n var levels = this.levels,\n minAutoBitrate = this.config.minAutoBitrate;\n if (!levels) return 0;\n var len = levels.length;\n for (var i = 0; i < len; i++) {\n if (levels[i].maxBitrate >= minAutoBitrate) {\n return i;\n }\n }\n return 0;\n }\n\n /**\n * max level selectable in auto mode according to autoLevelCapping\n */\n }, {\n key: \"maxAutoLevel\",\n get: function get() {\n var levels = this.levels,\n autoLevelCapping = this.autoLevelCapping,\n maxHdcpLevel = this.maxHdcpLevel;\n var maxAutoLevel;\n if (autoLevelCapping === -1 && levels != null && levels.length) {\n maxAutoLevel = levels.length - 1;\n } else {\n maxAutoLevel = autoLevelCapping;\n }\n if (maxHdcpLevel) {\n for (var i = maxAutoLevel; i--;) {\n var hdcpLevel = levels[i].attrs['HDCP-LEVEL'];\n if (hdcpLevel && hdcpLevel <= maxHdcpLevel) {\n return i;\n }\n }\n }\n return maxAutoLevel;\n }\n }, {\n key: \"firstAutoLevel\",\n get: function get() {\n return this.abrController.firstAutoLevel;\n }\n\n /**\n * next automatically selected quality level\n */\n }, {\n key: \"nextAutoLevel\",\n get: function get() {\n return this.abrController.nextAutoLevel;\n }\n\n /**\n * this setter is used to force next auto level.\n * this is useful to force a switch down in auto mode:\n * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)\n * forced value is valid for one fragment. upon successful frag loading at forced level,\n * this value will be resetted to -1 by ABR controller.\n */,\n set: function set(nextLevel) {\n this.abrController.nextAutoLevel = nextLevel;\n }\n\n /**\n * get the datetime value relative to media.currentTime for the active level Program Date Time if present\n */\n }, {\n key: \"playingDate\",\n get: function get() {\n return this.streamController.currentProgramDateTime;\n }\n }, {\n key: \"mainForwardBufferInfo\",\n get: function get() {\n return this.streamController.getMainFwdBufferInfo();\n }\n }, {\n key: \"allAudioTracks\",\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.allAudioTracks : [];\n }\n\n /**\n * Get the list of selectable audio tracks\n */\n }, {\n key: \"audioTracks\",\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTracks : [];\n }\n\n /**\n * index of the selected audio track (index in audio track lists)\n */\n }, {\n key: \"audioTrack\",\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTrack : -1;\n }\n\n /**\n * selects an audio track, based on its index in audio track lists\n */,\n set: function set(audioTrackId) {\n var audioTrackController = this.audioTrackController;\n if (audioTrackController) {\n audioTrackController.audioTrack = audioTrackId;\n }\n }\n\n /**\n * get the complete list of subtitle tracks across all media groups\n */\n }, {\n key: \"allSubtitleTracks\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.allSubtitleTracks : [];\n }\n\n /**\n * get alternate subtitle tracks list from playlist\n */\n }, {\n key: \"subtitleTracks\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTracks : [];\n }\n\n /**\n * index of the selected subtitle track (index in subtitle track lists)\n */\n }, {\n key: \"subtitleTrack\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1;\n },\n set:\n /**\n * select an subtitle track, based on its index in subtitle track lists\n */\n function set(subtitleTrackId) {\n var subtitleTrackController = this.subtitleTrackController;\n if (subtitleTrackController) {\n subtitleTrackController.subtitleTrack = subtitleTrackId;\n }\n }\n\n /**\n * Whether subtitle display is enabled or not\n */\n }, {\n key: \"media\",\n get: function get() {\n return this._media;\n }\n }, {\n key: \"subtitleDisplay\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleDisplay : false;\n }\n\n /**\n * Enable/disable subtitle display rendering\n */,\n set: function set(value) {\n var subtitleTrackController = this.subtitleTrackController;\n if (subtitleTrackController) {\n subtitleTrackController.subtitleDisplay = value;\n }\n }\n\n /**\n * get mode for Low-Latency HLS loading\n */\n }, {\n key: \"lowLatencyMode\",\n get: function get() {\n return this.config.lowLatencyMode;\n }\n\n /**\n * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.\n */,\n set: function set(mode) {\n this.config.lowLatencyMode = mode;\n }\n\n /**\n * Position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)\n * @returns null prior to loading live Playlist\n */\n }, {\n key: \"liveSyncPosition\",\n get: function get() {\n return this.latencyController.liveSyncPosition;\n }\n\n /**\n * Estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)\n * @returns 0 before first playlist is loaded\n */\n }, {\n key: \"latency\",\n get: function get() {\n return this.latencyController.latency;\n }\n\n /**\n * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```\n * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```\n * @returns 0 before first playlist is loaded\n */\n }, {\n key: \"maxLatency\",\n get: function get() {\n return this.latencyController.maxLatency;\n }\n\n /**\n * target distance from the edge as calculated by the latency controller\n */\n }, {\n key: \"targetLatency\",\n get: function get() {\n return this.latencyController.targetLatency;\n }\n\n /**\n * the rate at which the edge of the current live playlist is advancing or 1 if there is none\n */\n }, {\n key: \"drift\",\n get: function get() {\n return this.latencyController.drift;\n }\n\n /**\n * set to true when startLoad is called before MANIFEST_PARSED event\n */\n }, {\n key: \"forceStartLoad\",\n get: function get() {\n return this.streamController.forceStartLoad;\n }\n }], [{\n key: \"version\",\n get:\n /**\n * Get the video-dev/hls.js package version.\n */\n function get() {\n return \"1.5.11\";\n }\n }, {\n key: \"Events\",\n get: function get() {\n return Events;\n }\n }, {\n key: \"ErrorTypes\",\n get: function get() {\n return ErrorTypes;\n }\n }, {\n key: \"ErrorDetails\",\n get: function get() {\n return ErrorDetails;\n }\n\n /**\n * Get the default configuration applied to new instances.\n */\n }, {\n key: \"DefaultConfig\",\n get: function get() {\n if (!Hls.defaultConfig) {\n return hlsDefaultConfig;\n }\n return Hls.defaultConfig;\n }\n\n /**\n * Replace the default configuration applied to new instances.\n */,\n set: function set(defaultConfig) {\n Hls.defaultConfig = defaultConfig;\n }\n }]);\n return Hls;\n }();\n Hls.defaultConfig = void 0;\n\n return Hls;\n\n}));\n})(false);\n//# sourceMappingURL=hls.js.map\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useId as s,useReducer as h,useEffect as v,useLayoutEffect as d,useRef as p,useImperativeHandle as m,useMemo as y,useCallback as _,useContext as b,useDebugValue as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function E(n,t){return n===t&&(0!==n||1/n==1/t)||n!=n&&t!=t}function w(n){this.props=n}function x(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:C(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(w.prototype=new n).isPureReactComponent=!0,w.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var R=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),R&&R(n)};var N=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function k(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=N,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var A=function(n,t){return null==n?null:r(r(n).map(t))},O={map:A,forEach:A,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},T=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);T(n,t,e,r)};var I=e.unmount;function L(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return L(n,t,e)})),n}function U(n,t,e){return n&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return U(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=e)),n}function D(){this.__u=0,this.t=null,this.__b=null}function F(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function M(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function V(){this.u=null,this.o=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),I&&I(n)},(D.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=F(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=U(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},D.prototype.componentWillUnmount=function(){this.t=[]},D.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=L(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__h=null),[t(u,null,e.__a?null:n.children),i]};var W=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.u=e=e[2]}};function P(n){return this.getChildContext=function(){return n.context},n.children}function j(n){var e=this,r=n.i;e.componentWillUnmount=function(){o(null,e.l),e.l=null,e.i=null},e.i&&e.i!==r&&e.componentWillUnmount(),n.__v?(e.l||(e.i=r,e.l={nodeType:1,parentNode:r,childNodes:[],appendChild:function(n){this.childNodes.push(n),e.i.appendChild(n)},insertBefore:function(n,t){this.childNodes.push(n),e.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.i.removeChild(n)}}),o(t(P,{context:e.context},n.__v),e.l)):e.l&&e.componentWillUnmount()}function z(n,e){var r=t(j,{__v:n,i:e});return r.containerInfo=e,r}(V.prototype=new n).__a=function(n){var t=this,e=F(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),W(t,n,r)):u()};e?e(o):o()}},V.prototype.render=function(n){this.u=null,this.o=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},V.prototype.componentDidUpdate=V.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){W(n,e,t)})};var B=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,H=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Z=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Y=/[A-Z0-9]/g,$=\"undefined\"!=typeof document,q=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function G(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function J(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var K=e.event;function Q(){}function X(){return this.cancelBubble}function nn(){return this.defaultPrevented}e.event=function(n){return K&&(n=K(n)),n.persist=Q,n.isPropagationStopped=X,n.isDefaultPrevented=nn,n.nativeEvent=n};var tn,en={enumerable:!1,configurable:!0,get:function(){return this.class}},rn=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={};for(var o in t){var i=t[o];if(!(\"value\"===o&&\"defaultValue\"in t&&null==i||$&&\"children\"===o&&\"noscript\"===e||\"class\"===o||\"className\"===o)){var l=o.toLowerCase();\"defaultValue\"===o&&\"value\"in t&&null==t.value?o=\"value\":\"download\"===o&&!0===i?i=\"\":\"ondoubleclick\"===l?o=\"ondblclick\":\"onchange\"!==l||\"input\"!==e&&\"textarea\"!==e||q(t.type)?\"onfocus\"===l?o=\"onfocusin\":\"onblur\"===l?o=\"onfocusout\":Z.test(o)?o=l:-1===e.indexOf(\"-\")&&H.test(o)?o=o.replace(Y,\"-$&\").toLowerCase():null===i&&(i=void 0):l=o=\"oninput\",\"oninput\"===l&&u[o=l]&&(o=\"oninputCapture\"),u[o]=i}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",en)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=B,rn&&rn(n)};var un=e.__r;e.__r=function(n){un&&un(n),tn=n.__c};var on=e.diffed;e.diffed=function(n){on&&on(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),tn=null};var ln={ReactCurrentDispatcher:{current:{readContext:function(n){return tn.__n[n.__c].props.value}}}},cn=\"17.0.2\";function fn(n){return t.bind(null,n)}function an(n){return!!n&&n.$$typeof===B}function sn(n){return an(n)?f.apply(null,arguments):n}function hn(n){return!!n.__k&&(o(null,n),!0)}function vn(n){return n&&(n.base||1===n.nodeType&&n)||null}var dn=function(n,t){return n(t)},pn=function(n,t){return n(t)},mn=u;function yn(n){n()}function _n(n){return n}function bn(){return[!1,yn]}var Sn=d;function gn(n,t){var e=t(),r=a({h:{__:e,v:t}}),u=r[0].h,o=r[1];return d(function(){u.__=e,u.v=t,E(u.__,t())||o({h:u})},[n,e,t]),v(function(){return E(u.__,u.v())||o({h:u}),n(function(){E(u.__,u.v())||o({h:u})})},[n]),e}var Cn={useState:a,useId:s,useReducer:h,useEffect:v,useLayoutEffect:d,useInsertionEffect:Sn,useTransition:bn,useDeferredValue:_n,useSyncExternalStore:gn,startTransition:yn,useRef:p,useImperativeHandle:m,useMemo:y,useCallback:_,useContext:b,useDebugValue:S,version:\"17.0.2\",Children:O,render:G,hydrate:J,unmountComponentAtNode:hn,createPortal:z,createElement:t,createContext:l,createFactory:fn,cloneElement:sn,createRef:c,Fragment:u,isValidElement:an,findDOMNode:vn,Component:n,PureComponent:w,memo:x,forwardRef:k,flushSync:pn,unstable_batchedUpdates:dn,StrictMode:mn,Suspense:D,SuspenseList:V,lazy:M,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ln};export{O as Children,w as PureComponent,mn as StrictMode,D as Suspense,V as SuspenseList,ln as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sn as cloneElement,fn as createFactory,z as createPortal,Cn as default,vn as findDOMNode,pn as flushSync,k as forwardRef,J as hydrate,an as isValidElement,M as lazy,x as memo,G as render,yn as startTransition,hn as unmountComponentAtNode,dn as unstable_batchedUpdates,_n as useDeferredValue,Sn as useInsertionEffect,gn as useSyncExternalStore,bn as useTransition,cn as version};\n//# sourceMappingURL=compat.module.js.map\n","var n,l,u,i,t,o,r,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,v=Array.isArray;function h(n,l){for(var u in l)n[u]=l[u];return n}function p(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,i){var t,o,r,f={};for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return d(l,f,t,o,null)}function d(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u:r};return null==r&&null!=l.vnode&&l.vnode(f),f}function _(){return{current:null}}function k(n){return n.children}function b(n,l){this.props=n,this.context=l}function g(n,l){if(null==l)return n.__?g(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?g(n):null}function m(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return m(n)}}function w(n){(!n.__d&&(n.__d=!0)&&t.push(n)&&!x.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||r)(x)}function x(){var n,l,u,i,o,r,e,c;for(t.sort(f);n=t.shift();)n.__d&&(l=t.length,i=void 0,o=void 0,e=(r=(u=n).__v).__e,(c=u.__P)&&(i=[],(o=h({},r)).__v=r.__v+1,L(c,r,o,u.__n,void 0!==c.ownerSVGElement,null!=r.__h?[e]:null,i,null==e?g(r):e,r.__h),M(i,r),r.__e!=e&&m(r)),t.length>l&&t.sort(f));x.__r=0}function P(n,l,u,i,t,o,r,f,e,a){var h,p,y,_,b,m,w,x=i&&i.__k||s,P=x.length;for(u.__k=[],h=0;h<l.length;h++)if(null!=(_=u.__k[h]=null==(_=l[h])||\"boolean\"==typeof _||\"function\"==typeof _?null:\"string\"==typeof _||\"number\"==typeof _||\"bigint\"==typeof _?d(null,_,null,null,_):v(_)?d(k,{children:_},null,null,null):_.__b>0?d(_.type,_.props,_.key,_.ref?_.ref:null,_.__v):_)){if(_.__=u,_.__b=u.__b+1,null===(y=x[h])||y&&_.key==y.key&&_.type===y.type)x[h]=void 0;else for(p=0;p<P;p++){if((y=x[p])&&_.key==y.key&&_.type===y.type){x[p]=void 0;break}y=null}L(n,_,y=y||c,t,o,r,f,e,a),b=_.__e,(p=_.ref)&&y.ref!=p&&(w||(w=[]),y.ref&&w.push(y.ref,null,_),w.push(p,_.__c||b,_)),null!=b?(null==m&&(m=b),\"function\"==typeof _.type&&_.__k===y.__k?_.__d=e=C(_,e,n):e=$(n,_,y,x,b,e),\"function\"==typeof u.type&&(u.__d=e)):e&&y.__e==e&&e.parentNode!=n&&(e=g(y))}for(u.__e=m,h=P;h--;)null!=x[h]&&(\"function\"==typeof u.type&&null!=x[h].__e&&x[h].__e==u.__d&&(u.__d=A(i).nextSibling),q(x[h],x[h]));if(w)for(h=0;h<w.length;h++)O(w[h],w[++h],w[++h])}function C(n,l,u){for(var i,t=n.__k,o=0;t&&o<t.length;o++)(i=t[o])&&(i.__=n,l=\"function\"==typeof i.type?C(i,l,u):$(u,i,i,t,i.__e,l));return l}function S(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(v(n)?n.some(function(n){S(n,l)}):l.push(n)),l}function $(n,l,u,i,t,o){var r,f,e;if(void 0!==l.__d)r=l.__d,l.__d=void 0;else if(null==u||t!=o||null==t.parentNode)n:if(null==o||o.parentNode!==n)n.appendChild(t),r=null;else{for(f=o,e=0;(f=f.nextSibling)&&e<i.length;e+=1)if(f==t)break n;n.insertBefore(t,o),r=o}return void 0!==r?r:t.nextSibling}function A(n){var l,u,i;if(null==n.type||\"string\"==typeof n.type)return n.__e;if(n.__k)for(l=n.__k.length-1;l>=0;l--)if((u=n.__k[l])&&(i=A(u)))return i;return null}function H(n,l,u,i,t){var o;for(o in u)\"children\"===o||\"key\"===o||o in l||T(n,o,null,u[o],i);for(o in l)t&&\"function\"!=typeof l[o]||\"children\"===o||\"key\"===o||\"value\"===o||\"checked\"===o||u[o]===l[o]||T(n,o,l[o],u[o],i)}function I(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function T(n,l,u,i,t){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof i&&(n.style.cssText=i=\"\"),i)for(l in i)u&&l in u||I(n.style,l,\"\");if(u)for(l in u)i&&u[l]===i[l]||I(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/Capture$/,\"\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?i||n.addEventListener(l,o?z:j,o):n.removeEventListener(l,o?z:j,o);else if(\"dangerouslySetInnerHTML\"!==l){if(t)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&\"rowSpan\"!==l&&\"colSpan\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!==l[4]?n.removeAttribute(l):n.setAttribute(l,u))}}function j(n){return this.l[n.type+!1](l.event?l.event(n):n)}function z(n){return this.l[n.type+!0](l.event?l.event(n):n)}function L(n,u,i,t,o,r,f,e,c){var s,a,p,y,d,_,g,m,w,x,C,S,$,A,H,I=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(s=l.__b)&&s(u);try{n:if(\"function\"==typeof I){if(m=u.props,w=(s=I.contextType)&&t[s.__c],x=s?w?w.props.value:s.__:t,i.__c?g=(a=u.__c=i.__c).__=a.__E:(\"prototype\"in I&&I.prototype.render?u.__c=a=new I(m,x):(u.__c=a=new b(m,x),a.constructor=I,a.render=B),w&&w.sub(a),a.props=m,a.state||(a.state={}),a.context=x,a.__n=t,p=a.__d=!0,a.__h=[],a._sb=[]),null==a.__s&&(a.__s=a.state),null!=I.getDerivedStateFromProps&&(a.__s==a.state&&(a.__s=h({},a.__s)),h(a.__s,I.getDerivedStateFromProps(m,a.__s))),y=a.props,d=a.state,a.__v=u,p)null==I.getDerivedStateFromProps&&null!=a.componentWillMount&&a.componentWillMount(),null!=a.componentDidMount&&a.__h.push(a.componentDidMount);else{if(null==I.getDerivedStateFromProps&&m!==y&&null!=a.componentWillReceiveProps&&a.componentWillReceiveProps(m,x),!a.__e&&null!=a.shouldComponentUpdate&&!1===a.shouldComponentUpdate(m,a.__s,x)||u.__v===i.__v){for(u.__v!==i.__v&&(a.props=m,a.state=a.__s,a.__d=!1),a.__e=!1,u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u)}),C=0;C<a._sb.length;C++)a.__h.push(a._sb[C]);a._sb=[],a.__h.length&&f.push(a);break n}null!=a.componentWillUpdate&&a.componentWillUpdate(m,a.__s,x),null!=a.componentDidUpdate&&a.__h.push(function(){a.componentDidUpdate(y,d,_)})}if(a.context=x,a.props=m,a.__P=n,S=l.__r,$=0,\"prototype\"in I&&I.prototype.render){for(a.state=a.__s,a.__d=!1,S&&S(u),s=a.render(a.props,a.state,a.context),A=0;A<a._sb.length;A++)a.__h.push(a._sb[A]);a._sb=[]}else do{a.__d=!1,S&&S(u),s=a.render(a.props,a.state,a.context),a.state=a.__s}while(a.__d&&++$<25);a.state=a.__s,null!=a.getChildContext&&(t=h(h({},t),a.getChildContext())),p||null==a.getSnapshotBeforeUpdate||(_=a.getSnapshotBeforeUpdate(y,d)),P(n,v(H=null!=s&&s.type===k&&null==s.key?s.props.children:s)?H:[H],u,i,t,o,r,f,e,c),a.base=u.__e,u.__h=null,a.__h.length&&f.push(a),g&&(a.__E=a.__=null),a.__e=!1}else null==r&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=N(i.__e,u,i,t,o,r,f,c);(s=l.diffed)&&s(u)}catch(n){u.__v=null,(c||null!=r)&&(u.__e=e,u.__h=!!c,r[r.indexOf(e)]=null),l.__e(n,u,i)}}function M(n,u){l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function N(l,u,i,t,o,r,f,e){var s,a,h,y=i.props,d=u.props,_=u.type,k=0;if(\"svg\"===_&&(o=!0),null!=r)for(;k<r.length;k++)if((s=r[k])&&\"setAttribute\"in s==!!_&&(_?s.localName===_:3===s.nodeType)){l=s,r[k]=null;break}if(null==l){if(null===_)return document.createTextNode(d);l=o?document.createElementNS(\"http://www.w3.org/2000/svg\",_):document.createElement(_,d.is&&d),r=null,e=!1}if(null===_)y===d||e&&l.data===d||(l.data=d);else{if(r=r&&n.call(l.childNodes),a=(y=i.props||c).dangerouslySetInnerHTML,h=d.dangerouslySetInnerHTML,!e){if(null!=r)for(y={},k=0;k<l.attributes.length;k++)y[l.attributes[k].name]=l.attributes[k].value;(h||a)&&(h&&(a&&h.__html==a.__html||h.__html===l.innerHTML)||(l.innerHTML=h&&h.__html||\"\"))}if(H(l,d,y,o,e),h)u.__k=[];else if(P(l,v(k=u.props.children)?k:[k],u,i,t,o&&\"foreignObject\"!==_,r,f,r?r[0]:i.__k&&g(i,0),e),null!=r)for(k=r.length;k--;)null!=r[k]&&p(r[k]);e||(\"value\"in d&&void 0!==(k=d.value)&&(k!==l.value||\"progress\"===_&&!k||\"option\"===_&&k!==y.value)&&T(l,\"value\",k,y.value,!1),\"checked\"in d&&void 0!==(k=d.checked)&&k!==l.checked&&T(l,\"checked\",k,y.checked,!1))}return l}function O(n,u,i){try{\"function\"==typeof n?n(u):n.current=u}catch(n){l.__e(n,i)}}function q(n,u,i){var t,o;if(l.unmount&&l.unmount(n),(t=n.ref)&&(t.current&&t.current!==n.__e||O(t,null,u)),null!=(t=n.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount()}catch(n){l.__e(n,u)}t.base=t.__P=null,n.__c=void 0}if(t=n.__k)for(o=0;o<t.length;o++)t[o]&&q(t[o],u,i||\"function\"!=typeof n.type);i||null==n.__e||p(n.__e),n.__=n.__e=n.__d=void 0}function B(n,l,u){return this.constructor(n,u)}function D(u,i,t){var o,r,f;l.__&&l.__(u,i),r=(o=\"function\"==typeof t)?null:t&&t.__k||i.__k,f=[],L(i,u=(!o&&t||i).__k=y(k,null,[u]),r||c,c,void 0!==i.ownerSVGElement,!o&&t?[t]:r?null:i.firstChild?n.call(i.childNodes):null,f,!o&&t?t:r?r.__e:i.firstChild,o),M(f,u)}function E(n,l){D(n,l,E)}function F(l,u,i){var t,o,r,f,e=h({},l.props);for(r in l.type&&l.type.defaultProps&&(f=l.type.defaultProps),u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:e[r]=void 0===u[r]&&void 0!==f?f[r]:u[r];return arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):i),d(l.type,e,t||l.key,o||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,w(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,i){for(var t,o,r;l=l.__;)if((t=l.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(n)),r=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),r=t.__d),r)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},b.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),\"function\"==typeof n&&(n=n(h({},u),this.props)),n&&h(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),w(this))},b.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),w(this))},b.prototype.render=k,t=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},x.__r=0,e=0;export{b as Component,k as Fragment,F as cloneElement,G as createContext,y as createElement,_ as createRef,y as h,E as hydrate,i as isValidElement,l as options,D as render,S as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=[],e=n.__b,a=n.__r,v=n.diffed,l=n.__c,m=n.unmount;function d(t,u){n.__h&&n.__h(r,t,o||u),o=0;var i=r.__H||(r.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({__V:c}),i.__[t]}function h(n){return o=1,s(B,n)}function s(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):B(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!c||c.call(this,n,t,r))};r.u=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function p(u,i){var o=d(t++,3);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__H.__h.push(o))}function y(u,i){var o=d(t++,4);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__h.push(o))}function _(n){return o=5,F(function(){return{current:n}},[])}function A(n,t,r){o=6,y(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function F(n,r){var u=d(t++,7);return z(u.__H,r)?(u.__V=n(),u.i=r,u.__h=n,u.__V):u.__}function T(n,t){return o=8,F(function(){return n},t)}function q(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function x(t,r){n.useDebugValue&&n.useDebugValue(r?r(t):t)}function P(n){var u=d(t++,10),i=h();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function V(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function b(){for(var t;t=f.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(k),t.__H.__h.forEach(w),t.__H.__h=[]}catch(r){t.__H.__h=[],n.__e(r,t.__v)}}n.__b=function(n){r=null,e&&e(n)},n.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=c,n.__N=n.i=void 0})):(i.__h.forEach(k),i.__h.forEach(w),i.__h=[],t=0)),u=r},n.diffed=function(t){v&&v(t);var o=t.__c;o&&o.__H&&(o.__H.__h.length&&(1!==f.push(o)&&i===n.requestAnimationFrame||((i=n.requestAnimationFrame)||j)(b)),o.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==c&&(n.__=n.__V),n.i=void 0,n.__V=c})),u=r=null},n.__c=function(t,r){r.some(function(t){try{t.__h.forEach(k),t.__h=t.__h.filter(function(n){return!n.__||w(n)})}catch(u){r.some(function(n){n.__h&&(n.__h=[])}),r=[],n.__e(u,t.__v)}}),l&&l(t,r)},n.unmount=function(t){m&&m(t);var r,u=t.__c;u&&u.__H&&(u.__H.__.forEach(function(n){try{k(n)}catch(n){r=n}}),u.__H=void 0,r&&n.__e(r,u.__v))};var g=\"function\"==typeof requestAnimationFrame;function j(n){var t,r=function(){clearTimeout(u),g&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);g&&(t=requestAnimationFrame(r))}function k(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function w(n){var t=r;n.__c=n.__(),r=t}function z(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function B(n,t){return\"function\"==typeof t?t(n):t}export{T as useCallback,q as useContext,x as useDebugValue,p as useEffect,P as useErrorBoundary,V as useId,A as useImperativeHandle,y as useLayoutEffect,F as useMemo,s as useReducer,_ as useRef,h as useState};\n//# sourceMappingURL=hooks.module.js.map\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n\n var _loop = function _loop(key) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = function () {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n\n for (var key in actionCreators) {\n _loop(key);\n }\n\n return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(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))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (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 (_) 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};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscriptionClient = void 0;\nvar _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});\nvar NativeWebSocket = _global.WebSocket || _global.MozWebSocket;\nvar Backoff = require(\"backo2\");\nvar eventemitter3_1 = require(\"eventemitter3\");\nvar is_string_1 = require(\"./utils/is-string\");\nvar is_object_1 = require(\"./utils/is-object\");\nvar printer_1 = require(\"graphql/language/printer\");\nvar getOperationAST_1 = require(\"graphql/utilities/getOperationAST\");\nvar symbol_observable_1 = require(\"symbol-observable\");\nvar protocol_1 = require(\"./protocol\");\nvar defaults_1 = require(\"./defaults\");\nvar message_types_1 = require(\"./message-types\");\nvar SubscriptionClient = (function () {\n function SubscriptionClient(url, options, webSocketImpl, webSocketProtocols) {\n var _a = (options || {}), _b = _a.connectionCallback, connectionCallback = _b === void 0 ? undefined : _b, _c = _a.connectionParams, connectionParams = _c === void 0 ? {} : _c, _d = _a.minTimeout, minTimeout = _d === void 0 ? defaults_1.MIN_WS_TIMEOUT : _d, _e = _a.timeout, timeout = _e === void 0 ? defaults_1.WS_TIMEOUT : _e, _f = _a.reconnect, reconnect = _f === void 0 ? false : _f, _g = _a.reconnectionAttempts, reconnectionAttempts = _g === void 0 ? Infinity : _g, _h = _a.lazy, lazy = _h === void 0 ? false : _h, _j = _a.inactivityTimeout, inactivityTimeout = _j === void 0 ? 0 : _j, _k = _a.wsOptionArguments, wsOptionArguments = _k === void 0 ? [] : _k;\n this.wsImpl = webSocketImpl || NativeWebSocket;\n if (!this.wsImpl) {\n throw new Error('Unable to find native implementation, or alternative implementation for WebSocket!');\n }\n this.wsProtocols = webSocketProtocols || protocol_1.GRAPHQL_WS;\n this.connectionCallback = connectionCallback;\n this.url = url;\n this.operations = {};\n this.nextOperationId = 0;\n this.minWsTimeout = minTimeout;\n this.wsTimeout = timeout;\n this.unsentMessagesQueue = [];\n this.reconnect = reconnect;\n this.reconnecting = false;\n this.reconnectionAttempts = reconnectionAttempts;\n this.lazy = !!lazy;\n this.inactivityTimeout = inactivityTimeout;\n this.closedByUser = false;\n this.backoff = new Backoff({ jitter: 0.5 });\n this.eventEmitter = new eventemitter3_1.EventEmitter();\n this.middlewares = [];\n this.client = null;\n this.maxConnectTimeGenerator = this.createMaxConnectTimeGenerator();\n this.connectionParams = this.getConnectionParams(connectionParams);\n this.wsOptionArguments = wsOptionArguments;\n if (!this.lazy) {\n this.connect();\n }\n }\n Object.defineProperty(SubscriptionClient.prototype, \"status\", {\n get: function () {\n if (this.client === null) {\n return this.wsImpl.CLOSED;\n }\n return this.client.readyState;\n },\n enumerable: false,\n configurable: true\n });\n SubscriptionClient.prototype.close = function (isForced, closedByUser) {\n if (isForced === void 0) { isForced = true; }\n if (closedByUser === void 0) { closedByUser = true; }\n this.clearInactivityTimeout();\n if (this.client !== null) {\n this.closedByUser = closedByUser;\n if (isForced) {\n this.clearCheckConnectionInterval();\n this.clearMaxConnectTimeout();\n this.clearTryReconnectTimeout();\n this.unsubscribeAll();\n this.sendMessage(undefined, message_types_1.default.GQL_CONNECTION_TERMINATE, null);\n }\n this.client.close();\n this.client.onopen = null;\n this.client.onclose = null;\n this.client.onerror = null;\n this.client.onmessage = null;\n this.client = null;\n this.eventEmitter.emit('disconnected');\n if (!isForced) {\n this.tryReconnect();\n }\n }\n };\n SubscriptionClient.prototype.request = function (request) {\n var _a;\n var getObserver = this.getObserver.bind(this);\n var executeOperation = this.executeOperation.bind(this);\n var unsubscribe = this.unsubscribe.bind(this);\n var opId;\n this.clearInactivityTimeout();\n return _a = {},\n _a[symbol_observable_1.default] = function () {\n return this;\n },\n _a.subscribe = function (observerOrNext, onError, onComplete) {\n var observer = getObserver(observerOrNext, onError, onComplete);\n opId = executeOperation(request, function (error, result) {\n if (error === null && result === null) {\n if (observer.complete) {\n observer.complete();\n }\n }\n else if (error) {\n if (observer.error) {\n observer.error(error[0]);\n }\n }\n else {\n if (observer.next) {\n observer.next(result);\n }\n }\n });\n return {\n unsubscribe: function () {\n if (opId) {\n unsubscribe(opId);\n opId = null;\n }\n },\n };\n },\n _a;\n };\n SubscriptionClient.prototype.on = function (eventName, callback, context) {\n var handler = this.eventEmitter.on(eventName, callback, context);\n return function () {\n handler.off(eventName, callback, context);\n };\n };\n SubscriptionClient.prototype.onConnected = function (callback, context) {\n return this.on('connected', callback, context);\n };\n SubscriptionClient.prototype.onConnecting = function (callback, context) {\n return this.on('connecting', callback, context);\n };\n SubscriptionClient.prototype.onDisconnected = function (callback, context) {\n return this.on('disconnected', callback, context);\n };\n SubscriptionClient.prototype.onReconnected = function (callback, context) {\n return this.on('reconnected', callback, context);\n };\n SubscriptionClient.prototype.onReconnecting = function (callback, context) {\n return this.on('reconnecting', callback, context);\n };\n SubscriptionClient.prototype.onError = function (callback, context) {\n return this.on('error', callback, context);\n };\n SubscriptionClient.prototype.unsubscribeAll = function () {\n var _this = this;\n Object.keys(this.operations).forEach(function (subId) {\n _this.unsubscribe(subId);\n });\n };\n SubscriptionClient.prototype.applyMiddlewares = function (options) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var queue = function (funcs, scope) {\n var next = function (error) {\n if (error) {\n reject(error);\n }\n else {\n if (funcs.length > 0) {\n var f = funcs.shift();\n if (f) {\n f.applyMiddleware.apply(scope, [options, next]);\n }\n }\n else {\n resolve(options);\n }\n }\n };\n next();\n };\n queue(__spreadArrays(_this.middlewares), _this);\n });\n };\n SubscriptionClient.prototype.use = function (middlewares) {\n var _this = this;\n middlewares.map(function (middleware) {\n if (typeof middleware.applyMiddleware === 'function') {\n _this.middlewares.push(middleware);\n }\n else {\n throw new Error('Middleware must implement the applyMiddleware function.');\n }\n });\n return this;\n };\n SubscriptionClient.prototype.getConnectionParams = function (connectionParams) {\n return function () { return new Promise(function (resolve, reject) {\n if (typeof connectionParams === 'function') {\n try {\n return resolve(connectionParams.call(null));\n }\n catch (error) {\n return reject(error);\n }\n }\n resolve(connectionParams);\n }); };\n };\n SubscriptionClient.prototype.executeOperation = function (options, handler) {\n var _this = this;\n if (this.client === null) {\n this.connect();\n }\n var opId = this.generateOperationId();\n this.operations[opId] = { options: options, handler: handler };\n this.applyMiddlewares(options)\n .then(function (processedOptions) {\n _this.checkOperationOptions(processedOptions, handler);\n if (_this.operations[opId]) {\n _this.operations[opId] = { options: processedOptions, handler: handler };\n _this.sendMessage(opId, message_types_1.default.GQL_START, processedOptions);\n }\n })\n .catch(function (error) {\n _this.unsubscribe(opId);\n handler(_this.formatErrors(error));\n });\n return opId;\n };\n SubscriptionClient.prototype.getObserver = function (observerOrNext, error, complete) {\n if (typeof observerOrNext === 'function') {\n return {\n next: function (v) { return observerOrNext(v); },\n error: function (e) { return error && error(e); },\n complete: function () { return complete && complete(); },\n };\n }\n return observerOrNext;\n };\n SubscriptionClient.prototype.createMaxConnectTimeGenerator = function () {\n var minValue = this.minWsTimeout;\n var maxValue = this.wsTimeout;\n return new Backoff({\n min: minValue,\n max: maxValue,\n factor: 1.2,\n });\n };\n SubscriptionClient.prototype.clearCheckConnectionInterval = function () {\n if (this.checkConnectionIntervalId) {\n clearInterval(this.checkConnectionIntervalId);\n this.checkConnectionIntervalId = null;\n }\n };\n SubscriptionClient.prototype.clearMaxConnectTimeout = function () {\n if (this.maxConnectTimeoutId) {\n clearTimeout(this.maxConnectTimeoutId);\n this.maxConnectTimeoutId = null;\n }\n };\n SubscriptionClient.prototype.clearTryReconnectTimeout = function () {\n if (this.tryReconnectTimeoutId) {\n clearTimeout(this.tryReconnectTimeoutId);\n this.tryReconnectTimeoutId = null;\n }\n };\n SubscriptionClient.prototype.clearInactivityTimeout = function () {\n if (this.inactivityTimeoutId) {\n clearTimeout(this.inactivityTimeoutId);\n this.inactivityTimeoutId = null;\n }\n };\n SubscriptionClient.prototype.setInactivityTimeout = function () {\n var _this = this;\n if (this.inactivityTimeout > 0 && Object.keys(this.operations).length === 0) {\n this.inactivityTimeoutId = setTimeout(function () {\n if (Object.keys(_this.operations).length === 0) {\n _this.close();\n }\n }, this.inactivityTimeout);\n }\n };\n SubscriptionClient.prototype.checkOperationOptions = function (options, handler) {\n var query = options.query, variables = options.variables, operationName = options.operationName;\n if (!query) {\n throw new Error('Must provide a query.');\n }\n if (!handler) {\n throw new Error('Must provide an handler.');\n }\n if ((!is_string_1.default(query) && !getOperationAST_1.getOperationAST(query, operationName)) ||\n (operationName && !is_string_1.default(operationName)) ||\n (variables && !is_object_1.default(variables))) {\n throw new Error('Incorrect option types. query must be a string or a document,' +\n '`operationName` must be a string, and `variables` must be an object.');\n }\n };\n SubscriptionClient.prototype.buildMessage = function (id, type, payload) {\n var payloadToReturn = payload && payload.query ? __assign(__assign({}, payload), { query: typeof payload.query === 'string' ? payload.query : printer_1.print(payload.query) }) :\n payload;\n return {\n id: id,\n type: type,\n payload: payloadToReturn,\n };\n };\n SubscriptionClient.prototype.formatErrors = function (errors) {\n if (Array.isArray(errors)) {\n return errors;\n }\n if (errors && errors.errors) {\n return this.formatErrors(errors.errors);\n }\n if (errors && errors.message) {\n return [errors];\n }\n return [{\n name: 'FormatedError',\n message: 'Unknown error',\n originalError: errors,\n }];\n };\n SubscriptionClient.prototype.sendMessage = function (id, type, payload) {\n this.sendMessageRaw(this.buildMessage(id, type, payload));\n };\n SubscriptionClient.prototype.sendMessageRaw = function (message) {\n switch (this.status) {\n case this.wsImpl.OPEN:\n var serializedMessage = JSON.stringify(message);\n try {\n JSON.parse(serializedMessage);\n }\n catch (e) {\n this.eventEmitter.emit('error', new Error(\"Message must be JSON-serializable. Got: \" + message));\n }\n this.client.send(serializedMessage);\n break;\n case this.wsImpl.CONNECTING:\n this.unsentMessagesQueue.push(message);\n break;\n default:\n if (!this.reconnecting) {\n this.eventEmitter.emit('error', new Error('A message was not sent because socket is not connected, is closing or ' +\n 'is already closed. Message was: ' + JSON.stringify(message)));\n }\n }\n };\n SubscriptionClient.prototype.generateOperationId = function () {\n return String(++this.nextOperationId);\n };\n SubscriptionClient.prototype.tryReconnect = function () {\n var _this = this;\n if (!this.reconnect || this.backoff.attempts >= this.reconnectionAttempts) {\n return;\n }\n if (!this.reconnecting) {\n Object.keys(this.operations).forEach(function (key) {\n _this.unsentMessagesQueue.push(_this.buildMessage(key, message_types_1.default.GQL_START, _this.operations[key].options));\n });\n this.reconnecting = true;\n }\n this.clearTryReconnectTimeout();\n var delay = this.backoff.duration();\n this.tryReconnectTimeoutId = setTimeout(function () {\n _this.connect();\n }, delay);\n };\n SubscriptionClient.prototype.flushUnsentMessagesQueue = function () {\n var _this = this;\n this.unsentMessagesQueue.forEach(function (message) {\n _this.sendMessageRaw(message);\n });\n this.unsentMessagesQueue = [];\n };\n SubscriptionClient.prototype.checkConnection = function () {\n if (this.wasKeepAliveReceived) {\n this.wasKeepAliveReceived = false;\n return;\n }\n if (!this.reconnecting) {\n this.close(false, true);\n }\n };\n SubscriptionClient.prototype.checkMaxConnectTimeout = function () {\n var _this = this;\n this.clearMaxConnectTimeout();\n this.maxConnectTimeoutId = setTimeout(function () {\n if (_this.status !== _this.wsImpl.OPEN) {\n _this.reconnecting = true;\n _this.close(false, true);\n }\n }, this.maxConnectTimeGenerator.duration());\n };\n SubscriptionClient.prototype.connect = function () {\n var _a;\n var _this = this;\n this.client = new ((_a = this.wsImpl).bind.apply(_a, __spreadArrays([void 0, this.url, this.wsProtocols], this.wsOptionArguments)))();\n this.checkMaxConnectTimeout();\n this.client.onopen = function () { return __awaiter(_this, void 0, void 0, function () {\n var connectionParams, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this.status === this.wsImpl.OPEN)) return [3, 4];\n this.clearMaxConnectTimeout();\n this.closedByUser = false;\n this.eventEmitter.emit(this.reconnecting ? 'reconnecting' : 'connecting');\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4, this.connectionParams()];\n case 2:\n connectionParams = _a.sent();\n this.sendMessage(undefined, message_types_1.default.GQL_CONNECTION_INIT, connectionParams);\n this.flushUnsentMessagesQueue();\n return [3, 4];\n case 3:\n error_1 = _a.sent();\n this.sendMessage(undefined, message_types_1.default.GQL_CONNECTION_ERROR, error_1);\n this.flushUnsentMessagesQueue();\n return [3, 4];\n case 4: return [2];\n }\n });\n }); };\n this.client.onclose = function () {\n if (!_this.closedByUser) {\n _this.close(false, false);\n }\n };\n this.client.onerror = function (err) {\n _this.eventEmitter.emit('error', err);\n };\n this.client.onmessage = function (_a) {\n var data = _a.data;\n _this.processReceivedData(data);\n };\n };\n SubscriptionClient.prototype.processReceivedData = function (receivedData) {\n var parsedMessage;\n var opId;\n try {\n parsedMessage = JSON.parse(receivedData);\n opId = parsedMessage.id;\n }\n catch (e) {\n throw new Error(\"Message must be JSON-parseable. Got: \" + receivedData);\n }\n if ([message_types_1.default.GQL_DATA,\n message_types_1.default.GQL_COMPLETE,\n message_types_1.default.GQL_ERROR,\n ].indexOf(parsedMessage.type) !== -1 && !this.operations[opId]) {\n this.unsubscribe(opId);\n return;\n }\n switch (parsedMessage.type) {\n case message_types_1.default.GQL_CONNECTION_ERROR:\n if (this.connectionCallback) {\n this.connectionCallback(parsedMessage.payload);\n }\n break;\n case message_types_1.default.GQL_CONNECTION_ACK:\n this.eventEmitter.emit(this.reconnecting ? 'reconnected' : 'connected', parsedMessage.payload);\n this.reconnecting = false;\n this.backoff.reset();\n this.maxConnectTimeGenerator.reset();\n if (this.connectionCallback) {\n this.connectionCallback();\n }\n break;\n case message_types_1.default.GQL_COMPLETE:\n var handler = this.operations[opId].handler;\n delete this.operations[opId];\n handler.call(this, null, null);\n break;\n case message_types_1.default.GQL_ERROR:\n this.operations[opId].handler(this.formatErrors(parsedMessage.payload), null);\n delete this.operations[opId];\n break;\n case message_types_1.default.GQL_DATA:\n var parsedPayload = !parsedMessage.payload.errors ?\n parsedMessage.payload : __assign(__assign({}, parsedMessage.payload), { errors: this.formatErrors(parsedMessage.payload.errors) });\n this.operations[opId].handler(null, parsedPayload);\n break;\n case message_types_1.default.GQL_CONNECTION_KEEP_ALIVE:\n var firstKA = typeof this.wasKeepAliveReceived === 'undefined';\n this.wasKeepAliveReceived = true;\n if (firstKA) {\n this.checkConnection();\n }\n if (this.checkConnectionIntervalId) {\n clearInterval(this.checkConnectionIntervalId);\n this.checkConnection();\n }\n this.checkConnectionIntervalId = setInterval(this.checkConnection.bind(this), this.wsTimeout);\n break;\n default:\n throw new Error('Invalid message type!');\n }\n };\n SubscriptionClient.prototype.unsubscribe = function (opId) {\n if (this.operations[opId]) {\n delete this.operations[opId];\n this.setInactivityTimeout();\n this.sendMessage(opId, message_types_1.default.GQL_STOP, undefined);\n }\n };\n return SubscriptionClient;\n}());\nexports.SubscriptionClient = SubscriptionClient;\n//# sourceMappingURL=client.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WS_TIMEOUT = exports.MIN_WS_TIMEOUT = void 0;\nvar MIN_WS_TIMEOUT = 1000;\nexports.MIN_WS_TIMEOUT = MIN_WS_TIMEOUT;\nvar WS_TIMEOUT = 30000;\nexports.WS_TIMEOUT = WS_TIMEOUT;\n//# sourceMappingURL=defaults.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MessageTypes = (function () {\n function MessageTypes() {\n throw new Error('Static Class');\n }\n MessageTypes.GQL_CONNECTION_INIT = 'connection_init';\n MessageTypes.GQL_CONNECTION_ACK = 'connection_ack';\n MessageTypes.GQL_CONNECTION_ERROR = 'connection_error';\n MessageTypes.GQL_CONNECTION_KEEP_ALIVE = 'ka';\n MessageTypes.GQL_CONNECTION_TERMINATE = 'connection_terminate';\n MessageTypes.GQL_START = 'start';\n MessageTypes.GQL_DATA = 'data';\n MessageTypes.GQL_ERROR = 'error';\n MessageTypes.GQL_COMPLETE = 'complete';\n MessageTypes.GQL_STOP = 'stop';\n MessageTypes.SUBSCRIPTION_START = 'subscription_start';\n MessageTypes.SUBSCRIPTION_DATA = 'subscription_data';\n MessageTypes.SUBSCRIPTION_SUCCESS = 'subscription_success';\n MessageTypes.SUBSCRIPTION_FAIL = 'subscription_fail';\n MessageTypes.SUBSCRIPTION_END = 'subscription_end';\n MessageTypes.INIT = 'init';\n MessageTypes.INIT_SUCCESS = 'init_success';\n MessageTypes.INIT_FAIL = 'init_fail';\n MessageTypes.KEEP_ALIVE = 'keepalive';\n return MessageTypes;\n}());\nexports.default = MessageTypes;\n//# sourceMappingURL=message-types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GRAPHQL_SUBSCRIPTIONS = exports.GRAPHQL_WS = void 0;\nvar GRAPHQL_WS = 'graphql-ws';\nexports.GRAPHQL_WS = GRAPHQL_WS;\nvar GRAPHQL_SUBSCRIPTIONS = 'graphql-subscriptions';\nexports.GRAPHQL_SUBSCRIPTIONS = GRAPHQL_SUBSCRIPTIONS;\n//# sourceMappingURL=protocol.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isObject(value) {\n return ((value !== null) && (typeof value === 'object'));\n}\nexports.default = isObject;\n//# sourceMappingURL=is-object.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isString(value) {\n return typeof value === 'string';\n}\nexports.default = isString;\n//# sourceMappingURL=is-string.js.map","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","import { ApolloProvider } from \"@apollo/client\";\nimport { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport type { RouterOnChangeArgs } from \"preact-router\";\nimport Router, { Route } from \"preact-router\";\nimport { Provider } from \"react-redux\";\nimport \"./App.scss\";\nimport { useLocalization, useTheme, useToggleNoConnectionBanner } from \"./hooks\";\nimport { useAppLayerFocus } from \"./hooks/useAppLayerFocus\";\nimport {\n AlbumPage,\n AppPromptPage,\n ArtistRadioPage,\n EditProfilePage,\n FrontPage,\n LayoutPage,\n MyMusicAlbumsPage,\n MyMusicArtistsPage,\n MyMusicPlaylistsPage,\n MyMusicTracksPage,\n PlaylistPage,\n ProfilesPage,\n SearchPage,\n TrackRadioPage\n} from \"components/pages\";\nimport { DefaultTemplate } from \"components/templates\";\nimport { store } from \"global\";\nimport { PrivateRoute, UnhandledRoute } from \"global/config\";\nimport { getOSName, OperatingSystemName } from \"services/app\";\nimport { graphqlClient } from \"services/backend\";\nimport { formatUrlToUTF8 } from \"services/navigation\";\nimport { useLoginState } from \"services/user\";\nimport { LoginState } from \"models/app\";\nimport { ContentType } from \"models/ModelType\";\nimport { useActiveAppLayer, useNativeMobileAppOpen } from \"components/shared/hooks\";\nimport { useAppMessages } from \"components/shared/hooks/useAppMessages\";\nimport { useShowNativeMobileAppPrompt } from \"components/shared/hooks/useShowNativeMobileAppPrompt\";\nimport \"components/shared/variables.scss\";\nimport { DragLabel } from \"components/atoms/dragLabel/DragLabel\";\nimport { PageLoadSpinner } from \"components/atoms/spinner\";\nimport { AppBanner, useBottomBanner } from \"components/molecules/banner\";\nimport { AppContextMenu } from \"components/organisms/contextMenu/AppContextMenu\";\nimport { SessionFrame } from \"components/organisms/login/sessionFrame/sessionFrame\";\nimport { AppModal } from \"components/organisms/modal\";\nimport { AppToast } from \"components/organisms/toast\";\nimport { ArtistPage } from \"components/pages/artistPage/ArtistPage\";\nimport { ChartPage } from \"components/pages/chartPage/ChartPage\";\nimport { NotFoundPage } from \"components/pages/errorPages/NotFoundPage\";\nimport { LiveRadioPage } from \"components/pages/liveRadio/LiveRadioPage\";\nimport { LiveRadioCategoryPage } from \"components/pages/liveRadioCategory/LiveRadioCategoryPage\";\nimport { MixRadioCategoryPage } from \"components/pages/mixRadioCategory/MixRadioCategoryPage\";\nimport { MixRadiosPage } from \"components/pages/mixRadios/MixRadiosPage\";\nimport { PlaylistCategoryPage } from \"components/pages/playlistCategory/PlaylistCategoryPage\";\nimport { RadioPage } from \"components/pages/radioPage/RadioPage\";\nimport { RecommendationPage } from \"components/pages/recommendationPage/RecommendationPage\";\nimport { SettingsPage } from \"components/pages/settingsPage/SettingsPage\";\nimport { AlbumArtistAlbumsShowAllPage } from \"components/pages/showAllPages/AlbumArtistAlbumsShowAllPage\";\nimport { ArtistAlbumsShowAllPage } from \"components/pages/showAllPages/ArtistAlbumsShowAllPage\";\nimport { ArtistAppearsOnShowAllPage } from \"components/pages/showAllPages/ArtistAppearsOnShowAllPage\";\nimport { ArtistAllTracksShowAllPage, ArtistPopularTracksShowAllPage } from \"components/pages/showAllPages/ArtistPopularTracksShowAllPage\";\nimport { ArtistSimilarArtistsShowAllPage } from \"components/pages/showAllPages/ArtistSimilarArtistsShowAllPage\";\nimport { ArtistSinglesShowAllPage } from \"components/pages/showAllPages/ArtistSinglesShowAllPage\";\nimport { FrontPageItemShowAllPage } from \"components/pages/showAllPages/FrontPageItemShowAllPage\";\nimport { LayoutPageItemShowAllPage } from \"components/pages/showAllPages/LayoutPageItemShowAllPage\";\nimport { RadioPageItemShowAllPage } from \"components/pages/showAllPages/RadioPageItemShowAllPage\";\nimport { SearchAlbumResultsShowAllPage } from \"components/pages/showAllPages/SearchAlbumResultsShowAllPage\";\nimport { SearchArtistResultsShowAllPage } from \"components/pages/showAllPages/SearchArtistResultsShowAllPage\";\nimport { SearchPlaylistResultsShowAllPage } from \"components/pages/showAllPages/SearchPlaylistResultsShowAllPage\";\nimport { SearchTrackResultsShowAllPage } from \"components/pages/showAllPages/SearchTrackResultsShowAllPage\";\nimport { UserHistoryPage } from \"components/pages/userHistory/UserHistoryPage\";\nimport { UserRecommendationsPage } from \"components/pages/userRecommendations/UserRecommendationsPage\";\nimport YourYear from \"components/pages/yourYearPage/YourYear\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n(window as any).store = store;\n\nconst _App = () => {\n useNativeMobileAppOpen();\n useAppMessages();\n useToggleNoConnectionBanner();\n\n const theme = useTheme();\n const local = useLocalization();\n const focus = useActiveAppLayer();\n const hasBottomBanner = useBottomBanner() != null;\n const loginStateIsKnown = useLoginState() !== LoginState.Unknown;\n\n const [mobileHeader, setMobileHeader] = useState(false);\n const [loginFallback, setLoginFallback] = useState<string>(\"/\");\n const { pagesRef, pageRef, modalRef, contextMenuRef } = useAppLayerFocus();\n const isOsWindows = getOSName() === OperatingSystemName.Windows;\n\n const handleRouteChange = useCallback(\n async ({ url, previous }: RouterOnChangeArgs) => {\n const isFrontPage = url === \"/\"; // todo change this to use type safe front page check\n if (isFrontPage !== mobileHeader) setMobileHeader(isFrontPage);\n\n if (previous && !previous.startsWith(\"/min-musik\")) {\n setLoginFallback(previous);\n } else {\n setLoginFallback(\"/\");\n }\n },\n [mobileHeader]\n );\n\n const isMobile = useShowNativeMobileAppPrompt();\n\n return (\n <div className={`app USk --theme-${theme} --local-${local} --focus-${focus} --hasBottomBanner-${hasBottomBanner} --isOsWindows-${isOsWindows}`}>\n <div className=\"pages\" ref={pagesRef}>\n {isMobile ? (\n <AppPromptPage />\n ) : (\n <DefaultTemplate pageRef={pageRef} mobileHeader={mobileHeader}>\n {loginStateIsKnown && (\n <Router onChange={handleRouteChange}>\n <PrivateRoute path=\"/min-musik/album\" component={MyMusicAlbumsPage} previous={loginFallback} />\n <PrivateRoute path=\"/min-musik/kunstnere\" component={MyMusicArtistsPage} previous={loginFallback} />\n <PrivateRoute path=\"/min-musik/playlister\" component={MyMusicPlaylistsPage} previous={loginFallback} />\n <PrivateRoute path=\"/min-musik/sange\" component={MyMusicTracksPage} previous={loginFallback} />\n <Route path=\"/indstillinger\" component={SettingsPage} />\n <PrivateRoute path=\"/profiler/:profileId\" component={EditProfilePage} previous={loginFallback} />\n <PrivateRoute path=\"/profiler\" component={ProfilesPage} previous={loginFallback} />\n <Route path=\"/\" component={FrontPage} />\n <Route path=\"/album/:albumId\" component={AlbumPage} />\n <Route path=\"/album/:albumId/sang/:trackId\" component={AlbumPage} />\n <Route path=\"/album/:albumId/vis-alle/kunstner-album\" component={AlbumArtistAlbumsShowAllPage} />\n <Route path=\"/anbefaling\" component={UserRecommendationsPage} />\n <Route path=\"/anbefaling/:recommendationId\" component={RecommendationPage} />\n <Route path=\"/forside/vis-alle/:itemId\" component={FrontPageItemShowAllPage} />\n <Route path=\"/forside/vis-alle/:itemId/:resourceId?\" component={FrontPageItemShowAllPage} />\n <Route path=\"/historik\" component={UserHistoryPage} />\n <Route path=\"/historik/:recommendationId\" component={RecommendationPage} />\n <Route path=\"/hitliste/:chartId\" component={ChartPage} />\n <Route path=\"/kunstner-radio/:artistId?\" component={ArtistRadioPage} />\n <Route path=\"/kunstner/:artistId\" component={ArtistPage} />\n <Route path=\"/kunstner/:artistId/vis-alle/album\" component={ArtistAlbumsShowAllPage} />\n <Route path=\"/kunstner/:artistId/vis-alle/lignende-kunstnere\" component={ArtistSimilarArtistsShowAllPage} />\n <Route path=\"/kunstner/:artistId/vis-alle/singler-og-ep\" component={ArtistSinglesShowAllPage} />\n <Route path=\"/kunstner/:artistId/vis-alle/alle-sange\" component={ArtistAllTracksShowAllPage} />\n <Route path=\"/live-radio-kategori/:liveRadioCategoryId\" component={LiveRadioCategoryPage} />\n <Route path=\"/live-radio/:liveRadioId\" component={LiveRadioPage} />\n <Route path=\"/more-music-kategori/:mixRadioCategoryId/:mixRadioId?\" component={MixRadioCategoryPage} />\n <Route path=\"/more-music/:mixRadioId?\" component={MixRadiosPage} />\n <Route path=\"/playliste-kategori/:playlistCategoryId\" component={PlaylistCategoryPage} />\n <Route path=\"/playliste/:playlistId\" component={PlaylistPage} />\n <Route path=\"/radio\" component={RadioPage} />\n <Route path=\"/stationer\" component={RadioPage} />\n <Route path=\"/radio/vis-alle/:itemId/:resourceId?\" component={RadioPageItemShowAllPage} />\n <Route path=\"/stationer/vis-alle/:itemId/:resourceId?\" component={RadioPageItemShowAllPage} />\n <Route path=\"/sang-radio/:trackId?\" component={TrackRadioPage} />\n <Route path=\"/sang/:trackId\" component={AlbumPage} />\n {/*Your Year 2024 hardcoded ID for YouSee*/}\n <Route path=\"/side/66fbb8217bbc72aeaa3d45c9\" component={YourYear} />\n {/*Your Year 2024 hardcoded ID for Telmore*/}\n <Route path=\"/side/671777bead10f3eb4717fd90\" component={YourYear} />\n <Route path=\"/side/:pageId\" component={LayoutPage} />\n <Route path=\"/side/:pageId/vis-alle/:itemId/:resourceId?\" component={LayoutPageItemShowAllPage} pageType={ContentType.ThemePageShowAll} />\n <Route path=\"/udforsk\" component={SearchPage} />\n <Route path={formatUrlToUTF8(\"/søgning/album/vis-alle/:criterion\")} component={SearchAlbumResultsShowAllPage} />\n <Route path={formatUrlToUTF8(\"/søgning/kunstnere/vis-alle/:criterion\")} component={SearchArtistResultsShowAllPage} />\n <Route path={formatUrlToUTF8(\"/søgning/playlister/vis-alle/:criterion\")} component={SearchPlaylistResultsShowAllPage} />\n <Route path={formatUrlToUTF8(\"/søgning/sange/vis-alle/:criterion\")} component={SearchTrackResultsShowAllPage} />\n <Route path={formatUrlToUTF8(`/kunstner/:artistId/vis-alle/populære-sange`)} component={ArtistPopularTracksShowAllPage} />\n <Route path={formatUrlToUTF8(`/kunstner/:artistId/vis-alle/optræder-på`)} component={ArtistAppearsOnShowAllPage} />\n <UnhandledRoute default component={NotFoundPage} />\n </Router>\n )}\n {!loginStateIsKnown && <PageLoadSpinner />}\n </DefaultTemplate>\n )}\n <AppBanner />\n </div>\n <AppToast className=\"toasts\" />\n <AppModal ref={modalRef} className=\"modals\" />\n <AppContextMenu ref={contextMenuRef} className=\"contextMenus\" />\n <DragLabel />\n <SessionFrame />\n </div>\n );\n};\n\nexport const App = () => {\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <ApolloProvider client={graphqlClient as any}>\n <Provider store={store}>\n <_App />\n </Provider>\n </ApolloProvider>\n );\n};\n","export * from \"./useTheme\";\nexport * from \"./useLocalization\";\nexport * from \"./useToggleNoConnectionBanner\";\nexport * from \"./useAppContextMenus\";\n","import { useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { getContextMenuAppSheets } from \"services/contextMenus\";\nimport { RootModel } from \"models/app\";\n\nexport const useContextMenus = () => {\n const menu = useSelector((root: RootModel) => root.menu);\n const open = useMemo(() => getContextMenuAppSheets(menu), [menu]);\n\n const visible = useSelector((root: RootModel) => root.menu.visible);\n const isOpen = open.length > 0 || visible.length > 0;\n\n return { open, visible, isOpen };\n};\n","import { useLayoutEffect, useCallback } from \"preact/hooks\";\nimport { useActiveAppLayer, AppLayer, useRefUpdate } from \"components/shared/hooks\";\n\nexport function useAppLayerFocus() {\n const pagesRef = useRefUpdate<HTMLDivElement>();\n const pageRef = useRefUpdate<HTMLDivElement>();\n const modalRef = useRefUpdate<HTMLDialogElement>();\n const contextMenuRef = useRefUpdate<HTMLDialogElement>();\n\n const pagesEl = (pagesRef.current ?? null) as HTMLElement | null;\n const pageEl = (pageRef.current ?? null) as HTMLElement | null;\n const modalEl = (modalRef.current ?? null) as HTMLElement | null;\n const contextMenuEl = (contextMenuRef.current ?? null) as HTMLElement | null;\n const active = useActiveAppLayer();\n\n const setFocus = useCallback(() => {\n switch (active) {\n case AppLayer.Page: {\n if (pagesEl && pageEl) trySetFocusWithin(pagesEl, pageEl);\n return;\n }\n case AppLayer.Modal: {\n if (modalEl) trySetFocusWithin(modalEl, modalEl);\n return;\n }\n case AppLayer.ContextMenu: {\n if (contextMenuEl) trySetFocusWithin(contextMenuEl, contextMenuEl);\n return;\n }\n }\n }, [active, pagesEl, pageEl, modalEl, contextMenuEl]);\n\n useLayoutEffect(() => {\n {\n const elements = [pagesEl, modalEl, contextMenuEl];\n elements.forEach((element) => element?.addEventListener(\"focusin\", setFocus, { passive: true }));\n elements.forEach((element) => element?.addEventListener(\"focusout\", setFocus, { passive: true }));\n return () => {\n elements.forEach((element) => element?.removeEventListener(\"focusin\", setFocus));\n elements.forEach((element) => element?.removeEventListener(\"focusout\", setFocus));\n };\n }\n }, [setFocus, pagesEl, modalEl, contextMenuEl]);\n\n useLayoutEffect(() => setFocus(), [setFocus, active]);\n\n return { pagesRef, pageRef, modalRef, contextMenuRef };\n}\n\nfunction trySetFocusWithin(element: HTMLElement, focus: HTMLElement): void {\n setTimeout(() => {\n if (hasFocusWithin(element)) return;\n if (hasFocusOnIframe()) return;\n\n const focusable = focus.getAttribute(\"tabIndex\") === \"-1\" ? focus : (focus.querySelector(`[tabindex=\"-1\"]`) as HTMLElement | null);\n if (focusable == null) return;\n\n focusable.focus({ preventScroll: true });\n }, 0);\n}\n\nfunction hasFocusWithin(element: HTMLElement): boolean {\n const has = document.activeElement === element || element.querySelector(\":focus\") != null;\n return has;\n}\n\nfunction hasFocusOnIframe() {\n return document.activeElement?.tagName == \"IFRAME\";\n}\n","import { useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { store } from \"global\";\nimport type { RootModel } from \"models/app\";\nimport { LanguageSetting, Language } from \"models/view/Localization\";\n\nexport function getLocalization(setting: LanguageSetting, browserLang: Language): Language {\n switch (setting) {\n case LanguageSetting.Danish:\n return Language.Danish;\n case LanguageSetting.English:\n return Language.English;\n case LanguageSetting.Auto:\n return browserLang;\n }\n}\n\nexport function useLocalization(): Language {\n const setting = useSelector((root: RootModel) => root.ui.localizationSetting);\n const os = useSelector((root: RootModel) => root.ui.browserLanguage);\n\n return useMemo(() => getLocalization(setting, os), [setting, os]);\n}\nconst getBrowserLang = () => store.getState().ui.browserLanguage;\n\nexport function getLang(setting: LanguageSetting): Language {\n const os = getBrowserLang();\n return getLocalization(setting, os);\n}\nexport function getLangFromState(): Language {\n const setting = getLanguageSettingFromState();\n const os = getBrowserLang();\n\n return getLocalization(setting, os);\n}\nexport function getLanguageSettingFromState() {\n return store.getState().ui.localizationSetting;\n}\n","import { useState, useEffect, useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { store } from \"global\";\nimport type { RootModel } from \"models/app\";\nimport { Theme, ThemeSetting } from \"models/view/Theme\";\n\nfunction useOsTheme(): Theme {\n const [theme, setTheme] = useState(Theme.Light);\n\n const darkChange = () => {\n const newTheme = getOsTheme();\n setTheme(newTheme);\n };\n\n useEffect(() => {\n darkChange();\n\n const darkQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n darkQuery.addEventListener(\"change\", darkChange, { passive: true });\n\n return () => darkQuery.removeEventListener(\"change\", darkChange);\n }, []);\n\n return theme;\n}\n\nexport function useTheme(): Theme {\n const setting = useSelector((root: RootModel) => root.ui.theme);\n const os = useOsTheme();\n\n return useMemo(() => getTheme(setting, os), [setting, os]);\n}\n\nexport function getOsTheme(): Theme {\n const darkQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const theme = darkQuery.matches ? Theme.Dark : Theme.Light;\n return theme;\n}\n\nexport function getThemeSettingFromState(): ThemeSetting {\n const setting = store.getState().ui.theme;\n return setting;\n}\n\nexport function getTheme(setting: ThemeSetting, osTheme: Theme): Theme {\n switch (setting) {\n case ThemeSetting.Light:\n return Theme.Light;\n case ThemeSetting.Dark:\n return Theme.Dark;\n case ThemeSetting.Auto:\n return osTheme;\n }\n}\n\nexport function getThemeFromState(): Theme {\n const setting = getThemeSettingFromState();\n const os = getOsTheme();\n\n return getTheme(setting, os);\n}\n","import { useEffect } from \"preact/hooks\";\nimport { dispatch } from \"global\";\nimport { NOTIFICATION_BANNER_TOGGLE } from \"global/actions\";\nimport { BannerWarning } from \"models/app\";\nimport { useOnline } from \"components/shared/hooks/useOnline\";\n\nexport function useToggleNoConnectionBanner() {\n const toggleNoConnectionBanner = (show: boolean) => dispatch({ type: NOTIFICATION_BANNER_TOGGLE, payload: { warning: BannerWarning.NoConnection, show } });\n\n const online = useOnline();\n useEffect(() => {\n toggleNoConnectionBanner(!online);\n }, [online]);\n}\n","export * from \"./App\";","import { ComponentChildren, h } from \"preact\";\nimport \"./Badge.scss\";\n\ninterface Props {\n children: ComponentChildren;\n className?: string;\n}\n\nexport const Badge = ({ className, children }: Props) => <div className={`badge bf0 ${className ?? \"\"}`}>{children}</div>;\n","import { h } from \"preact\";\nimport \"./Avatar.scss\";\n\ninterface Props {\n text: string;\n color?: string;\n class?: string;\n}\n\nexport function Avatar(props: Props) {\n const styles = props.color ? { backgroundColor: props.color } : undefined;\n return (\n <div className={\"avatar r39\" + (props.class ? \" \" + props.class : \"\")} style={styles}>\n {props.text.substring(0, 1).toUpperCase()}\n </div>\n );\n}\n","export * from \"./Avatar\";","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport \"./BasicRange.scss\";\n\ninterface Props {\n onChange?: (percent: number) => void;\n step?: number;\n max?: number;\n value: number;\n disabled?: boolean;\n}\n\nexport const BasicRange = ({ onChange, step = 0, max = 100, value, disabled }: Props) => {\n const handleOnInput = useCallback(\n (e: h.JSX.TargetedEvent<HTMLInputElement, Event>) => {\n const value = Number(e.currentTarget.value);\n onChange && onChange(value);\n },\n [onChange]\n );\n\n const min = 0;\n const progressStyle = useMemo(() => ({ width: `${(value * 100) / max}%` }), [max, value]);\n\n return (\n <div className={`range o2d`} disabled={disabled}>\n <input type=\"range\" className=\"hiddenRange\" min={min} max={max} value={value} step={step} disabled={disabled} onInput={handleOnInput} />\n <div className={`visualRange`}>\n <div className={`progress`} style={progressStyle} />\n </div>\n </div>\n );\n};\n","export * from \"./BasicRange\";\n","import type { ComponentChildren } from \"preact\";\nimport { Fragment, h } from \"preact\";\nimport { forwardRef, useState } from \"preact/compat\";\nimport { Link } from \"preact-router/match\";\nimport \"./Button.scss\";\nimport { dispatch } from \"global\";\nimport { PAGE_CLICK, SET_USER_DRAGGING } from \"global/actions\";\nimport type { TestLocatorValue } from \"global/constants\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { navigateForward } from \"services/navigationStack/navigationStack\";\nimport { getIcon } from \"services/resource\";\nimport type { DraggableItemModel } from \"models/app\";\nimport type { LinkContextModel } from \"models/app/resourceContextModel\";\nimport { Icon, IconName, IconSize } from \"components/atoms/icon\";\n\nexport interface ButtonInline {\n top?: boolean;\n right?: boolean;\n bottom?: boolean;\n left?: boolean;\n}\n\nexport enum ButtonDesign {\n ContextMenu = \"contextMenu\",\n ContextMenuBottom = \"contextMenuBottom\",\n Cover = \"cover\",\n DefaultBig = \"defaultBig\",\n DefaultMicro = \"defaultMicro\",\n DefaultSmall = \"defaultSmall\",\n LightBig = \"lightBig\",\n LightBrandBig = \"lightBrandBig\",\n LightBrandSmall = \"lightBrandSmall\",\n LightMicro = \"lightMicro\",\n LightSmall = \"lightSmall\",\n NavBarLink = \"navBarLink\",\n None = \"none\",\n PlayableLinkMaxiPrimary = \"playableLinkMaxiPrimary\",\n PlayableLinkMaxiSecondary = \"playableLinkMaxiSecondary\",\n PlayableLinkPrimary = \"playableLinkPrimary\",\n PlayableLinkPrimary2Lines = \"playableLinkPrimary2Lines\",\n PlayableLinkSecondary = \"playableLinkSecondary\",\n PlayableRow = \"playableRow\",\n PlayerPrimary = \"playerPrimary\",\n PlayerSecondary = \"playerSecondary\",\n PrimaryBig = \"primaryBig\",\n PrimaryMicro = \"primaryMicro\",\n PrimarySmall = \"primarySmall\",\n SecondaryBig = \"secondaryBig\",\n SecondarySmall = \"secondarySmall\",\n SideBarLinkBig = \"sideBarLinkBig\",\n SideBarLinkBigMinimal = \"sideBarLinkBigMinimal\",\n SideBarLinkMedium = \"sideBarLinkMedium\",\n TextBrandInline = \"textBrandInline\",\n TextBrandMedium = \"textBrandMedium\",\n TextBrandSmall = \"textBrandSmall\",\n TextInline = \"textInline\",\n TextInlineMedium = \"textInlineMedium\",\n TextSmall = \"textSmall\",\n ProfileGiant = \"profileGiant\"\n}\n\nexport function getIconSize(design: ButtonDesign): IconSize {\n switch (design) {\n case ButtonDesign.DefaultMicro:\n case ButtonDesign.DefaultSmall:\n case ButtonDesign.LightBrandSmall:\n case ButtonDesign.LightMicro:\n case ButtonDesign.LightSmall:\n case ButtonDesign.PrimaryMicro:\n case ButtonDesign.PrimarySmall:\n case ButtonDesign.SecondarySmall:\n case ButtonDesign.TextBrandSmall:\n case ButtonDesign.TextSmall:\n return IconSize.Small;\n case ButtonDesign.ContextMenu:\n case ButtonDesign.ContextMenuBottom:\n case ButtonDesign.Cover:\n case ButtonDesign.DefaultBig:\n case ButtonDesign.LightBig:\n case ButtonDesign.LightBrandBig:\n case ButtonDesign.NavBarLink:\n case ButtonDesign.None:\n case ButtonDesign.PlayableLinkMaxiPrimary:\n case ButtonDesign.PlayableLinkMaxiSecondary:\n case ButtonDesign.PlayableLinkPrimary2Lines:\n case ButtonDesign.PlayableLinkPrimary:\n case ButtonDesign.PlayableLinkSecondary:\n case ButtonDesign.PlayableRow:\n case ButtonDesign.PlayerSecondary:\n case ButtonDesign.PrimaryBig:\n case ButtonDesign.SecondaryBig:\n case ButtonDesign.SideBarLinkBig:\n case ButtonDesign.SideBarLinkBigMinimal:\n case ButtonDesign.SideBarLinkMedium:\n case ButtonDesign.TextBrandInline:\n case ButtonDesign.TextBrandMedium:\n case ButtonDesign.TextInline:\n case ButtonDesign.TextInlineMedium:\n return IconSize.Default;\n case ButtonDesign.PlayerPrimary:\n case ButtonDesign.ProfileGiant:\n return IconSize.Big;\n }\n}\n\ninterface Props {\n activated?: boolean;\n allowModifierKeys?: boolean;\n children?: ComponentChildren;\n className?: string;\n design?: ButtonDesign;\n disabled?: boolean;\n draggableItem?: () => DraggableItemModel | null;\n externalUrl?: string;\n hover?: boolean;\n icon?: IconName;\n inheritStates?: boolean;\n inline?: ButtonInline;\n link?: LinkContextModel;\n onClick?: (ev: MouseEvent) => void;\n onContextMenu?: (ev: MouseEvent) => void;\n onPointerEnter?: (ev: PointerEvent) => void;\n onPointerLeave?: (ev: PointerEvent) => void;\n round?: boolean;\n tabIndex?: number;\n testLocator?: TestLocatorValue;\n ariaLabel?: string;\n toggled?: boolean;\n useIcon?: boolean;\n useText?: boolean;\n}\n\ninterface ContentProps {\n children?: ComponentChildren;\n design: ButtonDesign;\n icon?: IconName;\n}\n\ninterface ElementProps {\n class?: string;\n disabled?: boolean;\n draggable: boolean;\n onClick?: (ev: MouseEvent) => void;\n onContextMenu?: (ev: MouseEvent) => void;\n onDragEnd?: (ev: DragEvent) => void;\n onDragStart?: (ev: DragEvent) => void;\n onMouseDown?: (ev: MouseEvent) => void;\n onMouseUp?: (ev: MouseEvent) => void;\n onPointerEnter?: (ev: PointerEvent) => void;\n onPointerLeave?: (ev: PointerEvent) => void;\n tabIndex?: number;\n title?: string;\n}\n\ninterface ButtonProps {\n elementProps: ElementProps;\n children?: ComponentChildren;\n testLocator?: TestLocatorValue;\n ariaLabel?: string;\n}\n\ninterface LinkProps extends ButtonProps {\n link: LinkContextModel;\n}\n\ninterface ExternalLinkProps extends ButtonProps {\n url: string;\n}\n\nenum MouseButton {\n Main = 0, // usually the left button or the un-initialized state\n Auxiliary = 1, // usually the wheel button or the middle button (if present)\n Secondary = 2, // usually the right button\n Fourth = 3, // typically the Browser Back button\n Fifth = 4 // typically the Browser Forward button\n}\n\nlet preventAction = false;\nlet preventActionTimeoutId: number | null;\n\nfunction setPreventAction() {\n if (preventActionTimeoutId) {\n clearInterval(preventActionTimeoutId);\n preventActionTimeoutId = null;\n }\n\n preventAction = true;\n preventActionTimeoutId = window.setTimeout(() => {\n preventActionTimeoutId = null;\n preventAction = false;\n }, 0);\n}\n\nexport const Button = forwardRef<HTMLElement, Props>((props, ref) => {\n const {\n activated = false,\n allowModifierKeys = false,\n children: propChildren,\n className,\n design = ButtonDesign.DefaultBig,\n disabled,\n draggableItem: draggableItemFn,\n hover = false,\n icon: propIcon,\n inheritStates = false,\n inline,\n link,\n onContextMenu,\n onPointerEnter,\n onPointerLeave,\n testLocator,\n ariaLabel,\n toggled = false,\n useIcon: linkIcon,\n useText: linkText\n } = props;\n let { onClick: propOnClick, externalUrl, round, tabIndex } = props;\n\n if (disabled) {\n if (link) link.url = undefined;\n propOnClick = undefined;\n externalUrl = undefined;\n }\n\n const children = linkText ? link?.text : propChildren;\n const icon = linkIcon ? (link?.type != null ? getIcon(link.type) ?? undefined : undefined) : propIcon;\n\n const hasPrimaryAction = link?.url != null || propOnClick != null || externalUrl != null;\n const hasContextMenuAction = onContextMenu != null;\n\n if (!hasPrimaryAction || disabled) tabIndex = -1;\n if (round == undefined) round = icon != null && children == null;\n\n const [active, setActive] = useState<number | null>(null);\n\n const onMouseDown = (ev: MouseEvent) => {\n setActive(ev.button);\n };\n\n const onMouseUp = () => {\n setActive(null);\n };\n\n const onClick = (ev: MouseEvent) => {\n if (propOnClick == null && link == null) return;\n\n if (preventAction) return;\n setPreventAction();\n if (!allowModifierKeys) {\n if (ev.ctrlKey) return;\n if (ev.metaKey) return;\n if (ev.shiftKey) return;\n if (ev.altKey) return;\n }\n if (propOnClick) propOnClick(ev);\n if (link) navigateForward(link);\n\n dispatch({ type: PAGE_CLICK, payload: { ev } });\n\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n const contextMenu = (ev: MouseEvent) => {\n const isLongPress = () => ev.button === MouseButton.Main;\n\n if (isLongPress() && !onContextMenu) {\n onClick(ev);\n return;\n }\n\n if (onContextMenu != null) {\n ev.stopPropagation();\n ev.preventDefault();\n onContextMenu(ev);\n }\n\n dispatch({ type: PAGE_CLICK, payload: { ev } });\n };\n\n const pointerEnter = (ev: PointerEvent) => {\n if (onPointerEnter == null) return;\n ev.stopPropagation();\n ev.preventDefault();\n onPointerEnter(ev);\n };\n\n const pointerLeave = (ev: PointerEvent) => {\n setActive(null);\n if (onPointerLeave == null) return;\n ev.stopPropagation();\n ev.preventDefault();\n onPointerLeave(ev);\n };\n\n const onDragStart = (e: DragEvent) => {\n if (draggableItemFn == null) {\n log.error({ code: \"web-210511-1510\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n const draggableItem = draggableItemFn();\n if (draggableItem == null) {\n log.error({ code: \"web-210528-1502\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n e.stopPropagation();\n if (!e.dataTransfer) return;\n setTimeout(() => {\n dispatch({ type: SET_USER_DRAGGING, payload: { item: draggableItem } });\n }, 10);\n const stringifiedItem = JSON.stringify(draggableItem);\n e.dataTransfer.setData(\"dragItem\", stringifiedItem);\n\n const node = document.getElementById(\"dragLabel\");\n if (node == null) return;\n node.innerText = draggableItem.title ?? \"\";\n e.dataTransfer.effectAllowed = \"move\";\n e.dataTransfer.dropEffect = \"move\";\n e.dataTransfer.setDragImage(node, 0, 0);\n };\n\n const onDragEnd = () => {\n dispatch({ type: SET_USER_DRAGGING, payload: { item: null } });\n };\n\n let inlineClassNames = \"\";\n if (inline?.top === true) inlineClassNames += \"--inlineTop-true \";\n if (inline?.right === true) inlineClassNames += \"--inlineRight-true \";\n if (inline?.bottom === true) inlineClassNames += \"--inlineBottom-true \";\n if (inline?.left === true) inlineClassNames += \"--inlineLeft-true \";\n const draggable = !!draggableItemFn;\n const elementProps: ElementProps = {\n class: `button WjK ${\n hover ? \"--hover-true\" : \"\"\n } --hasPrimaryAction-${hasPrimaryAction} --hasContextMenuAction-${hasContextMenuAction} --active-${active} --toggled-${toggled} --activated-${activated} --design-${design} --round-${round} ${\n inheritStates ? \"--inheritStates-true\" : \"\"\n } ${className ?? \"\"} ${inlineClassNames} --draggable-${draggable}`,\n onClick,\n onContextMenu: contextMenu,\n onPointerEnter: pointerEnter,\n onPointerLeave: pointerLeave,\n onMouseDown,\n onMouseUp,\n disabled,\n draggable,\n onDragEnd: draggable ? onDragEnd : undefined,\n onDragStart: draggable ? onDragStart : undefined,\n tabIndex\n };\n\n const content = (\n <Content icon={icon} design={design}>\n {children}\n </Content>\n );\n\n if (link != null)\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <LinkElement ref={ref as any} link={link} elementProps={elementProps} testLocator={testLocator}>\n {content}\n </LinkElement>\n );\n else if (externalUrl != null)\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <ExternalLinkElement ref={ref as any} url={externalUrl} elementProps={elementProps} testLocator={testLocator}>\n {content}\n </ExternalLinkElement>\n );\n else\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <ButtonElement ref={ref as any} elementProps={elementProps} testLocator={testLocator} ariaLabel={ariaLabel}>\n {content}\n </ButtonElement>\n );\n});\n\nconst ButtonElement = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => {\n return (\n <button ref={ref} {...props.elementProps} data-cy={props.testLocator} aria-label={props.ariaLabel}>\n {props.children}\n </button>\n );\n});\n\nconst LinkElement = forwardRef<HTMLElement, LinkProps>((props, ref) => {\n return (\n <Link\n ref={(linkRef) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const element = (linkRef as any)?.base;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (ref && element) (ref as any).current = element;\n }}\n activeClassName=\"--location-true\"\n {...props.elementProps}\n href={props.link.url}\n data-cy={props.testLocator}>\n {props.children}\n </Link>\n );\n});\n\nconst ExternalLinkElement = forwardRef<HTMLAnchorElement, ExternalLinkProps>((props, ref) => {\n return (\n <a {...props.elementProps} href={props.url} ref={ref} data-cy={props.testLocator} target=\"_blank\" rel=\"noreferrer noopener\">\n {props.children}\n </a>\n );\n});\n\nconst Content = ({ children, icon, design }: ContentProps) => {\n const childs = [children].flat();\n if (icon != null) childs.unshift(<Icon icon={icon} size={getIconSize(design)} />);\n\n return (\n <Fragment>\n {childs.map((child) => {\n switch (typeof child) {\n case \"string\":\n case \"number\":\n case \"bigint\":\n return <div className=\"text\">{child}</div>;\n default:\n return child;\n }\n })}\n </Fragment>\n );\n};\n","import { h } from \"preact\";\nimport { Button, ButtonDesign } from \"../Button\";\nimport { dispatch } from \"global\";\nimport { USER_CLEAR_SEARCH_HISTORY } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\n\nexport const ButtonClearSearchHistory = () => {\n const clear = () => {\n dispatch({ type: USER_CLEAR_SEARCH_HISTORY });\n };\n const translations = useTranslations();\n return (\n <Button className={`buttonClearSearchHistory`} design={ButtonDesign.LightMicro} onClick={clear} testLocator={TestLocator.SearchClearHistory}>\n {translations.ClearSearchHistory}\n </Button>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Button, ButtonDesign } from \"../Button\";\nimport { dispatch } from \"global\";\nimport { PLAYER_TOGGLE_FAVORITE } from \"global/actions\";\nimport type { TestLocator } from \"global/constants\";\nimport type { FavoritePageModel, FavoritePreviewModel } from \"services/favorites\";\nimport { useFavoriteStatus } from \"services/favorites\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { IconName } from \"components/atoms/icon\";\nimport { useTranslations } from \"global/config\";\n\ninterface Props {\n context: PreviewContextModel;\n design?: ButtonDesign;\n disabled?: boolean;\n favorite: FavoritePreviewModel | FavoritePageModel | null;\n testLocator?: TestLocator;\n}\n\nexport const ButtonFavorite = ({ context, favorite, testLocator, disabled, design = ButtonDesign.LightBig }: Props) => {\n const isFavorite = useFavoriteStatus(favorite);\n const translations = useTranslations();\n const icon = isFavorite ? IconName.FavoritesActive : IconName.Favorites;\n const { section } = context;\n const toggle = useCallback(() => {\n dispatch({\n type: PLAYER_TOGGLE_FAVORITE,\n payload: { section, playables: favorite ? [favorite] : null, operation: isFavorite ? \"remove\" : \"add\" }\n });\n }, [section, favorite, isFavorite]);\n\n return (\n <Button\n ariaLabel={isFavorite ? translations.VoiceOverRemoveFromMyMusic : translations.VoiceOverAddToMyMusic}\n className={`buttonFavorite IME`}\n toggled={isFavorite || false}\n icon={icon}\n design={design}\n onClick={toggle}\n testLocator={testLocator}\n disabled={disabled}\n />\n );\n};\n","import { h } from \"preact\";\nimport { Button, ButtonDesign } from \"../Button\";\nimport { useTranslations } from \"global/config\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ArtistRadioModel } from \"models/domain/ArtistRadioModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkContext } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n radio: ArtistRadioModel | null;\n context: PreviewContextModel;\n}\n\nexport const ButtonGoToArtistRadio = ({ radio, context }: Props) => {\n const link = useLinkContext(ContentType.ArtistRadio, radio, context);\n const translations = useTranslations();\n return (\n <Button link={link} icon={IconName.Sound} design={ButtonDesign.PrimaryBig}>\n {translations.ContextOptionGoToArtistRadioAction}\n </Button>\n );\n};\n","import { h } from \"preact\";\nimport { useRef } from \"preact/hooks\";\nimport type { ButtonInline } from \"../Button\";\nimport { Button, ButtonDesign } from \"../Button\";\nimport type { TestLocator } from \"global/constants\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { getHasContextMenu } from \"services/resource\";\nimport { getIsLoggedInFromState } from \"services/user\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport { useContextMenu } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\nimport { ResourceContextMenu } from \"components/organisms/contextMenu/menus\";\n\ninterface Props {\n closeContextMenuOnNavigation?: boolean;\n context: PreviewContextModel;\n design?: ButtonDesign;\n disabled?: boolean;\n icon?: IconName;\n inline?: ButtonInline;\n onOpen?: (open: boolean) => void;\n resource: ResourcePreviewModel | null;\n testLocator?: TestLocator;\n}\n\nexport const ButtonMore = ({\n closeContextMenuOnNavigation,\n context,\n design = ButtonDesign.LightBig,\n disabled: disabledProp,\n icon = IconName.Meatballs,\n inline,\n onOpen,\n resource,\n testLocator\n}: Props) => {\n const ref = useRef<HTMLButtonElement>(null);\n const disabled = !getHasContextMenu(context.type, context.resource) || disabledProp == true;\n const menu = useContextMenu(!disabled ? ResourceContextMenu({ resource, context, resourceType: context.type }) : null, closeContextMenuOnNavigation, undefined, context);\n\n const click = async () => {\n if (!ref.current) {\n log.error({ code: \"web-210517-1409\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n await getIsLoggedInFromState(); // dont open context menus until we know if we are logged in\n if (onOpen) onOpen(true);\n await menu.open(ref.current);\n if (onOpen) onOpen(false);\n };\n\n return <Button disabled={disabled} onClick={click} ref={ref} icon={icon} design={design} inline={inline} activated={menu.isOpen} testLocator={testLocator} />;\n};\n","import { h } from \"preact\";\nimport { useRef } from \"preact/hooks\";\nimport type { ButtonInline } from \"../Button\";\nimport { Button, ButtonDesign } from \"../Button\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { useContextMenu } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\nimport { MyMusicPlaylistsContextMenu } from \"components/organisms/contextMenu/menus\";\n\ninterface Props {\n design?: ButtonDesign;\n inline?: ButtonInline;\n icon?: IconName;\n onOpen?: (open: boolean) => void;\n}\n\nexport const ButtonMoreMyMusicPlaylists = ({ design = ButtonDesign.LightBig, inline, icon = IconName.Meatballs, onOpen }: Props) => {\n const ref = useRef<HTMLButtonElement>(null);\n const menu = useContextMenu(MyMusicPlaylistsContextMenu());\n\n const onMoreButtonClick = async () => {\n if (!ref.current) {\n log.error({ code: \"web-210517-1414\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n if (onOpen) onOpen(true);\n await menu.open(ref.current);\n if (onOpen) onOpen(false);\n };\n\n return <Button onClick={onMoreButtonClick} ref={ref} icon={icon} design={design} inline={inline} activated={menu.isOpen} />;\n};\n","import { h } from \"preact\";\nimport { useMemo, useRef, useCallback } from \"preact/hooks\";\nimport { Button } from \"../Button\";\nimport { TestLocator } from \"global/constants\";\nimport { log, DefaultLogMessage } from \"services/logger\";\nimport { isNotificationFeedEnabled, useCurrentUnseenNotificationsExist } from \"services/notificationFeed\";\nimport { fetchAndMarkNotifications } from \"services/notificationFeed/update\";\nimport { useDisplayLoggedIn } from \"services/user\";\nimport { ContextMenuSheetWidth } from \"models/view/contextMenu\";\nimport { useContextMenu } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\nimport { NotificationFeedContextMenu } from \"components/organisms/contextMenu/menus/NotificationFeedContextMenu\";\n\nexport function ButtonNotificationFeed() {\n const loggedIn = useDisplayLoggedIn();\n\n const notificationFeedEnabled = useMemo(() => loggedIn && isNotificationFeedEnabled(), [loggedIn]);\n const notificationFeedButtonRef = useRef<HTMLButtonElement>(null);\n\n const notificationFeed = useContextMenu(<NotificationFeedContextMenu />, false, ContextMenuSheetWidth.Wide);\n\n const currentUnseen = useCurrentUnseenNotificationsExist(false);\n\n const openNotificationFeed = useCallback(async () => {\n if (!notificationFeedButtonRef.current) {\n log.error({ code: \"web-210519-1100\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n fetchAndMarkNotifications()\n notificationFeed.openAtPosition(60, 8);\n }, [notificationFeed]);\n\n if (!notificationFeedEnabled) return null;\n\n return (\n <Button\n activated={notificationFeed.isOpen}\n ref={notificationFeedButtonRef}\n icon={currentUnseen ? IconName.DotNotification : IconName.Notification}\n onClick={openNotificationFeed}\n testLocator={TestLocator.PageHeaderNotificationFeedButton}\n />\n );\n}\n","import { h } from \"preact\";\nimport { Button, ButtonDesign } from \"../Button\";\nimport { dispatch } from \"global\";\nimport { AUDIO_INPUT_SET_AND_PLAY } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport type { TestLocator } from \"global/constants\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { createAndStartUserPlayTraceModel, TraceName } from \"models/app/TraceModel\";\nimport type { PlayablePreviewModel, PlayablePageModel } from \"models/domain\";\nimport { ShuffleState } from \"models/view/ShuffleState\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n playable: PlayablePreviewModel | PlayablePageModel | null;\n context: PreviewContextModel;\n design?: ButtonDesign;\n testLocator?: TestLocator;\n disabled?: boolean;\n}\n\nexport const ButtonPlayBig = ({ playable, context, design = ButtonDesign.SecondaryBig, testLocator, disabled }: Props) => {\n const translations = useTranslations();\n const play = async () => {\n if (!playable) {\n log.error({ code: \"web-210219-1236\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n const trace = await createAndStartUserPlayTraceModel(TraceName.ClickToSound);\n dispatch({\n type: AUDIO_INPUT_SET_AND_PLAY,\n payload: {\n shuffle: ShuffleState.Off,\n playable,\n playableContext: context,\n context: { action: AudioContextAction.UserPageSetAndPlay, trace }\n }\n });\n };\n\n return (\n <Button icon={IconName.PlaySmall} design={design} onClick={play} testLocator={testLocator} disabled={disabled}>\n {translations.Play}\n </Button>\n );\n};\n","import { h } from \"preact\";\nimport { Button, ButtonDesign } from \"../Button\";\nimport { dispatch } from \"global\";\nimport { AUDIO_INPUT_SET_AND_PLAY } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { createAndStartUserPlayTraceModel, TraceName } from \"models/app/TraceModel\";\nimport type { RadioPreviewModel } from \"models/domain\";\nimport { ShuffleState } from \"models/view/ShuffleState\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n radio: RadioPreviewModel | null;\n context: PreviewContextModel;\n}\n\nexport const ButtonPlayRadio = ({ radio, context }: Props) => {\n const translations = useTranslations();\n const click = async () => {\n if (!radio) {\n log.error({ code: \"web-210223-1626\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n const trace = await createAndStartUserPlayTraceModel(TraceName.ClickToSound);\n dispatch({\n type: AUDIO_INPUT_SET_AND_PLAY,\n payload: {\n shuffle: ShuffleState.Off, // todo is this correct?\n playable: radio,\n playableContext: context,\n context: { action: AudioContextAction.UserPageSetAndPlay, trace }\n }\n });\n };\n\n return (\n <Button onClick={click} icon={IconName.Sound} design={ButtonDesign.PrimaryBig}>\n {translations.StartRadio}\n </Button>\n );\n};\n","import { h } from \"preact\";\nimport { Button, ButtonDesign } from \"../Button\";\nimport { dispatch } from \"global\";\nimport { AUDIO_INPUT_SET_AND_PLAY } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport type { TestLocator } from \"global/constants\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { createAndStartUserPlayTraceModel, TraceName } from \"models/app/TraceModel\";\nimport type { PlayQueuePlayablePageModel, PlayQueuePlayablePreviewModel } from \"models/domain\";\nimport { ShuffleState } from \"models/view/ShuffleState\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n playable: PlayQueuePlayablePreviewModel | PlayQueuePlayablePageModel | null;\n context: PreviewContextModel;\n design?: ButtonDesign;\n testLocator?: TestLocator;\n disabled?: boolean;\n}\n\nexport const ButtonPlayShuffleBig = ({ playable, context, design = ButtonDesign.SecondaryBig, testLocator, disabled }: Props) => {\n const translations = useTranslations();\n const click = async () => {\n if (!playable) {\n log.error({ code: \"web-210517-1417\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n const trace = await createAndStartUserPlayTraceModel(TraceName.ClickToSound);\n dispatch({\n type: AUDIO_INPUT_SET_AND_PLAY,\n payload: {\n shuffle: ShuffleState.Light,\n playable,\n playableContext: context,\n context: { action: AudioContextAction.UserPageSetAndPlay, trace }\n }\n });\n };\n\n return (\n <Button icon={IconName.Shuffle} design={design} onClick={click} testLocator={testLocator} disabled={disabled}>\n {translations.Shuffle}\n </Button>\n );\n};\n","import { h } from \"preact\";\nimport { useRef } from \"preact/hooks\";\nimport { Button, ButtonDesign } from \"../Button\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport type { SortOptionsModel } from \"models/app/SortOption\";\nimport { useContextMenu } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\nimport { SortContextMenu } from \"components/organisms/contextMenu/menus\";\n\ninterface Props {\n sortOptions: SortOptionsModel;\n disabled?: boolean;\n}\n\nexport const ButtonSort = ({ sortOptions, disabled }: Props) => {\n const ref = useRef<HTMLButtonElement>(null);\n const menu = useContextMenu(<SortContextMenu sortOptions={sortOptions} />);\n\n const click = () => {\n if (!ref.current) {\n log.error({ code: \"web-210210-1800\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n menu.open(ref.current);\n };\n\n return <Button className=\"sort\" ref={ref} icon={IconName.Sort} design={ButtonDesign.DefaultBig} onClick={click} disabled={disabled} />;\n};\n","export * from \"./ButtonFavorite\";\nexport * from \"./ButtonGoToArtistRadio\";\nexport * from \"./ButtonMore\";\nexport * from \"./ButtonMoreMyMusicPlaylists\";\nexport * from \"./ButtonNotificationFeed\";\nexport * from \"./ButtonPlayBig\";\nexport * from \"./ButtonPlayRadio\";\nexport * from \"./ButtonPlayShuffleBig\";\nexport * from \"./ButtonSort\";\n","export * from \"./Button\";","import { h } from \"preact\";\nimport { Icon, IconName, IconSize } from \"components/atoms/icon\";\nimport \"./CheckBoxButton.scss\";\n\ninterface Props {\n className?: string;\n checked?: boolean;\n onChange?: () => void;\n name?: string;\n}\n\nexport const CheckBoxButton = ({ className, checked, onChange, name }: Props) => {\n return (\n <div className={`checkBoxButton NAx ${className ?? \"\"} --checked-${checked}`}>\n <input checked={checked} type=\"checkbox\" name={name} onChange={onChange} />\n <Icon size={IconSize.Small} icon={IconName.Checkmark16} />\n </div>\n );\n};\n","export * from \"./CheckBoxButton\";\n","import { h } from \"preact\";\nimport \"./CheckMark.scss\";\nimport { Icon, IconName } from \"components/atoms/icon\";\n\ninterface Props {\n className?: string;\n checked?: boolean;\n onChange?: () => void;\n name: string;\n type: \"checkbox\" | \"radio\";\n}\n\nexport const CheckMark = ({ className, checked, onChange, name, type }: Props) => {\n return (\n <div className={`checkMark M0e ${className ?? \"\"} --checked-${checked}`}>\n <Icon icon={IconName.Checkmark} />\n <input checked={checked} type={type} name={name} onChange={onChange} />\n </div>\n );\n};\n","export * from \"./CheckMark\";","export enum FormState {\n Default,\n Submiting\n}\n","export * from \"./FormState\";\n","import { h } from \"preact\";\nimport { TextInputState } from \"../textInput\";\nimport \"./InputLabel.scss\";\n\ninterface Props {\n children?: string;\n state: TextInputState;\n}\n\nexport const InputLabel = ({ children, state }: Props) => {\n return <label className={`inputLabel --state-${state}`}>{children ?? \"\"}</label>;\n};\n","export * from \"./InputLabel\";\n","import { h } from \"preact\";\nimport { useState, useLayoutEffect, useMemo, useEffect, useRef, useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./PlayRange.scss\";\nimport { dispatch } from \"global\";\nimport { PLAYER_UI_SEEKING } from \"global/actions\";\nimport { log } from \"services/logger/initLoggerService\";\nimport { getAudioItemPositionDelay, getAudioItemPositionPercent } from \"services/player/inputs/service/helpers\";\nimport type { RootModel } from \"models/app\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport { useAudioProperties, usePlayRange, useTabIsActive } from \"components/shared/hooks\";\n\nexport enum RangeType {\n MobileMini = \"mobileMini\",\n MobileMaxi = \"mobileMaxi\",\n Desktop = \"desktop\"\n}\n\ninterface Props {\n onChange?: (percent: number) => void;\n onSeekPositionChange?: (seconds: number | null) => void;\n type: RangeType;\n}\n\nexport const PlayRange = ({ onChange, onSeekPositionChange, type }: Props) => {\n const disabled = !usePlayRange();\n const audioProperties = useAudioProperties();\n let { duration } = audioProperties;\n const { playState, position, loaded } = audioProperties;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const inputRange = Number.MAX_SAFE_INTEGER;\n const [drag, setDrag] = useState<number | null>(null);\n const [random, setRandom] = useState<number>(Math.random() * Number.MAX_SAFE_INTEGER);\n const [progressStyle, setProgressStyle] = useState({});\n\n const isTabActive = useTabIsActive();\n\n if (duration === 0) duration = 100;\n const isInputLiveRadio = useSelector((root: RootModel) => root.player.input) === AudioInputType.LiveRadio;\n const getDelay = useMemo(() => {\n if (drag != null) {\n return (drag * duration) / -100;\n } else {\n return getAudioItemPositionDelay(playState, position, duration);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [playState, position, drag, duration, isTabActive]);\n\n useEffect(() => {\n const update = () => {\n if (drag != null) return;\n const percent = getAudioItemPositionPercent(playState, position, duration);\n const value = (percent / 100) * inputRange;\n\n if (inputRef.current) inputRef.current.value = value.toString();\n };\n\n update();\n\n if (playState === PlayState.Playing) {\n const intervalId = setInterval(() => update(), 100);\n return () => clearInterval(intervalId);\n }\n }, [playState, position, duration, inputRange, drag]);\n\n useLayoutEffect(() => {\n let animationPlayState: \"paused\" | \"running\" = \"paused\";\n const delay = getDelay;\n if (\n isInputLiveRadio ||\n drag != null ||\n playState === PlayState.Buffering ||\n playState === PlayState.Paused ||\n playState === PlayState.Stopped ||\n playState === PlayState.Error\n ) {\n animationPlayState = \"paused\";\n } else if (playState === PlayState.Playing) {\n animationPlayState = \"running\";\n } else {\n log.error({ code: \"web-210308-1730\", msg: \"progress range error\" });\n return;\n }\n const progressStyle = {\n animationPlayState,\n animationDuration: `${duration}s`,\n animationDelay: `${delay}s`\n };\n setRandom(Math.random() * Number.MAX_SAFE_INTEGER);\n setProgressStyle(progressStyle);\n }, [getDelay, drag, playState, position.playStartMs, duration, isInputLiveRadio]);\n\n const getPercentFromInput = useCallback(\n (e: h.JSX.TargetedEvent<HTMLInputElement, Event>) => {\n return (Number(e.currentTarget.value) / inputRange) * 100;\n },\n [inputRange]\n );\n\n const handleOnInput = useCallback(\n (e: h.JSX.TargetedEvent<HTMLInputElement, Event>) => {\n const percent = getPercentFromInput(e);\n setDrag(percent);\n const seconds = (percent * (duration ?? 0)) / 100;\n dispatch({\n type: PLAYER_UI_SEEKING,\n payload: {\n percent,\n seconds\n }\n });\n onSeekPositionChange && onSeekPositionChange(seconds);\n },\n [duration, getPercentFromInput, onSeekPositionChange]\n );\n const handleOnChange = useCallback(\n (e: h.JSX.TargetedEvent<HTMLInputElement, Event>) => {\n const percent = getPercentFromInput(e);\n setDrag(null);\n onChange && onChange(percent);\n onSeekPositionChange && onSeekPositionChange(null);\n },\n [getPercentFromInput, onChange, onSeekPositionChange]\n );\n\n const animation = drag == null && playState === PlayState.Playing;\n\n return (\n <div className={`range Js8 --movement-${animation ? \"animation\" : \"position\"} --type-${type}`} disabled={!loaded || isInputLiveRadio || playState === PlayState.Error}>\n {loaded && type !== RangeType.MobileMini && playState !== PlayState.Error && (\n <input\n ref={inputRef}\n type=\"range\"\n className=\"hiddenRange\"\n min={0}\n max={inputRange}\n step={1}\n disabled={disabled}\n onMouseUp={handleOnChange}\n onTouchEnd={handleOnChange}\n onInput={handleOnInput}\n />\n )}\n <div className={`visualRange --inputLiveRadio-${isInputLiveRadio}`}>\n <div className={`progress --hideThumb-${isInputLiveRadio}`} key={random} style={progressStyle} />\n </div>\n </div>\n );\n};\n","export * from \"./PlayRange\";\n","import { h } from \"preact\";\nimport \"./RadioButton.scss\";\n\ninterface Props {\n className?: string;\n checked?: boolean;\n onChange?: () => void;\n name: string;\n}\n\nexport const RadioButton = ({ className, checked, onChange, name }: Props) => {\n return <input checked={checked} className={`radioButton Y0w ${className ?? \"\"}`} type=\"radio\" name={name} onChange={onChange} />;\n};\n","export * from \"./RadioButton\";\n","import { h } from \"preact\";\nimport { useState } from \"preact/hooks\";\nimport \"./Select.scss\";\nimport { TextInputState } from \"../textInput\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { Icon, IconName } from \"components/atoms/icon\";\n\nexport interface SelectOption<T> {\n value: T;\n text: string;\n id: string;\n seleced?: boolean;\n}\n\ninterface Props<T> {\n className?: string;\n disabled: boolean;\n onChange: (value: T) => void;\n onFocus: () => void;\n options: SelectOption<T>[];\n state?: TextInputState;\n}\n\nexport const Select = <T,>({ className, options, state = TextInputState.Default, disabled, onChange, onFocus }: Props<T>) => {\n const input = (value: string) => {\n const selected = options.find((option) => option.id === value);\n if (!selected) {\n log.error({ code: \"web-210729-1343\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n onChange(selected.value);\n };\n\n const [hasFocus, setHasFocus] = useState(false);\n\n const onFocusFn = () => {\n setHasFocus(true);\n onFocus();\n };\n\n const onBlurFn = () => {\n setHasFocus(false);\n };\n\n return (\n <div className={`select ${className ?? \"\"} --state-${state} --focus-${hasFocus} --disabled-${disabled}`}>\n <select\n disabled={disabled}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onInput={(ev) => input((ev as any).target.value)}\n onFocus={onFocusFn}\n onBlur={onBlurFn}>\n {options.map((option) => (\n <option key={option.id} selected={option.seleced} value={option.id}>\n {option.text}\n </option>\n ))}\n </select>\n <Icon icon={IconName.ArrowDown} />\n </div>\n );\n};\n","export * from \"./Select\";\n","import { h } from \"preact\";\nimport \"./Switch.scss\";\n\ninterface Props {\n checked: boolean;\n disabled?: boolean;\n onClick: () => void;\n testLocator?: string;\n}\nexport const Switch = ({ checked, onClick, disabled, testLocator }: Props) => {\n return (\n <label className=\"switch k34\">\n <input disabled={disabled} type=\"checkbox\" checked={checked} onChange={onClick} data-cy={testLocator} />\n <span className=\"slider\">\n <span className=\"thumb\" />\n </span>\n </label>\n );\n};\n","export * from \"./Switch\";\n","import { h } from \"preact\";\nimport { useCallback, useEffect, useState } from \"preact/hooks\";\nimport \"./TextArea.scss\";\nimport { TextInputState } from \"../textInput\";\n\ninterface Props {\n className?: string;\n disabled: boolean;\n maxLength: number;\n onChange: (value: string) => void;\n onFocus: () => void;\n onBlur: () => void;\n placeholder?: string;\n spellcheck?: boolean;\n state?: TextInputState;\n value: string;\n}\n\nexport const TextArea = ({ spellcheck = false, disabled, maxLength, className, value: propVal, onChange, onFocus, onBlur, state = TextInputState.Default, placeholder }: Props) => {\n const [value, setValue] = useState(propVal ?? \"\");\n useEffect(() => setValue(propVal), [propVal]);\n\n const input = useCallback(\n (value: string) => {\n setValue(value);\n onChange(value);\n },\n [setValue, onChange]\n );\n\n return (\n <div className={`textArea ${className ?? \"\"} --state-${state}`}>\n <textarea\n maxLength={maxLength}\n placeholder={placeholder}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onInput={(ev) => input((ev as any).target.value)}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={disabled}\n data-gramm=\"false\"\n data-gramm_editor=\"false\"\n // eslint-disable-next-line react/no-unknown-property\n spellcheck={spellcheck}\n value={value} />\n </div>\n );\n};\n","export * from \"./TextArea\";\n","import type { ComponentChildren, RefObject } from \"preact\";\nimport { h } from \"preact\";\nimport { useEffect, useRef, useState } from \"preact/hooks\";\nimport \"./TextInput.scss\";\nimport { Button, ButtonDesign } from \"../button\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { useResizeObserver } from \"components/shared/hooks\";\nimport { Icon, IconName } from \"components/atoms/icon\";\n\nexport type TextInputType = \"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"url\";\n\nexport type AutoComplete =\n | \"additional-name\"\n | \"address-level1\"\n | \"address-level2\"\n | \"address-level3\"\n | \"address-level4\"\n | \"address-line1\"\n | \"address-line2\"\n | \"address-line3\"\n | \"bday\"\n | \"bday-day\"\n | \"bday-month\"\n | \"bday-year\"\n | \"cc-additional-name\"\n | \"cc-csc\"\n | \"cc-exp\"\n | \"cc-exp-month\"\n | \"cc-exp-year\"\n | \"cc-family-name\"\n | \"cc-given-name\"\n | \"cc-name\"\n | \"cc-number\"\n | \"cc-type\"\n | \"country\"\n | \"country-name\"\n | \"current-password\"\n | \"email\"\n | \"family-name\"\n | \"given-name\"\n | \"honorific-prefix\"\n | \"honorific-suffix\"\n | \"impp\"\n | \"language\"\n | \"name\"\n | \"new-password\"\n | \"nickname\"\n | \"off\"\n | \"on\"\n | \"one-time-code\"\n | \"organization\"\n | \"organization-title\"\n | \"photo\"\n | \"postal-code\"\n | \"sex\"\n | \"street-address\"\n | \"tel\"\n | \"tel-area-code\"\n | \"tel-country-code\"\n | \"tel-extension\"\n | \"tel-local\"\n | \"tel-national\"\n | \"transaction-amount\"\n | \"transaction-currency\"\n | \"url\"\n | \"username\";\n\nexport enum TextInputState {\n Default = \"Default\",\n Error = \"Error\"\n}\n\ninterface Props {\n autoComplete: AutoComplete;\n autoFocus?: boolean;\n className?: string;\n disabled?: boolean;\n left?: IconName;\n maxLength?: number;\n message?: string;\n onBlur?: (ev: Event) => boolean;\n onChange: (value: string) => void;\n onFocus?: () => void;\n onKeyDown?: (e: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => void;\n placeholder?: string;\n ref?: RefObject<HTMLInputElement>;\n right?: ComponentChildren;\n spellcheck?: boolean;\n state?: TextInputState;\n type: TextInputType;\n value: string;\n}\n\nexport const TextInput = ({\n autoComplete,\n autoFocus,\n className,\n disabled,\n left,\n maxLength,\n message,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n placeholder,\n ref,\n right,\n spellcheck = false,\n state = TextInputState.Default,\n type,\n value: propVal\n}: Props) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const rightRef = useRef<HTMLDivElement>(null);\n\n if (ref) {\n if (inputRef.current) ref.current = inputRef.current;\n }\n\n const rightWidth = useResizeObserver(rightRef.current ?? null)?.width ?? 0;\n if (rightWidth > 100) log.error({ code: \"web-210616-0919\", msg: DefaultLogMessage.UnexpectedValue });\n\n const [value, setValue] = useState(propVal ?? \"\");\n useEffect(() => setValue(propVal), [propVal]);\n\n useEffect(() => {\n if (autoFocus) {\n inputRef.current?.focus();\n }\n }, [autoFocus]);\n\n const clearFn = () => {\n inputRef.current?.focus();\n setValue(\"\");\n onChange(\"\");\n };\n\n const input = (value: string) => {\n setValue(value);\n onChange(value);\n };\n\n const onBlurFn = (ev: Event) => {\n if (onBlur) {\n const blur = onBlur(ev);\n if (!blur && inputRef.current) inputRef.current.focus();\n }\n };\n\n const clear = value != \"\" ? <Button className=\"clear\" design={ButtonDesign.DefaultSmall} icon={IconName.Delete16} onClick={clearFn} /> : null;\n\n const paddingLeft = `${left != null ? 24 + 24 + 16 : 24}px`;\n const paddingRight = `${rightWidth + 8 + 8}px`;\n\n return (\n <div className={`textInput ${className ?? \"\"} --state-${state}`}>\n <input\n disabled={disabled}\n style={{ paddingLeft, paddingRight }}\n width={0}\n ref={inputRef}\n type={type}\n autoComplete={autoComplete}\n value={value}\n placeholder={placeholder}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onInput={(ev) => input((ev as any).target.value)}\n onFocus={onFocus}\n onBlur={onBlurFn}\n onKeyDown={onKeyDown}\n // eslint-disable-next-line react/no-unknown-property\n spellcheck={spellcheck}\n size={1}\n maxLength={maxLength}\n />\n {left && <Icon className=\"left\" icon={left} />}\n <div ref={rightRef} className=\"right\">\n {right}\n {clear}\n </div>\n {message && <div className=\"error\">{message}</div>}\n </div>\n );\n};\n","export * from \"./TextInput\";\n","import type { RefObject } from \"preact\";\nimport { h } from \"preact\";\nimport type { TextInputState } from \"../TextInput\";\nimport { TextInput } from \"../TextInput\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n className?: string;\n autoFocus?: boolean;\n onChange: (value: string) => void;\n onFocus?: () => void;\n onBlur?: (ev: Event) => boolean;\n onKeyDown?: (e: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => void;\n placeholder?: string;\n state?: TextInputState;\n value: string;\n}\n\nexport const SearchTextInput = ({ className, autoFocus, value: text, placeholder, state, onChange, onFocus, onBlur, onKeyDown }: Props) => {\n return (\n <TextInput\n autoComplete=\"off\"\n autoFocus={autoFocus}\n className={className}\n left={IconName.Search}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n state={state}\n type=\"search\"\n value={text}\n />\n );\n};\n","export * from \"./SearchTextInput\";\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./VolumeRange.scss\";\nimport { dispatch } from \"global\";\nimport { PLAYER_SET_MUTE, PLAYER_SET_VOLUME } from \"global/actions\";\nimport { getVolumeIcon } from \"services/player/controllers/service/helpers/icons\";\nimport type { RootModel } from \"models/app\";\nimport { BasicRange } from \"components/atoms/controls/basicRange\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\n\ninterface Props {\n inline?: boolean;\n}\nexport const VolumeRange = ({ inline }: Props) => {\n const volume = useSelector((root: RootModel) => root.player.volume);\n const muted = useSelector((root: RootModel) => root.player.muted);\n const volumeLevel = muted ? 0 : volume * 100;\n\n const toggleMute = useCallback(() => dispatch({ type: PLAYER_SET_MUTE, payload: {} }), []);\n const setVolume = useCallback((percent: number) => dispatch({ type: PLAYER_SET_VOLUME, payload: { volume: percent / 100 } }), []);\n\n return (\n <div className={`volumeRange dbe`}>\n <Button\n design={ButtonDesign.DefaultBig}\n onClick={toggleMute}\n icon={getVolumeIcon(volume, muted)}\n round\n inline={inline ? { left: true, top: true, bottom: true } : undefined}\n />\n <BasicRange value={volumeLevel} onChange={setVolume} />\n </div>\n );\n};\n","export * from \"./VolumeRange\";\n","import type { ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport \"./Cover.scss\";\nimport { Button, ButtonDesign } from \"../controls/button\";\nimport { useTheme } from \"components/app/hooks\";\nimport { CoverTestLocator, assetPaths } from \"global/constants\";\nimport type { OpenMenuResult } from \"services/contextMenus\";\nimport { log } from \"services/logger\";\nimport { getAltText, getCoverSrcFromTemplate, getResourceCoverTemplate, getToolTip } from \"services/resource\";\nimport type { DraggableItemModel } from \"models/app\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { Theme } from \"models/view\";\nimport { useLinkContextFromPreview } from \"components/shared/hooks\";\nimport { useOnline } from \"components/shared/hooks/useOnline\";\n\nexport enum CoverSize {\n Size48 = 48,\n Size64 = 64,\n Size80 = 80,\n Size96 = 96,\n Size144 = 144,\n Size208 = 208,\n Size256 = 256,\n Size320 = 320,\n Size512 = 512\n}\n\nexport enum CoverRounding {\n Default,\n Circle,\n None\n}\n\ninterface Props {\n children?: ComponentChildren;\n className?: string;\n context: PreviewContextModel;\n disabled?: boolean;\n disabledAction?: boolean;\n draggableItem?: () => DraggableItemModel | null;\n dynamicSize: boolean | undefined;\n navigate: boolean;\n onClick?: () => void;\n onContextMenu?: (ev: MouseEvent) => Promise<OpenMenuResult | undefined>;\n rounding: CoverRounding | undefined;\n size: CoverSize;\n disableLazyLoad: boolean;\n highlight?: boolean;\n}\n\nexport function getPlaceholderPath(theme: Theme): string {\n switch (theme) {\n case Theme.Light:\n return assetPaths.coverPlaceholderLight;\n case Theme.Dark:\n return assetPaths.coverPlaceholderDark;\n }\n}\n\nexport const Cover = ({\n children,\n className,\n context,\n disabled,\n disabledAction,\n draggableItem,\n dynamicSize = false,\n navigate,\n onClick,\n onContextMenu,\n rounding = CoverRounding.Default,\n size,\n disableLazyLoad,\n highlight\n}: Props) => {\n const link = useLinkContextFromPreview(context);\n const { src, srcSet } = useCoverUrl(context, size);\n const width = !dynamicSize ? size : undefined;\n\n let roundingStr = \"\";\n if (rounding === CoverRounding.Circle) roundingStr = \"circle\";\n else if (rounding === CoverRounding.None) roundingStr = \"none\";\n else if (rounding === CoverRounding.Default && size <= 48) roundingStr = \"small\";\n else if (rounding === CoverRounding.Default) roundingStr = \"default\";\n\n const hasSrc = src != null;\n\n const theme = useTheme();\n const fallbackPath = useMemo(() => getPlaceholderPath(theme), [theme]);\n\n const onlineChage = useCallback((online: boolean) => online && setError(false), []);\n useOnline(onlineChage);\n\n const [error, setError] = useState(false);\n useEffect(() => setError(false), [src]);\n\n const ref = useRef<HTMLButtonElement>(null);\n\n const [highlighted, setHighlighed] = useState(false);\n useEffect(() => {\n if (!highlight || highlighted || !ref.current) return;\n setHighlighed(true);\n ref.current.focus({ preventScroll: true });\n }, [highlight, highlighted, ref]);\n\n const onError = useCallback(() => setError(true), [setError]);\n const imageOK = useMemo(() => hasSrc && !error, [hasSrc, error]);\n const title = link.resource ? getToolTip(link.resource) : null;\n const alt = link.resource ? getAltText(link.resource) : null;\n\n const srcSetPath = imageOK && srcSet ? srcSet : undefined;\n\n const path = useMemo(() => (imageOK && src ? src : fallbackPath), [imageOK, src, fallbackPath]);\n const image = <img src={path} srcSet={srcSetPath} loading={disableLazyLoad ? undefined : \"lazy\"} onError={onError} title={title ?? \"\"} alt={alt ?? \"\"} />;\n return (\n <div\n style={{ width, height: width }}\n data-cy={link.type ? CoverTestLocator(link.type) : undefined}\n className={`cover tOk ${className ?? \"\"} --size-${size ?? \"\"} --type-${\n link.type ?? \"\"\n } --dynamicSize-${dynamicSize} --rounding-${roundingStr} --border-${imageOK} --disabled-${disabled} --disabledAction-${disabledAction}`}>\n <Button\n ref={ref}\n disabled={disabled}\n design={ButtonDesign.Cover}\n link={disabledAction || !navigate ? undefined : link}\n onClick={disabledAction ? undefined : onClick}\n onContextMenu={disabledAction ? undefined : onContextMenu}\n draggableItem={draggableItem}>\n {image}\n </Button>\n {children}\n </div>\n );\n};\n\nfunction useCoverUrl(preview: PreviewContextModel, size: CoverSize): { src: string | null; srcSet: string | null } {\n return useMemo(() => {\n return getCoverSrcSet(preview, size);\n }, [preview, size]);\n}\n\nfunction getCoverSrcSet(preview: PreviewContextModel, size: CoverSize): { src: string | null; srcSet: string | null } {\n const template = getResourceCoverTemplate(preview);\n if (template == null || template == \"\") {\n return { src: null, srcSet: null };\n }\n\n const sizes = getCoverSizes(size);\n let mainSize = sizes[0]?.size ?? null;\n if (mainSize == null) {\n log.error({ code: \"web-211021-1248\", msg: \"main cover is null\" });\n mainSize = CoverSize.Size48;\n }\n\n const { src } = getCoverSrcFromTemplate(template, mainSize, mainSize);\n const sets: string[] = [];\n\n sizes.forEach((size) => {\n const { success, src: sizeSrc } = getCoverSrcFromTemplate(template, size.size, size.size);\n if (!success) return;\n\n if (!size.xDesciptor) {\n sets.push(sizeSrc);\n } else {\n sets.push(`${sizeSrc} ${size.xDesciptor}`);\n }\n });\n\n const srcSet = sets.length > 0 ? sets.join(\", \") : null;\n return { src, srcSet };\n}\n\nfunction getCoverSizes(size: CoverSize): { xDesciptor: string | null; size: number }[] {\n const pixels = [\n { xDesciptor: null, size },\n { xDesciptor: \"1.5x\", size: size * 1.5 },\n { xDesciptor: \"2x\", size: size * 2 }\n ];\n return pixels;\n}\n","import type { ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\nimport { CoverRounding } from \".\";\nimport { PlayableLoadSpinner } from \"../spinner\";\nimport type { CoverSize } from \"./Cover\";\nimport { Cover } from \"./Cover\";\nimport type { OpenMenuResult } from \"services/contextMenus\";\nimport { getIsCoverRounded } from \"services/resource\";\nimport type { DraggableItemModel } from \"models/app\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\n\ninterface Props {\n children?: ComponentChildren;\n className?: string;\n context: PreviewContextModel;\n disabled?: boolean;\n disabledAction?: boolean;\n draggableItem?: () => DraggableItemModel | null;\n dynamicSize?: boolean;\n navigate?: boolean;\n onClick?: () => void;\n onContextMenu?: (ev: MouseEvent) => Promise<OpenMenuResult | undefined>;\n rounding?: CoverRounding;\n size: CoverSize;\n spinner?: boolean;\n disableLazyLoad: boolean;\n highlight?: boolean;\n}\n\nexport const ResourceCover = ({\n children,\n className,\n context,\n disabled,\n disabledAction,\n draggableItem,\n dynamicSize,\n navigate = true,\n onClick,\n onContextMenu,\n rounding,\n size,\n spinner,\n disableLazyLoad,\n highlight\n}: Props) => {\n if (getIsCoverRounded(context.type, context.resource)) rounding = CoverRounding.Circle;\n\n return (\n <Cover\n className={className}\n context={context}\n disabled={disabled}\n highlight={highlight}\n disabledAction={disabledAction}\n draggableItem={draggableItem}\n dynamicSize={dynamicSize}\n navigate={navigate}\n onClick={onClick}\n onContextMenu={onContextMenu}\n rounding={rounding}\n size={size}\n disableLazyLoad={disableLazyLoad}>\n {children}\n {spinner && <PlayableLoadSpinner />}\n </Cover>\n );\n};\n","export * from \"./Cover\";\nexport * from \"./ResourceCover\";","import { h } from \"preact\";\nimport { useMemo } from \"preact/hooks\";\nimport { Button, ButtonDesign } from \"../controls/button\";\nimport { WebAppBrand } from \"shared/models\";\nimport { assetPaths } from \"global/constants\";\nimport { getNativeMobileAppStore, NativeMobileAppStore } from \"services/app\";\nimport { environment } from \"services/environment\";\nimport { DefaultLogMessage, log } from \"services/logger\";\n\nexport const DownloadAppButton = () => {\n const store = useMemo(() => getNativeMobileAppStore(), []);\n if (store == null) {\n log.error({ code: \"web-220215-1621\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n const brand = environment.webAppBrand;\n const appLink = getAppLink(store, brand);\n const imgUrl = getStoreUrl(store);\n\n if (appLink == null || imgUrl == null) return null;\n return (\n <Button className={`downloadApp ho5`} externalUrl={appLink} design={ButtonDesign.None}>\n <img src={imgUrl} />\n </Button>\n );\n};\n\nexport function getStoreUrl(store: NativeMobileAppStore): string | null {\n switch (store) {\n case NativeMobileAppStore.AppleAppStore:\n return assetPaths.appStore;\n case NativeMobileAppStore.GooglePlayStore:\n return assetPaths.googlePlay;\n default:\n return null;\n }\n}\nexport function getAppLink(store: NativeMobileAppStore, brand: WebAppBrand): string {\n switch (store) {\n case NativeMobileAppStore.AppleAppStore:\n switch (brand) {\n case WebAppBrand.Telmore:\n return \"https://apps.apple.com/dk/app/telmore-musik/id636503787\";\n case WebAppBrand.YouSee:\n return \"https://apps.apple.com/dk/app/yousee-musik/id1108892163\";\n }\n break;\n case NativeMobileAppStore.GooglePlayStore:\n switch (brand) {\n case WebAppBrand.Telmore:\n return \"https://play.google.com/store/apps/details?id=com.e247.telmore&gl=DK\";\n case WebAppBrand.YouSee:\n return \"https://play.google.com/store/apps/details?id=dk.yousee.musik&gl=DK\";\n }\n break;\n }\n}\n","export * from \"./DownloadAppButton\";\n","import { h } from \"preact\";\nimport \"./DragLabel.scss\";\n\nexport const DragLabel = () => <div id=\"dragLabel\" className=\"dragLabel kd7\" />;\n","import { h } from \"preact\";\nimport type { IconName } from \"./\";\nimport { IconSize } from \"./\";\nimport \"./Icon.scss\";\nimport { assetPaths } from \"global/constants\";\n\ninterface Props {\n icon: IconName;\n className?: string;\n alt?: string;\n title?: string;\n size?: IconSize;\n}\n\nexport const Icon = ({ className, icon, alt, title, size = IconSize.Default }: Props) => (\n <svg className={`icon KZi --size-${size} ${className ?? \"\"}`} alt={alt} title={title}>\n <use xlinkHref={`${assetPaths.iconSprites}#${icon}`} />\n </svg>\n);\n","export enum IconName {\n AddToPlaylist = \"add-to-playlist\",\n Airplay = \"airplay\",\n Albums = \"albums\",\n Appearance = \"appearance\",\n ArrowDown = \"arrow-down\",\n ArrowDownAndroid = \"arrow-down-android\",\n ArrowDownSmall = \"arrow-down-small\",\n ArrowLeft = \"arrow-left\",\n ArrowLeft16 = \"arrow-left_16\",\n ArrowLeftAndroid = \"arrow-left-android\",\n ArrowRight = \"arrow-right\",\n ArrowRight16 = \"arrow-right_16\",\n ArrowRightAndroid = \"arrow-right-android\",\n ArrowRightSmall = \"arrow-right-small\",\n ArrowUp = \"arrow-up\",\n ArrowUpAndroid = \"arrow-up-android\",\n ArrowUpSmall = \"arrow-up-small\",\n Artist = \"artist\",\n ArtistRadio = \"artist-radio\",\n Bluetooth = \"bluetooth\",\n Calendar = \"calendar\",\n Cast = \"cast\",\n Checkmark = \"checkmark\",\n Checkmark16 = \"checkmark_16\",\n Checkmark40 = \"checkmark_40\",\n Chromecast = \"chromecast\",\n Close = \"close\",\n Delete = \"delete\",\n Delete16 = \"delete_16\",\n DotNotification = \"dot-notification\",\n Download = \"download\",\n EditPlaylist = \"edit-playlist\",\n EditProfile40 = \"edit-profile_40\",\n Error = \"error\",\n Error40 = \"error_40\",\n Favorites = \"favorites\",\n FavoritesActive = \"favorites-active\",\n Feedback = \"feedback\",\n FollowArtist = \"follow-artist\",\n GuidedHelp = \"guided-help\",\n HidePass = \"hidepass\",\n Home = \"home\",\n Kebab = \"kebab\",\n KebabRight = \"kebab-right\",\n Language = \"language\",\n Location = \"location\",\n Meatballs = \"meatballs\",\n Meatballs16 = \"meatballs_16\",\n MyMusic = \"my-music\",\n Next = \"next\",\n None = \"none\", // doesn't exist, use to take up space\n Note = \"note\",\n Notification = \"notification\",\n Pause = \"pause\",\n Pause16 = \"pause_16\",\n Pause40 = \"pause_40\",\n PauseDownload = \"pause-download\",\n Phone = \"phone\",\n Play = \"play\",\n Play16 = \"play_16\",\n Play40 = \"play_40\",\n PlayAsLast = \"play-as-last\",\n PlayAsNext = \"play-as-next\",\n PlaySmall = \"play-small\",\n Playback = \"playback\",\n Playlist = \"playlist\",\n Plus16 = \"plus_16\",\n Plus40 = \"plus_40\",\n Previous = \"previous\",\n Private = \"private\",\n Profile = \"profile\",\n Profile2 = \"profile2\",\n Public = \"public\",\n Queue = \"queue\",\n Radio = \"radio\",\n RenamePlaylist = \"rename-playlist\",\n Repeat = \"repeat\",\n RepeatActive = \"repeat-active\",\n RepeatTrack = \"repeat-track\",\n Search = \"search\",\n Search16 = \"search_16\",\n Settings = \"settings\",\n ShareAndroid = \"share-android\",\n ShareFacebook = \"share-facebook\",\n ShareIos = \"share-ios\",\n ShareMessenger = \"share-messenger\",\n ShareTwitter = \"share-twitter\",\n ShareUrl = \"share-url\",\n ShowPass = \"showpass\",\n Shuffle = \"shuffle\",\n ShuffleActive = \"shuffle-active\",\n SignIn = \"sign-in\",\n SignOut = \"sign-out\",\n Songs = \"songs\",\n Sort = \"sort\",\n Sound = \"sound\",\n Star = \"star\",\n Stop = \"stop\",\n Stop16 = \"stop_16\",\n Stop40 = \"stop_40\",\n Trash = \"trash\",\n VolumeDown = \"volume-down\",\n VolumeMute = \"volume-mute\",\n VolumeUp = \"volume-up\",\n Lyrics = \"lyrics\"\n}\n","export enum IconSize {\n Small = \"small\",\n Default = \"default\",\n Big = \"big\"\n}\n","export * from \"./Icon\";\nexport * from \"./IconSize\";\nexport * from \"./IconName\";\n","import { h } from \"preact\";\nimport \"./Line.scss\";\n\nexport const Line = ({ className }: { className?: string }) => <hr className={`line nl3 ${className ?? \"\"}`} />;\n","export * from \"./Line\";","import { h } from \"preact\";\nimport { useMemo } from \"preact/hooks\";\nimport \"./Logo.scss\";\nimport { Button, ButtonDesign } from \"../controls/button\";\nimport { useTheme } from \"components/app/hooks\";\nimport { assetPaths } from \"global/constants\";\nimport { ContentType } from \"models/ModelType\";\nimport { Theme } from \"models/view/Theme\";\nimport { useLinkAndPreviewContext, useSectionContext } from \"components/shared/hooks\";\n\nexport function Logo() {\n const theme = useTheme();\n const url = useLogoUrl(theme);\n\n const section = useSectionContext(ContentType.SideBar, null, null, null, null);\n const link = useLinkAndPreviewContext(ContentType.FrontPage, null, section, null);\n\n return (\n <Button className={`logo y4m`} link={link} design={ButtonDesign.None}>\n <img src={url} />\n </Button>\n );\n}\n\nfunction useLogoUrl(theme: Theme): string {\n return useMemo(() => {\n switch (theme) {\n case Theme.Light:\n return assetPaths.logoLight;\n case Theme.Dark:\n return assetPaths.logoDark;\n }\n }, [theme]);\n}\n","export * from \"./Logo\";\n","import { h } from \"preact\";\nimport { useEffect } from \"preact/hooks\";\nimport \"./Soundbars.scss\";\nimport type { PlayablePreviewModel } from \"models/domain\";\nimport { usePlayablePropertiesFromState, useRefUpdate, useTabIsActive } from \"components/shared/hooks\";\n\nexport enum SoundbarState {\n Playing,\n Paused\n}\n\nexport enum SoundbarStyle {\n CoverOverlay = \"coverOverlay\",\n Default = \"default\"\n}\n\ninterface SoundbarsProps {\n state: SoundbarState;\n style: SoundbarStyle;\n}\n\nexport const Soundbars = ({ state, style }: SoundbarsProps) => {\n const ref = useRefUpdate<SVGSVGElement>();\n\n const isTabActive = useTabIsActive();\n\n useEffect(() => {\n const svg = ref.current;\n if (svg != null) {\n state === SoundbarState.Playing ? svg.unpauseAnimations() : svg.pauseAnimations();\n }\n }, [state, ref, isTabActive]);\n\n return (\n <div className={`soundbars kh6 --style-${style} --animation-${state === SoundbarState.Playing}`}>\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" ref={ref}>\n <line x1=\"5\" x2=\"5\" y1=\"8\" y2=\"20\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <animate attributeName=\"y1\" values=\"8;4;8;4;8\" dur=\"1.2s\" repeatCount=\"indefinite\" />\n </line>\n <line x1=\"12\" x2=\"12\" y1=\"4\" y2=\"20\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <animate attributeName=\"y1\" values=\"4;12;4;8;4\" dur=\"1.2s\" repeatCount=\"indefinite\" />\n </line>\n <line x1=\"19\" x2=\"19\" y1=\"8\" y2=\"20\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <animate attributeName=\"y1\" values=\"8;4;12;7;8\" dur=\"1.2s\" repeatCount=\"indefinite\" />\n </line>\n </svg>\n </div>\n );\n};\n\nexport interface PlayableSoundbarsProps {\n playable: PlayablePreviewModel;\n style: SoundbarStyle;\n}\n\nexport const PlayableSoundbars = ({ playable, style }: PlayableSoundbarsProps) => {\n const { isPlaying } = usePlayablePropertiesFromState(playable);\n const state = isPlaying ? SoundbarState.Playing : SoundbarState.Paused;\n return <Soundbars state={state} style={style} />;\n};\n","export * from \"./Soundbars\";\n","import { h } from \"preact\";\nimport \"./Spinner.scss\";\nimport { useLayoutEffect, useState } from \"preact/hooks\";\nimport { SpinnerSize } from \".\";\nimport { SpinnerState, useBufferingSpinner } from \"./useBufferingSpinner\";\nimport { animations } from \"global/constants\";\nimport { DelayType, useDelay } from \"components/shared/hooks\";\n\ninterface SpinnerProps {\n state: SpinnerState.In | SpinnerState.Out;\n color?: \"White\" | \"Brand\";\n size?: SpinnerSize;\n}\n\nconst Spinner = ({ state, color = \"White\", size = SpinnerSize.Size24 }: SpinnerProps) => {\n const delay = useDelay({ delay: { type: DelayType.AnimationFrame }, reset: state });\n if (!delay && state === SpinnerState.In) state = SpinnerState.Out;\n\n let s: number;\n let c: number;\n let r: number;\n\n switch (size) {\n case SpinnerSize.Size24: {\n s = 24;\n c = 12;\n r = 9;\n break;\n }\n case SpinnerSize.Size48: {\n s = 48;\n c = 24;\n r = 19;\n break;\n }\n }\n\n return (\n <div className={`spinner HsO --animate-${state} --color-${color} --size-${size}`}>\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n width={`${s}px`}\n height={`${s}px`}\n viewBox={`0 0 ${s} ${s}`}\n xmlSpace=\"preserve\">\n <circle className=\"circle\" cx={c} cy={c} r={r} fill=\"transparent\" stroke=\"currentColor\" strokeWidth=\"2\" />\n </svg>\n </div>\n );\n};\n\nexport const PlayableLoadSpinner = () => {\n const state = useBufferingSpinner();\n if (state == SpinnerState.None) return null;\n\n return <Spinner state={state} />;\n};\n\nexport const ContentLoadSpinner = () => {\n const [visible, setVisible] = useState(false);\n\n useLayoutEffect(() => {\n setVisible(false);\n const timeoutId = window.setTimeout(() => setVisible(true), animations.spinnerPageLoad);\n return () => clearTimeout(timeoutId);\n }, []);\n\n return visible ? <Spinner state={SpinnerState.In} color=\"Brand\" size={SpinnerSize.Size24} /> : null;\n};\n\nexport const PageLoadSpinner = () => {\n return <Spinner state={SpinnerState.In} color=\"Brand\" size={SpinnerSize.Size48} />;\n};\n","export * from \"./useBufferingSpinner\";\nexport * from \"./Spinner\";","import { useState, useEffect } from \"preact/hooks\";\nimport { PlayState } from \"models/app/player\";\nimport { useAudioProperties } from \"components/shared/hooks\";\n\nexport enum SpinnerState {\n None = \"none\",\n In = \"in\",\n Out = \"out\"\n}\n\nexport enum SpinnerSize {\n Size24 = \"Size24\",\n Size48 = \"Size48\"\n}\n\nexport const useBufferingSpinner = () => {\n const should = useAudioProperties().playState === PlayState.Buffering;\n const [state, setState] = useState<SpinnerState>(SpinnerState.None);\n\n useEffect(() => {\n if (!should && state === SpinnerState.None) return;\n if (should && state === SpinnerState.In) return;\n\n let timeOutId: number | null = null;\n if (should && state === SpinnerState.None) {\n timeOutId = window.setTimeout(() => {\n timeOutId = null;\n setState(SpinnerState.In);\n }, 2000); // todo replace with standardized animation constants\n }\n\n if (!should && state === SpinnerState.In) {\n timeOutId = null;\n setState(SpinnerState.Out);\n timeOutId = window.setTimeout(() => {\n setState(SpinnerState.None);\n }, 400); // todo replace with standardized animation constants\n }\n\n return () => {\n timeOutId != null && window.clearTimeout(timeOutId);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [should, state]);\n\n return state;\n};\n","import { ComponentChildren, h } from \"preact\";\nimport \"./ScrollingText.scss\";\nimport { useScrollingText } from \"../../shared/hooks/useScrollingText\";\n\ninterface Props {\n children: ComponentChildren;\n}\n\nexport const ScrollingText = ({ children }: Props) => {\n const { ref, contentRef, scroll, running, duration1, duration2 } = useScrollingText();\n\n const move = duration1 ? `move ${duration1}s forwards 1 linear 0s` : null;\n const fade = duration2 ? `fade ${duration2}s forwards 1 linear 0s` : null;\n\n return (\n <div ref={ref} className={`scrollingText pEd --scroll-${scroll} --running-${running}`}>\n <div className=\"a\" style={{ animation: fade }} />\n <div className=\"b\" />\n <div className=\"content\" style={{ animation: move }}>\n <div ref={contentRef}>{children}</div>\n {scroll && <div>{children}</div>}\n </div>\n </div>\n );\n};\n","export * from \"./ScrollingText\";\n","import { h } from \"preact\";\nimport \"./actionrow.scss\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { Icon, IconName } from \"components/atoms/icon\";\n\ninterface Props {\n icon: IconName;\n text: string;\n onClick: () => void;\n}\n\nexport const ActionRow = ({ icon, text, onClick }: Props) => {\n return (\n <div className={`actionRow cXp previewRow weG --type-custom --columns-1`}>\n <Button activated={false} design={ButtonDesign.PlayableRow} onClick={onClick}>\n <figure>\n <div className=\"actionRowIcon\">\n <Icon icon={icon} />\n </div>\n <figcaption>\n <div className=\"text\">{text}</div>\n </figcaption>\n </figure>\n </Button>\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useEffect, useLayoutEffect, useMemo, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { Banner } from \"./Banner\";\nimport { useTranslations } from \"global/config\";\nimport { BannerWarning, RootModel } from \"models/app\";\nimport { DelayType, useDelay } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { showMaintenanceModal } from \"components/organisms/modal/modals/MaintenanceModal\";\nimport { useInviteFlowHelpUrl } from \"services/backend\";\n\nexport const AppBanner = () => {\n const banner = useBottomBanner();\n const latest = useLatestBanner(banner);\n const { render, open } = useBannerOpen(banner);\n\n if (!render || !latest) return null;\n\n switch (latest) {\n case BannerWarning.MaintenanceBanner:\n return <MaintenanceBanner open={open} />;\n case BannerWarning.NoConnection:\n return <NoConnectionBanner open={open} />;\n case BannerWarning.SentryCutoff:\n return <SentryCutoffBanner open={open} />;\n }\n};\n\ninterface Props {\n open: boolean;\n}\n\nconst MaintenanceBanner = ({ open }: Props) => {\n const message = useSelector((root: RootModel) => root.notifications.maintenanceBannerData?.AppMaintenanceBannerTitle) ?? \"\";\n const translations = useTranslations();\n const button = (\n <Button design={ButtonDesign.TextInlineMedium} onClick={showMaintenanceModal}>\n {translations.MaintenanceBannerReadMore}\n </Button>\n );\n return <Banner message={message} open={open} button={button} />;\n};\n\nconst SentryCutoffBanner = ({ open }: Props) => {\n const { model: inviteFlowReadMoreLink } = useInviteFlowHelpUrl({});\n const clickHandler = () => {\n window.open(inviteFlowReadMoreLink as string, \"_blank\");\n };\n const translations = useTranslations();\n const button = (\n <Button design={ButtonDesign.TextInlineMedium} onClick={clickHandler}>\n {translations.SentryCutOffReadMoreOption}\n </Button>\n );\n return <Banner message={translations.SentryCutOffTitle} open={open} button={button} serious />;\n};\n\nconst NoConnectionBanner = ({ open }: Props) => {\n const translations = useTranslations();\n return <Banner message={translations.ErrorBannerNoNetworkExternal} open={open} />;\n};\n\nfunction bannerWarningPriority(warning: BannerWarning): number {\n switch (warning) {\n case BannerWarning.MaintenanceBanner:\n return 0;\n case BannerWarning.NoConnection:\n return 1;\n case BannerWarning.SentryCutoff:\n return 2;\n }\n}\n\nexport function useBottomBanner(): BannerWarning | null {\n const banners = useSelector((root: RootModel) => root.notifications.banners);\n const sorted = useMemo(() => banners.sort((a, b) => bannerWarningPriority(a) - bannerWarningPriority(b)), [banners]);\n return sorted[0] ?? null;\n}\n\nfunction useLatestBanner(warning: BannerWarning | null) {\n const [latest, setLatest] = useState<BannerWarning | null>(null);\n\n useEffect(() => {\n if (warning != null) setLatest(warning);\n }, [warning]);\n\n return latest;\n}\n\nfunction useBannerOpen(warning: BannerWarning | null) {\n const [hasWarning, setHasWarning] = useState(false);\n const [closedDelay, setClosedDelay] = useState(false);\n\n useLayoutEffect(() => {\n setHasWarning(!!warning);\n }, [warning]);\n\n useEffect(() => {\n setClosedDelay(true);\n if (hasWarning) return;\n const timeOutId = window.setTimeout(() => setClosedDelay(false), 5000);\n return () => window.clearTimeout(timeOutId);\n }, [hasWarning]);\n\n const render = closedDelay || hasWarning;\n const open = useDelay({ delay: { type: DelayType.TimeOut, msec: 0 }, reset: render }) && hasWarning;\n\n return { render, open };\n}\n","import { h } from \"preact\";\nimport \"./Banner.scss\";\n\ninterface BannerProps {\n message: string;\n open: boolean;\n button?: JSX.Element;\n serious?: boolean;\n}\nexport const Banner = ({ button, message, open, serious }: BannerProps) => {\n return (\n <div className={`banner Y6s --center-${button == null} --show-${open} ${serious ? \"serious\" : \"\"}`}>\n <div className=\"message\">{message}</div>\n {button}\n </div>\n );\n};\n","export * from \"./AppBanner\";\nexport * from \"./Banner\";\n","import { h } from \"preact\";\nimport { useSelector } from \"react-redux\";\nimport { TestLocator } from \"global/constants\";\nimport { userToggleCastSession } from \"services/player/controllers/chromeCast/service/actions/toggleCastSession\";\nimport type { RootModel } from \"models/app\";\nimport { AudioControllerType } from \"models/app/player\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\n\nexport const CastButton = () => {\n const isAvailable = useSelector((root: RootModel) => root.cast.isAvailable);\n const isControllerChromecast = useSelector((root: RootModel) => root.player.controller) === AudioControllerType.Chromecast;\n\n return (\n <Button\n disabled={!isAvailable}\n onClick={userToggleCastSession}\n toggled={isControllerChromecast}\n icon={IconName.Chromecast}\n design={ButtonDesign.PlayerSecondary}\n testLocator={TestLocator.PlayerChromecastButton}\n />\n );\n};\n","export * from \"./CastButton\";\n","import type { ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\nimport \"./Control.scss\";\n\nexport enum ControlStyle {\n Default = \"Default\",\n ContextMenu = \"ContextMenu\"\n}\n\ninterface Props {\n className?: string;\n onClick?: () => void;\n style?: ControlStyle;\n left?: ComponentChildren;\n right?: ComponentChildren;\n title: string;\n text?: string;\n}\n\nexport const Control = ({ className, onClick, style = ControlStyle.Default, left, right, title, text }: Props) => {\n const click = (ev: h.JSX.TargetedEvent<HTMLLabelElement, MouseEvent>) => {\n ev.stopPropagation();\n onClick && onClick();\n };\n const hasPrimaryAction = onClick != null;\n\n return (\n <label onClick={click} className={`control PTz --design-${style} --hasPrimaryAction-${hasPrimaryAction} ${className ?? \"\"}`}>\n {left && <div className=\"left\">{left}</div>}\n <div className=\"text\">\n <h2>{title}</h2>\n {text && <p>{text}</p>}\n </div>\n {right && <div className=\"right\">{right}</div>}\n </label>\n );\n};\n","import { ComponentChildren, h } from \"preact\";\nimport \"./ControlGroup.scss\";\n\ninterface Props {\n title?: string;\n children: ComponentChildren;\n className?: string;\n}\n\nexport const ControlGroup = ({ title, children, className }: Props) => {\n \n return (\n <section className={`controlGroup ${className ?? \"\"}`}>\n {title && <h1>{title}</h1>}\n <div>{children}</div>\n </section>\n );\n};\n","import { h } from \"preact\";\nimport \"./DropPin.scss\";\n\ninterface Props {\n hover: boolean;\n customClass?: string;\n}\nexport const DropPin = ({ hover, customClass }: Props) => {\n return <div className={`dropPin GtR --hover-${hover} ${customClass ?? \"\"}`} />;\n};\n","import { Fragment, h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./DropZone.scss\";\nimport { DropPin } from \"./DropPin\";\nimport { dispatch, store } from \"global\";\nimport { SET_USER_DRAGGING } from \"global/actions\";\nimport { showDropZone } from \"services/controlPanel/initControlPanelService\";\nimport type { DraggableItemModel, RootModel } from \"models/app\";\n\ninterface Props {\n allowDrop?: (item: DraggableItemModel) => boolean;\n onHoverChange?: (isHovered: boolean) => void;\n onDropFn: (item: DraggableItemModel) => void;\n customClass?: string;\n}\nexport const DropZone = ({ allowDrop, onDropFn, onHoverChange, customClass }: Props) => {\n const [dragHover, setDragHover] = useState(false);\n const userDragging = useSelector((root: RootModel) => root.ui.userDragging);\n\n const dragOver = useCallback(\n (e: DragEvent) => {\n if (allowDrop) {\n const item = store.getState().ui.userDraggingItem;\n if (!item || !allowDrop(item)) {\n return false;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n return false;\n },\n [allowDrop]\n );\n\n const dragEnter = useCallback(() => {\n if (allowDrop) {\n const item = store.getState().ui.userDraggingItem;\n if (!item || !allowDrop(item)) {\n return false;\n }\n }\n setDragHover(true);\n if (onHoverChange) {\n onHoverChange(true);\n }\n }, [allowDrop, onHoverChange]);\n\n const dragLeave = useCallback(() => {\n setDragHover(false);\n if (onHoverChange) {\n onHoverChange(false);\n }\n }, [onHoverChange]);\n\n const drop = useCallback(\n (e: DragEvent) => {\n setDragHover(false);\n e.preventDefault();\n e.stopPropagation();\n if (onHoverChange) {\n onHoverChange(false);\n }\n\n const data = e.dataTransfer?.getData(\"dragItem\");\n if (data == null) return;\n const item: DraggableItemModel = JSON.parse(data);\n\n if (allowDrop && !allowDrop(item)) {\n return;\n }\n\n onDropFn(item);\n dispatch({ type: SET_USER_DRAGGING, payload: { item: null } });\n },\n [onHoverChange, onDropFn, allowDrop]\n );\n\n return (\n <Fragment>\n <DropPin customClass={customClass} hover={userDragging && dragHover} />\n <div\n className={`dropZone Ase --userDrag-${userDragging} --showDropZone-${!!showDropZone} ${customClass ?? \"\"}`}\n onDragOver={dragOver}\n onDragLeave={dragLeave}\n onDragEnter={dragEnter}\n onDrop={drop}\n />\n </Fragment>\n );\n};\n","export * from \"./DropZone\";\n","import { ComponentChild, h } from \"preact\";\nimport \"./EmptyState.scss\";\n\ninterface Props {\n title: string;\n subtitle: string;\n button?: ComponentChild;\n}\n\nexport const EmptyState = ({ title, subtitle, button }: Props) => (\n <div className=\"emptyState fpo\">\n <h2>{title}</h2>\n <p>{subtitle}</p>\n {\n button\n }\n </div>\n);\n","import { ComponentChildren, h } from \"preact\";\nimport { InputLabel } from \"components/atoms/controls/label\";\nimport { TextInputState } from \"components/atoms/controls/textInput\";\nimport \"./InputSection.scss\";\n\ninterface Props {\n title?: string;\n children: ComponentChildren;\n className?: string;\n state: TextInputState;\n label: string;\n}\n\nexport const InputSection = ({ title, state, label, children, className }: Props) => {\n return (\n <section className={`inputSection ${className ?? \"\"}`}>\n {title && <h1 className=\"title\">{title}</h1>}\n <div className=\"control\">{children}</div>\n <div className=\"label\">\n <InputLabel state={state}>{label}</InputLabel>\n </div>\n </section>\n );\n};\n","export * from \"./InputSection\";\n","import { h } from \"preact\";\nimport { ItemGroup } from \"./ItemGroup\";\nimport { Badge } from \"components/atoms/badge/Badge\";\nimport { Icon, IconName } from \"components/atoms/icon\";\n\ninterface Props {\n icon: IconName;\n title: string;\n subtitle?: string;\n}\n\nexport const IconGroup = ({ icon, title, subtitle }: Props) => {\n return (\n <ItemGroup title={title} subtitle={subtitle}>\n <Badge>\n <Icon icon={icon} />\n </Badge>\n </ItemGroup>\n );\n};\n","import { ComponentChild, ComponentChildren, h } from \"preact\";\nimport { ScrollingText } from \"components/atoms/text\";\nimport \"./ItemGroup.scss\";\n\ninterface Props {\n children?: ComponentChildren;\n className?: string;\n title: ComponentChild;\n subtitle?: ComponentChild;\n scrollingText?: boolean;\n}\n\nexport const ItemGroup = ({ children, className, title, subtitle, scrollingText }: Props) => {\n title = scrollingText ? <ScrollingText>{title}</ScrollingText> : title;\n subtitle = scrollingText ? <ScrollingText>{subtitle}</ScrollingText> : subtitle;\n\n return (\n <figure className={`itemGroup OhR ${className ?? \"\"}`}>\n {children}\n <figcaption>\n {title}\n {subtitle}\n </figcaption>\n </figure>\n );\n};\n","import { h } from \"preact\";\nimport \"./LiveRadioTitle.scss\";\nimport { PlayState } from \"models/app/player\";\nimport { useAudioProperties } from \"components/shared/hooks\";\nimport { Soundbars, SoundbarState, SoundbarStyle } from \"components/atoms/soundbars\";\n\nexport const LiveRadioTitle = () => {\n const { playState } = useAudioProperties();\n const soundbarPlayState = playState === PlayState.Playing ? SoundbarState.Playing : SoundbarState.Paused;\n return (\n <div className=\"liveRadioTitle ue2\">\n <Soundbars state={soundbarPlayState} style={SoundbarStyle.Default} />\n <h1>Live</h1>\n </div>\n );\n};\n","export * from \"./LiveRadioTitle\";\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { Control, ControlStyle } from \"../controlGroup/Control\";\nimport { ControlGroup } from \"../controlGroup/ControlGroup\";\nimport { dispatch } from \"global\";\nimport { SET_LOCALIZATION_SETTING } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport type { RootModel } from \"models/app\";\nimport { LanguageSetting } from \"models/view/Localization\";\nimport { CheckMark } from \"components/atoms/controls/checkMark\";\n\ninterface Props {\n className?: string;\n}\n\nexport const LocalizationSettingControl = ({ className }: Props) => {\n const localizationSetting = useSelector((root: RootModel) => root.ui.localizationSetting);\n\n const change = useCallback((setting: LanguageSetting) => {\n dispatch({ type: SET_LOCALIZATION_SETTING, payload: { localizationSetting: setting } });\n }, []);\n\n const translations = useTranslations();\n const settingsLanguageDanish = translations.SettingsLanguageDanish;\n const settingsLanguageEnglish = translations.SettingsLanguageEnglish;\n const settingsLanguageSystem = translations.SettingsLanguageSystem;\n\n return (\n <ControlGroup className={`localizationSettingControl ${className ?? \"\"}`}>\n <Control\n title={settingsLanguageDanish}\n onClick={() => change(LanguageSetting.Danish)}\n left={\n <CheckMark\n type=\"radio\"\n checked={localizationSetting === LanguageSetting.Danish}\n onChange={() => change(LanguageSetting.Danish)}\n name={settingsLanguageDanish}\n />\n }\n style={ControlStyle.ContextMenu}\n />\n <Control\n title={settingsLanguageEnglish}\n onClick={() => change(LanguageSetting.English)}\n left={\n <CheckMark\n type=\"radio\"\n checked={localizationSetting === LanguageSetting.English}\n onChange={() => change(LanguageSetting.English)}\n name={settingsLanguageEnglish}\n />\n }\n style={ControlStyle.ContextMenu}\n />\n <Control\n title={settingsLanguageSystem}\n onClick={() => change(LanguageSetting.Auto)}\n text={translations.SettingsLanguageSystemDescription}\n left={<CheckMark type=\"radio\" checked={localizationSetting === LanguageSetting.Auto} onChange={() => change(LanguageSetting.Auto)} name={settingsLanguageSystem} />}\n style={ControlStyle.ContextMenu}\n />\n </ControlGroup>\n );\n};\n","import type { ComponentChildren } from \"preact\";\nimport { h, Fragment } from \"preact\";\nimport { DesktopTopBar } from \"./desktop\";\nimport { MobileTopBar } from \"./mobile\";\nimport type { QueryError } from \"services/backend/backendService\";\nimport type { LinkContextModel, PageContextModel } from \"models/app/resourceContextModel\";\nimport { useAppMediaSize, MediaSize } from \"components/shared/hooks/useAppMediaSize\";\n\nexport interface PageTopBarProps {\n error?: QueryError | null;\n page?: PageContextModel | null;\n middle?: ComponentChildren;\n back?: boolean;\n up?: LinkContextModel;\n disableMobileTitle?: boolean;\n onClose?: () => void;\n right?: ComponentChildren;\n}\n\nexport const PageTopBar = (props: PageTopBarProps) => {\n const appSize = useAppMediaSize();\n const isMobile = appSize === MediaSize.Mobile;\n return (\n <Fragment>\n {isMobile && <MobileTopBar {...props} />}\n <DesktopTopBar {...props} showRight={!isMobile} />\n </Fragment>\n );\n};\n","import { h } from \"preact\";\nimport \"./DesktopTopBar.scss\";\nimport type { PageTopBarProps } from \"..\";\nimport { getLink } from \"services/resource\";\n\ninterface Props extends PageTopBarProps {\n showRight: boolean;\n}\n\nexport const DesktopTopBar = ({ page, middle: left, right, error, showRight }: Props) => {\n if (error != null) return null;\n\n left ??= page && getLink(page.type, page.resource)?.text;\n left = typeof left === \"string\" ? <h1>{left}</h1> : left;\n\n return (\n <div className={\"desktopTopBar KlM\"}>\n {<div className=\"left\">{left && left}</div>}\n {right && showRight && <div className=\"right\">{right}</div>}\n </div>\n );\n};\n","export * from \"./DesktopTopBar\";\n\n","export * from \"./PageTopBar\";\n\n","import { h } from \"preact\";\nimport \"./MobileTopBar.scss\";\nimport type { PageTopBarProps } from \"..\";\nimport { Button } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\n\nexport const MobileTopBar = ({ error, middle, up, back, disableMobileTitle, onClose, right }: PageTopBarProps) => {\n if (error) {\n right = null;\n middle = null;\n } else {\n middle = typeof middle === \"string\" ? <h1>{middle}</h1> : middle;\n }\n\n const backButton = back && <Button className=\"up\" icon={IconName.ArrowLeftAndroid} onClick={() => window.history.back()} />;\n const upButton = up && <Button className=\"up\" icon={IconName.ArrowLeftAndroid} link={up} />;\n const closeButton = onClose && <Button className=\"close\" icon={IconName.ArrowDown} onClick={onClose} />;\n\n return (\n <div className={`mobileTopBar KlM${disableMobileTitle ? \" nomiddle\" : \"\"}`}>\n <div className=\"left\">{backButton ?? upButton ?? closeButton}</div>\n {!disableMobileTitle && <div className=\"middle\">{middle && middle}</div>}\n <div className=\"right\">{right}</div>\n </div>\n );\n};\n","export * from \"./MobileTopBar\";\n\n","import { Fragment, h } from \"preact\";\nimport { useSelector } from \"react-redux\";\nimport { MobileTopBar } from \"..\";\nimport { dispatch } from \"global\";\nimport { SET_MAXIPLAYER_OPEN } from \"global/actions\";\nimport { getLinkFromResource } from \"services/resource\";\nimport type { RootModel } from \"models/app\";\nimport { AudioInputType } from \"models/app/player\";\nimport { MobileMaxiPlayerOpen } from \"models/app/UiModel\";\nimport { CastButton } from \"components/molecules/castButton\";\nimport { LiveRadioTitle } from \"components/molecules/liveRadioTitle\";\nimport { ExpandDirection, VolumeExpandButton } from \"components/molecules/volumeExpandButton\";\n\ninterface Props {\n showQueue: boolean;\n}\nexport const MaxiPlayerTopBar = ({ showQueue }: Props) => {\n const onClose = () => dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Closed } });\n\n const trackParent = useSelector((root: RootModel) => root.queue.trackParent);\n const currentRadio = useSelector((root: RootModel) => root.liveRadio.currentRadio);\n const isInputLiveRadio = useSelector((root: RootModel) => root.player.input) === AudioInputType.LiveRadio;\n const trackParentTitle = getLinkFromResource(isInputLiveRadio ? currentRadio : trackParent)?.text ?? \"\";\n\n return (\n <MobileTopBar\n onClose={onClose}\n middle={showQueue ? trackParentTitle : isInputLiveRadio ? <LiveRadioTitle /> : trackParentTitle}\n right={\n <Fragment>\n <VolumeExpandButton direction={ExpandDirection.Down} />\n <CastButton />\n </Fragment>\n }\n />\n );\n};\n","export * from \"./MaxiPlayerTopBar\";\n\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { dispatch } from \"global\";\nimport { PLAYER_NEXT, PLAYER_PREVIOUS_OR_REWIND, PLAYER_REPEAT, PLAYER_SHUFFLE, PLAYER_TOGGLE_PLAY } from \"global/actions\";\nimport { TestLocator } from \"global/constants\";\nimport { getShuffleIcon, getPlayIcon, getRepeatIcon } from \"services/player/controllers/service/helpers/icons\";\nimport { isShuffleDisabled, isPreviousDisabled, isNextDisabled, isRepeatDisabled } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport { useLoginState } from \"services/user\";\nimport { LoginState, type RootModel } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { RepeatStatus } from \"models/view/RepeatStatus\";\nimport { ShuffleState } from \"models/view/ShuffleState\";\nimport { useAudioProperties } from \"components/shared/hooks\";\nimport { useMatchMedia } from \"components/shared/hooks/useMatchMedia\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { useTranslations } from \"global/config\";\n\nexport const DesktopPlayerPrimaryControls = () => {\n const translations = useTranslations();\n const { playState, canPlay, canPause } = useAudioProperties();\n const shuffle = useSelector((root: RootModel) => root.player.shuffle);\n const repeat = useSelector((root: RootModel) => root.player.repeat);\n const { Next, Previous } = IconName;\n const isTabletLarge = useMatchMedia({ maxWidth: 800 });\n const loginStateIsUnknown = useLoginState() === LoginState.Unknown;\n\n const input = useSelector((root: RootModel) => root.player.input);\n\n const playerNext = useCallback(() => dispatch({ type: PLAYER_NEXT, payload: { context: { action: AudioContextAction.UserPlayerNext, trace: null } } }), []);\n const playerPreviousOrRewind = useCallback(\n () => dispatch({ type: PLAYER_PREVIOUS_OR_REWIND, payload: { context: { action: AudioContextAction.UserPlayerPreviousOrRewind, trace: null } } }),\n []\n );\n const playerShuffle = useCallback(() => dispatch({ type: PLAYER_SHUFFLE, payload: { context: { action: AudioContextAction.UserPlayerShuffle, trace: null } } }), []);\n const playerTogglePlay = useCallback(() => dispatch({ type: PLAYER_TOGGLE_PLAY, payload: { context: { action: AudioContextAction.UserPlayerTogglePlay, trace: null } } }), []);\n const playerRepeat = useCallback(() => dispatch({ type: PLAYER_REPEAT, payload: {} }), []);\n\n return (\n <div className=\"primaryControls\">\n {!isTabletLarge && (\n <Button\n toggled={shuffle !== ShuffleState.Off}\n onClick={playerShuffle}\n icon={getShuffleIcon()}\n disabled={isShuffleDisabled()}\n design={ButtonDesign.PlayerSecondary}\n testLocator={TestLocator.PlayerShuffleButton}\n />\n )}\n <Button\n onClick={playerPreviousOrRewind}\n icon={Previous}\n disabled={isPreviousDisabled() || loginStateIsUnknown}\n design={ButtonDesign.PlayerSecondary}\n testLocator={TestLocator.PlayerPreviousButton}\n />\n <Button\n className={\"playPause\"}\n onClick={playerTogglePlay}\n icon={getPlayIcon(playState, input)}\n disabled={(!canPlay && !canPause) || loginStateIsUnknown}\n design={ButtonDesign.PlayerPrimary}\n testLocator={TestLocator.PlayerPlayPauseButton}\n ariaLabel={playState === \"playing\" ? translations.Pause : translations.Play}\n />\n <Button\n onClick={playerNext}\n icon={Next}\n disabled={isNextDisabled() || loginStateIsUnknown}\n design={ButtonDesign.PlayerSecondary}\n testLocator={TestLocator.PlayerNextButton}\n />\n {!isTabletLarge && (\n <Button\n className={`--repeatStatus-${repeat}`}\n toggled={repeat !== RepeatStatus.None}\n onClick={playerRepeat}\n disabled={isRepeatDisabled()}\n icon={getRepeatIcon(repeat)}\n design={ButtonDesign.PlayerSecondary}\n testLocator={TestLocator.PlayerRepeatButton}\n />\n )}\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./MaxiPlayerPrimaryControl.scss\";\nimport { dispatch } from \"global\";\nimport { PLAYER_NEXT, PLAYER_PREVIOUS_OR_REWIND, PLAYER_TOGGLE_PLAY } from \"global/actions\";\nimport { TestLocator } from \"global/constants\";\nimport { getPlayIcon } from \"services/player/controllers/service/helpers/icons\";\nimport { isPreviousDisabled, isNextDisabled } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport { useLoginState } from \"services/user\";\nimport { LoginState, type RootModel } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { useAudioProperties } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n showQueue: boolean;\n}\n\nexport const MaxiPlayerPrimaryControl = ({ showQueue }: Props) => {\n const { playState, canPlay, canPause } = useAudioProperties();\n const loginStateIsUnknown = useLoginState() === LoginState.Unknown;\n\n const input = useSelector((root: RootModel) => root.player.input);\n\n const rewindOrPlayPrevious = useCallback(\n () => dispatch({ type: PLAYER_PREVIOUS_OR_REWIND, payload: { context: { action: AudioContextAction.UserPlayerPreviousOrRewind, trace: null } } }),\n []\n );\n const playerTogglePlay = useCallback(() => dispatch({ type: PLAYER_TOGGLE_PLAY, payload: { context: { action: AudioContextAction.UserPlayerTogglePlay, trace: null } } }), []);\n const playerNext = useCallback(() => dispatch({ type: PLAYER_NEXT, payload: { context: { action: AudioContextAction.UserPlayerNext, trace: null } } }), []);\n\n return (\n <div className={`MaxiPlayerPrimaryControl f3j --showQueue-${showQueue}`}>\n <Button\n design={ButtonDesign.PlayerSecondary}\n onClick={rewindOrPlayPrevious}\n icon={IconName.Previous}\n disabled={isPreviousDisabled() || loginStateIsUnknown}\n testLocator={TestLocator.PlayerPreviousButton}\n />\n <Button\n design={ButtonDesign.PlayerPrimary}\n className={\"playPause\"}\n onClick={playerTogglePlay}\n icon={getPlayIcon(playState, input)}\n disabled={(!canPlay && !canPause) || loginStateIsUnknown}\n testLocator={TestLocator.PlayerPlayPauseButton}\n />\n <Button\n design={ButtonDesign.PlayerSecondary}\n onClick={playerNext}\n icon={IconName.Next}\n disabled={isNextDisabled() || loginStateIsUnknown}\n testLocator={TestLocator.PlayerNextButton} />\n </div>\n );\n};\n","export * from \"./MaxiPlayerPrimaryControl\";\nexport * from \"./DesktopPlayerPrimaryControls\";\n","import { h } from \"preact\";\nimport { useCallback, useRef } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { CastButton } from \"../castButton\";\nimport { LiveRadioTitle } from \"../liveRadioTitle\";\nimport { VolumeExpandButton, ExpandDirection } from \"../volumeExpandButton\";\nimport { Feature, isFeatureEnabled } from \"global/config/featuretoggle\";\nimport { TestLocator } from \"global/constants\";\nimport { getShortTimeSpanFromSecondsHHMMSS } from \"services/formatters\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport { isQueueViewDisabled } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport { useLoginState } from \"services/user\";\nimport { LoginState } from \"models/app\";\nimport type { RootModel } from \"models/app\";\nimport { AudioInputType } from \"models/app/player\";\nimport { useContextMenu } from \"components/shared/hooks\";\nimport { useMatchMedia } from \"components/shared/hooks/useMatchMedia\";\nimport { useSecondsPlayedFromState } from \"components/shared/hooks/useSecondsPlayed\";\nimport { Button } from \"components/atoms/controls/button\";\nimport { VolumeRange } from \"components/atoms/controls/volumeRange\";\nimport { IconName } from \"components/atoms/icon\";\nimport { PlayerDesktopContextMenu } from \"components/organisms/contextMenu/menus\";\nimport { toggleLyrics, useLyricsState } from \"components/organisms/lyrics\";\n\ninterface Props {\n showQueue: boolean;\n toggleQueue: () => void;\n seekPosition?: number | null;\n}\n\nexport const DesktopPlayerSecondaryControls = ({ showQueue, toggleQueue, seekPosition }: Props) => {\n const { secondsPlayed, duration } = useSecondsPlayedFromState();\n const isTabletLarge = useMatchMedia({ maxWidth: 850 });\n const isDesktopSmall = useMatchMedia({ minWidth: 980 });\n const isDesktopLarge = useMatchMedia({ minWidth: 1280 });\n\n const { isLyricsEnabled, isLyricsAvailable, isLyricsOpen } = useLyricsState();\n\n const seconds = seekPosition || secondsPlayed;\n const buttonMoreRef = useRef<HTMLButtonElement>(null);\n const menuButtonMoreClick = useContextMenu(<PlayerDesktopContextMenu />, false);\n\n const onMoreButtonClick = () => {\n if (!buttonMoreRef.current) {\n log.error({ code: \"web-210519-1224\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n menuButtonMoreClick.open(buttonMoreRef.current);\n };\n\n const onToggleLyrics = useCallback(() => toggleLyrics(\"DesktopPlayer\"), [])\n\n const isInputLiveRadio = useSelector((root: RootModel) => root.player.input) === AudioInputType.LiveRadio;\n const isQueueDisabled = isQueueViewDisabled();\n\n\n return (\n <div className=\"secondaryControls\">\n {isTabletLarge && <Button className=\"more\" onClick={onMoreButtonClick} ref={buttonMoreRef} icon={IconName.Meatballs} activated={menuButtonMoreClick.isOpen} />}\n {isInputLiveRadio ? (\n <LiveRadioTitle />\n ) : (\n isDesktopSmall &&\n duration !== 0 && (\n <div className=\"secondsPlayed\">\n {getShortTimeSpanFromSecondsHHMMSS(seconds)} / {getShortTimeSpanFromSecondsHHMMSS(duration)}\n </div>\n )\n )}\n {isDesktopLarge ? <VolumeRange /> : <VolumeExpandButton direction={ExpandDirection.Up} />}\n {!isTabletLarge && <CastButton />}\n {\n !isTabletLarge && isLyricsEnabled && (isLyricsAvailable || isFeatureEnabled(Feature.LyricsIconWhenNotAvailable)) &&\n <Button\n onClick={onToggleLyrics}\n disabled={!isLyricsAvailable && !isLyricsOpen}\n toggled={isLyricsOpen}\n icon={IconName.Lyrics}\n testLocator={TestLocator.PlayerLyricsToggleButton}\n />\n }\n <Button\n onClick={toggleQueue}\n disabled={isQueueDisabled}\n toggled={!isQueueDisabled && showQueue}\n icon={IconName.Queue}\n testLocator={TestLocator.PlayerQueueToggleButton}\n />\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./MaxiPlayerSecondaryControl.scss\";\nimport { dispatch } from \"global\";\nimport { PLAYER_REPEAT, PLAYER_SHUFFLE, TOGGLE_MAXIPLAYER_QUEUE_OPEN } from \"global/actions\";\nimport { Feature, isFeatureEnabled } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\nimport { getShuffleIcon, getRepeatIcon } from \"services/player/controllers/service/helpers/icons\";\nimport { isShuffleDisabled, isRepeatDisabled, isQueueViewDisabled } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport { type RootModel } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { RepeatStatus } from \"models/view/RepeatStatus\";\nimport { ShuffleState } from \"models/view/ShuffleState\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { toggleLyrics, useLyricsState } from \"components/organisms/lyrics\";\n\ninterface Props {\n showQueue: boolean;\n}\nexport const MaxiPlayerSecondaryControl = ({ showQueue }: Props) => {\n const repeat = useSelector((root: RootModel) => root.player.repeat);\n const shuffle = useSelector((root: RootModel) => root.player.shuffle);\n\n const { isLyricsEnabled, isLyricsAvailable, isLyricsOpen } = useLyricsState();\n\n const toggleQueue = useCallback(() => dispatch({ type: TOGGLE_MAXIPLAYER_QUEUE_OPEN }), []);\n const playerShuffle = useCallback(() => dispatch({ type: PLAYER_SHUFFLE, payload: { context: { action: AudioContextAction.UserPlayerShuffle, trace: null } } }), []);\n const playerRepeat = useCallback(() => dispatch({ type: PLAYER_REPEAT, payload: {} }), []);\n const onToggleLyrics = useCallback(() => toggleLyrics(\"MaxiPlayer\"), [])\n\n return (\n <div className={`MaxiPlayerSecondaryControl U22`}>\n <Button\n design={ButtonDesign.PlayerSecondary}\n disabled={isShuffleDisabled()}\n inline={{ left: true, bottom: true, top: true }}\n toggled={shuffle !== ShuffleState.Off}\n onClick={playerShuffle}\n icon={getShuffleIcon()}\n testLocator={TestLocator.PlayerShuffleButton}\n />\n <Button\n design={ButtonDesign.PlayerSecondary}\n toggled={repeat !== RepeatStatus.None}\n inline={{ bottom: true, top: true }}\n disabled={isRepeatDisabled()}\n onClick={playerRepeat}\n icon={getRepeatIcon(repeat)}\n className={`--repeatStatus-${repeat}`}\n testLocator={TestLocator.PlayerRepeatButton}\n />\n <div />\n {\n isLyricsEnabled && (isLyricsAvailable || isFeatureEnabled(Feature.LyricsIconWhenNotAvailable)) &&\n <Button\n design={ButtonDesign.PlayerSecondary}\n inline={{ right: true, bottom: true, top: true }}\n onClick={onToggleLyrics}\n disabled={!isLyricsAvailable && !isLyricsOpen}\n toggled={isLyricsOpen}\n icon={IconName.Lyrics}\n testLocator={TestLocator.PlayerLyricsToggleButton}\n />\n }\n <Button\n disabled={isQueueViewDisabled()}\n inline={{ right: true, bottom: true, top: true }}\n toggled={showQueue}\n onClick={toggleQueue}\n icon={IconName.Queue}\n testLocator={TestLocator.PlayerQueueToggleButton}\n />\n </div>\n );\n};\n","export * from \"./MaxiPlayerSecondaryControl\";\nexport * from \"./DesktopPlayerSecondaryControls\";\n","import { h } from \"preact\";\nimport \"./PlayerTrackControl.scss\";\nimport { ResourceCard } from \"../resource\";\nimport { TestLocator } from \"global/constants\";\nimport { useLoginState } from \"services/user\";\nimport { LoginState } from \"models/app\";\nimport { ContentType } from \"models/ModelType\";\nimport { useCurrentLanePrimaryResourceFromState, useSectionContext, useCurrentAudioSecondaryResourceFromState, useOnRightClickContextMenu } from \"components/shared/hooks\";\nimport { usePreviewContext } from \"components/shared/hooks/useContext\";\nimport { ButtonFavorite } from \"components/atoms/controls/button/buttons/ButtonFavorite\";\nimport { ButtonMore } from \"components/atoms/controls/button/buttons/ButtonMore\";\nimport { CoverRounding, CoverSize } from \"components/atoms/cover\";\nimport { PlayableLoadSpinner } from \"components/atoms/spinner\";\n\nexport const DesktopPlayerTrackControl = () => {\n const { resource, resourceType } = useCurrentAudioSecondaryResourceFromState();\n const { resource: imageResource, type: imageType } = useCurrentLanePrimaryResourceFromState();\n\n const sectionContext = useSectionContext(ContentType.Player, null, null, null, null);\n const context = usePreviewContext(resourceType, resource, sectionContext, null);\n const imageContext = usePreviewContext(imageType, imageResource, sectionContext, null);\n\n const { onContextMenu } = useOnRightClickContextMenu(context, resource, sectionContext);\n const loginStateIsKnown = useLoginState() !== LoginState.Unknown;\n\n return (\n <div className=\"playerTrackControl rmB\">\n <ResourceCard\n disableLazyLoad\n size={CoverSize.Size96}\n rounding={CoverRounding.None}\n imageContext={imageContext}\n context={context}\n onContextMenu={onContextMenu}\n scrollingText={true}>\n <PlayableLoadSpinner />\n </ResourceCard>\n {resource && resource.contentType !== ContentType.LiveRadioPlayable && (\n <ButtonFavorite favorite={resource} context={context} testLocator={TestLocator.PlayerFavoriteButton} disabled={!loginStateIsKnown} />\n )}\n {resource && <ButtonMore resource={resource} context={context} testLocator={TestLocator.PlayerMoreButton} />}\n </div>\n );\n};\n","import { h } from \"preact\";\nimport \"./PlayerTrackControl.scss\";\nimport { ResourceCardMaxiPlayer } from \"../resource/ResourceCardMaxiPlayer\";\nimport { TestLocator } from \"global/constants\";\nimport { useLoginState } from \"services/user\";\nimport { LoginState } from \"models/app\";\nimport { ContentType } from \"models/ModelType\";\nimport { useSectionContext, usePreviewContext, useCurrentAudioSecondaryResourceFromState } from \"components/shared/hooks\";\nimport { ButtonFavorite } from \"components/atoms/controls/button/buttons/ButtonFavorite\";\nimport { ButtonMore } from \"components/atoms/controls/button/buttons/ButtonMore\";\n\nexport const MaxiPlayerTrackControl = () => {\n const { resource, resourceType } = useCurrentAudioSecondaryResourceFromState();\n\n const sectionContext = useSectionContext(ContentType.Player, null, null, null, null);\n const context = usePreviewContext(resourceType, resource, sectionContext, null);\n const loginStateIsKnown = useLoginState() !== LoginState.Unknown;\n\n return (\n <div className=\"playerTrackControl rmB\">\n <ResourceCardMaxiPlayer resource={resource} resourceType={resourceType} context={context} />\n {resource && resource.contentType !== ContentType.LiveRadioPlayable && (\n <ButtonFavorite favorite={resource} context={context} testLocator={TestLocator.PlayerFavoriteButton} disabled={!loginStateIsKnown} />\n )}\n {resource && <ButtonMore resource={resource} context={context} testLocator={TestLocator.PlayerMoreButton} />}\n </div>\n );\n};\n","export * from \"./DesktopPlayerTrackControl\";\nexport * from \"./MaxiPlayerTrackControl\";\n","export enum PreviewDisplayType {\n Row = \"Row\",\n Square = \"Square\",\n Single = \"Single\",\n ArtistRadio = \"ArtistRadio\",\n Headline = \"Headline\"\n}\n","import { h } from \"preact\";\nimport { PreviewDisplayType } from \".\";\nimport { ResourceTextDesign } from \"../resource\";\nimport { ResourceLink } from \"../resource/ResourceLink\";\nimport { ResourceText } from \"../resource/ResourceText\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { LocationContentType, ResourceModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkContextsFromPreview } from \"components/shared/hooks\";\n\nexport enum PreviewLinksDesign {\n Big,\n Small\n}\n\ninterface PreviewLinksProps {\n resourceType: LocationContentType;\n resource: ResourceModel | null;\n context: PreviewContextModel;\n displayType: PreviewDisplayType;\n onNavigate?: () => void;\n disabled?: boolean;\n}\n\nexport const PreviewLinks = ({ resource, context, displayType, onNavigate, disabled }: PreviewLinksProps) => {\n const primaryTextDesign = getPrimaryTextDesign(context, displayType);\n const secondaryTextDesign = getSecondaryTextDesign(displayType, resource);\n const links = useLinkContextsFromPreview(context, displayType);\n\n return links.map((group, groupIndex) => {\n const design = groupIndex == 0 ? primaryTextDesign : secondaryTextDesign;\n const nobreak = group.length > 1;\n return (\n <ResourceLink\n key={groupIndex}\n disabled={disabled}\n links={group}\n testLocatorName={groupIndex}\n onNavigate={onNavigate}\n design={design}\n className={nobreak ? \"--nobreak\" : \"\"}\n />\n );\n });\n};\n\nexport const PreviewTexts = ({ context, resource, displayType }: PreviewLinksProps) => {\n const primaryTextDesign = getPrimaryTextDesign(context, displayType);\n const secondaryTextDesign = getSecondaryTextDesign(displayType, resource);\n const links = useLinkContextsFromPreview(context, displayType);\n\n return links.map((group, groupIndex) => {\n const design = groupIndex === 0 ? primaryTextDesign : secondaryTextDesign;\n return <ResourceText key={groupIndex} links={group} design={design} />;\n });\n};\n\nfunction getPrimaryTextDesign(\n preview: PreviewContextModel,\n displayType: PreviewDisplayType\n): ResourceTextDesign.PrimarySmall | ResourceTextDesign.PrimarySmall2Lines | ResourceTextDesign.PrimaryBig {\n switch (displayType) {\n case PreviewDisplayType.ArtistRadio: {\n return ResourceTextDesign.PrimaryBig;\n }\n case PreviewDisplayType.Single: {\n return ResourceTextDesign.PrimarySmall;\n }\n default:\n if (preview.resource?.contentType === ContentType.Notification /*&& preview.resource.content != null*/) return ResourceTextDesign.PrimarySmall2Lines;\n return ResourceTextDesign.PrimarySmall;\n }\n}\n\nfunction getSecondaryTextDesign(displayType: PreviewDisplayType, resource: ResourceModel | null): ResourceTextDesign.SecondarySmall | ResourceTextDesign.SecondarySmall2Lines | ResourceTextDesign.SecondaryBig {\n if (resource?.contentType === ContentType.AlbumRecommendation || resource?.contentType === ContentType.TrackRecommendation)\n return ResourceTextDesign.SecondarySmall2Lines;\n switch (displayType) {\n case PreviewDisplayType.ArtistRadio: {\n return ResourceTextDesign.SecondaryBig;\n }\n case PreviewDisplayType.Single: {\n return ResourceTextDesign.SecondarySmall;\n }\n default:\n return ResourceTextDesign.SecondarySmall;\n }\n}\n","import type { ComponentChildren, ComponentChild } from \"preact\";\nimport type { OpenMenuResult } from \"services/contextMenus\";\nimport type { DraggableItemModel, DropProps } from \"models/app\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourceContentType } from \"models/domain\";\n\nexport enum PreviewAction {\n Expand = \"Expand\",\n Navigate = \"Navigate\",\n None = \"None\",\n Play = \"Play\"\n}\n\nexport interface PreviewProps {\n activated?: boolean;\n available?: boolean;\n editable?: boolean;\n highlight?: boolean;\n className?: string;\n context: PreviewContextModel;\n draggableItem?: () => DraggableItemModel | null;\n dropProps: DropProps | null;\n image?: ComponentChildren;\n links: ComponentChild[];\n mainAction: PreviewAction;\n onAction: ((ev: MouseEvent) => void) | null;\n onContextMenu?: (ev: MouseEvent) => Promise<OpenMenuResult | undefined>;\n resourceType: ResourceContentType;\n}\n","import type { ComponentChild, ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\nimport { useRef } from \"preact/compat\";\nimport \"./PreviewRow.scss\";\nimport type { PreviewProps } from \"./PreviewProps\";\nimport { PreviewAction } from \"./PreviewProps\";\nimport { usePreviewScrollToHighlight } from \"./usePreviewScrollToHighlight\";\nimport { DropZone } from \"../dropZone\";\nimport { PreviewRowTestLocator } from \"global/constants\";\nimport type { Multiselect } from \"services/selection\";\nimport type { DraggableItemModel } from \"models/app\";\nimport { useLinkContextFromPreview } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\n\ninterface Props extends PreviewProps {\n number?: ComponentChild;\n columns: number;\n disabled?: boolean;\n buttons?: ComponentChildren;\n expandContent?: ComponentChildren;\n highlight?: boolean;\n multiselect?: Multiselect;\n allowDrop?: (item: DraggableItemModel) => boolean;\n key?: string;\n id?: string;\n}\n\nexport const PreviewRow = ({\n key,\n id,\n activated,\n available = true,\n editable,\n buttons,\n className,\n columns,\n context,\n disabled = false,\n draggableItem,\n dropProps,\n image,\n links,\n mainAction,\n number,\n onAction,\n onContextMenu,\n resourceType: contentType,\n expandContent,\n highlight,\n multiselect,\n allowDrop\n}: Props) => {\n const ref = useRef(null);\n\n const link = useLinkContextFromPreview(context);\n usePreviewScrollToHighlight({ ref, highlight });\n\n return (\n <div\n id={id}\n key={key}\n className={`previewRow weG --type-${contentType} --columns-${columns} ${className ?? \"\"} --available-${available} --editable-${editable} --highlight-${highlight}`}>\n <Button\n ref={ref}\n activated={activated}\n allowModifierKeys={!!multiselect}\n data-cy={PreviewRowTestLocator(contentType)}\n design={ButtonDesign.PlayableRow}\n disabled={disabled}\n draggableItem={available ? draggableItem : undefined}\n link={mainAction === PreviewAction.Navigate ? link : undefined}\n onClick={available && onAction ? onAction : undefined}\n onContextMenu={onContextMenu}>\n {available && dropProps?.onDrop && <DropZone allowDrop={allowDrop} onDropFn={dropProps.onDrop} />}\n <figure>\n {number}\n {image}\n <figcaption>\n {links.map((text, index) => (\n <div key={index}>{text}</div>\n ))}\n </figcaption>\n {buttons}\n </figure>\n </Button>\n {expandContent && <div className=\"expand\">{expandContent}</div>}\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useRef } from \"preact/hooks\";\nimport \"./PreviewSquare.scss\";\nimport type { PreviewProps } from \"./PreviewProps\";\nimport { usePreviewScrollToHighlight } from \"./usePreviewScrollToHighlight\";\nimport { PreviewSquareTestLocator } from \"global/constants\";\nimport { getIsCoverRounded } from \"services/resource\";\n\nexport const PreviewSquare = ({ className, context, image, links, resourceType: contentType, available, highlight }: PreviewProps) => {\n const ref = useRef<HTMLDivElement>(null);\n\n usePreviewScrollToHighlight({ ref, highlight });\n const center = getIsCoverRounded(context.type, context.resource);\n\n return (\n <div\n ref={ref}\n className={`previewSquare c9f --type-${contentType} --center-${center} ${className ?? \"\"} --available-${available} --highlight-${highlight}`}\n data-cy={PreviewSquareTestLocator(contentType)}>\n <figure>\n {image}\n {links.length > 0 && (\n <figcaption>\n {links.map((link, index) => (\n <div key={index}>{link}</div>\n ))}\n </figcaption>\n )}\n </figure>\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { PreviewAction } from \"./PreviewProps\";\nimport { dispatch } from \"global\";\nimport { PLAYER_SET_PLAY, AUDIO_INPUT_SET_AND_PLAY } from \"global/actions\";\nimport { TestLocator } from \"global/constants\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport { isPlayable } from \"services/playable\";\nimport { createAndStartUserPlayTraceModel, TraceName } from \"models/app\";\nimport { PlayState } from \"models/app/player\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlayablePreviewModel, ResourcePreviewModel, PlayableModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { getAudioPropertiesFromState, getPlayablePropertiesFromState, usePlayablePropertiesFromState } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface PlayButtonProps {\n playable: PlayablePreviewModel;\n context: PreviewContextModel;\n onAction: (action: PreviewAction) => void;\n}\n\nexport const SmallPreviewPlayButton = ({ playable, onAction }: PlayButtonProps) => {\n const { isPlayingOrBuffering } = usePlayablePropertiesFromState(playable);\n const playPauseIconPlayQueue = isPlayingOrBuffering ? IconName.Pause16 : IconName.Play16;\n const playPauseIconLiveRadio = isPlayingOrBuffering ? IconName.Stop16 : IconName.Play16;\n const playPauseIcon = playable.contentType === ContentType.LiveRadioPlayable ? playPauseIconLiveRadio : playPauseIconPlayQueue;\n\n return (\n <Button\n className=\"play\"\n onClick={() => onAction(PreviewAction.Play)}\n design={ButtonDesign.LightBrandSmall}\n icon={playPauseIcon}\n testLocator={TestLocator.PreviewPlayButton}\n />\n );\n};\n\nexport function playPlayablePreview(resource: ResourcePreviewModel, context: PreviewContextModel): void {\n if (!isPlayable(resource)) {\n log.error({ code: \"web-210504-1823\", msg: DefaultLogMessage.UnexpectedValue });\n return;\n }\n\n const startPlay = async (playable: PlayableModel) => {\n const trace = await createAndStartUserPlayTraceModel(TraceName.ClickToSound);\n dispatch({ type: AUDIO_INPUT_SET_AND_PLAY, payload: { playable, playableContext: context, context: { action: AudioContextAction.UserPreviewSetAndPlay, trace } } });\n };\n\n const togglePlay = () => {\n const { playState } = getAudioPropertiesFromState();\n const play = playState === PlayState.Paused || playState === PlayState.Stopped || playState === PlayState.Error;\n dispatch({ type: PLAYER_SET_PLAY, payload: { play, context: { action: AudioContextAction.UserPreviewTogglePlay, trace: null } } });\n };\n\n const isLoaded = getPlayablePropertiesFromState(resource).isLoaded;\n\n if (isLoaded) togglePlay();\n else startPlay(resource);\n}\n","export * from \"./PreviewDisplayType\";\nexport * from \"./PreviewProps\";\nexport * from \"./PreviewRow\";\nexport * from \"./PreviewSquare\";\nexport * from \"./SmallPreviewPlayButton\";\nexport * from \"./usePreviewAction\";\nexport * from \"./usePreviewScrollToHighlight\";\n","import { h } from \"preact\";\nimport type { PreviewAction } from \"..\";\nimport { SmallPreviewPlayButton } from \"..\";\nimport { isPlayable } from \"services/playable\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlayablePreviewModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { usePlayablePropertiesFromState } from \"components/shared/hooks\";\nimport type { CoverSize } from \"components/atoms/cover\";\nimport { ResourceCover } from \"components/atoms/cover\";\nimport { PlayableSoundbars, SoundbarStyle } from \"components/atoms/soundbars\";\n\ninterface Props {\n context: PreviewContextModel;\n dynamicSize?: boolean;\n onAction: (action: PreviewAction) => void;\n playable: PlayablePreviewModel;\n size: CoverSize;\n available: boolean;\n disableLazyLoad: boolean;\n}\n\nexport const PlayablePreviewRowCover = ({ playable, context, size, onAction, dynamicSize, available, disableLazyLoad }: Props) => {\n const isLoaded = usePlayablePropertiesFromState(playable).isLoaded;\n const showSoundbars = isLoaded && (playable.contentType === ContentType.TrackPlayable || playable.contentType === ContentType.LiveRadio);\n\n const soundbars = showSoundbars && <PlayableSoundbars playable={playable} style={SoundbarStyle.CoverOverlay} />;\n const playButton = available && isPlayable(playable) && <SmallPreviewPlayButton playable={playable} context={context} onAction={onAction} />;\n const hasButtons = playButton;\n\n return (\n <ResourceCover disabled={!available} size={size} dynamicSize={dynamicSize} context={context} disabledAction={true} disableLazyLoad={disableLazyLoad}>\n {soundbars}\n {hasButtons && <div className={`buttons`}>{playButton}</div>}\n </ResourceCover>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { getVisibleLinks } from \"./ResourcePreviewRow\";\nimport { PreviewAction, PreviewDisplayType } from \"..\";\nimport { PreviewLinks } from \"../PreviewLinks\";\nimport { PreviewRow } from \"../PreviewRow\";\nimport { dispatch } from \"global\";\nimport { PLAYQUEUE_PLAY_TRACK, PLAYQUEUE_REMOVE_TRACK } from \"global/actions\";\nimport { getTitles } from \"services/resource\";\nimport type { DraggableItemModel, DragProps, DropProps } from \"models/app\";\nimport { createDraggablePlayableModel } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { useContextMenu, usePreviewContext } from \"components/shared/hooks\";\nimport { useQueueTrackPlayableFromState } from \"components/shared/hooks/useQueueTrackPlayable\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { ButtonMore } from \"components/atoms/controls/button/buttons\";\nimport { CoverSize, ResourceCover } from \"components/atoms/cover\";\nimport { IconName } from \"components/atoms/icon\";\nimport { PlayableSoundbars, SoundbarStyle } from \"components/atoms/soundbars\";\nimport { ResourceTextDesign, ResourceTextPart } from \"components/molecules/resource\";\nimport { ResourceContextMenu } from \"components/organisms/contextMenu/menus\";\n\ninterface Props {\n sectionContext: SectionContextModel;\n disabled?: boolean;\n dragProps: DragProps;\n dropProps: DropProps | null;\n onCurrentTrackClick?: () => void;\n onCurrentCoverClick?: () => void;\n queueTrack: QueueTrackModel;\n isCurrentLanePreview?: boolean;\n scrollOnTrackClickFn?: (id: string) => void;\n allowDrop?: (item: DraggableItemModel) => boolean;\n}\n\nexport const QueueTrackRow = ({\n queueTrack,\n sectionContext,\n disabled,\n dragProps,\n dropProps,\n scrollOnTrackClickFn,\n allowDrop,\n onCurrentCoverClick,\n onCurrentTrackClick,\n isCurrentLanePreview\n}: Props) => {\n const { queueId, lane } = queueTrack;\n const track = useQueueTrackPlayableFromState(queueTrack);\n\n const context = usePreviewContext(ContentType.TrackPlayable, track, sectionContext, null);\n\n const { title, subtitle } = getTitles(ContentType.TrackPlayable, track, context);\n const isCurrent = queueTrack.lane === QueueLane.Current || isCurrentLanePreview;\n\n const [moreOpen, setMoreOpen] = useState(false);\n\n const menuRightClick = useContextMenu(ResourceContextMenu({ resource: track, context, resourceType: ContentType.TrackPlayable }), false);\n\n const activated = moreOpen || menuRightClick.isOpen;\n const rightClick = useCallback((ev: MouseEvent) => menuRightClick.openByMouse(ev), [menuRightClick]);\n const playTrack = useCallback(\n () =>\n dispatch({\n type: PLAYQUEUE_PLAY_TRACK,\n payload: {\n queueId,\n isPreviewLane: lane === QueueLane.Preview,\n context: { action: AudioContextAction.UserPreviewSetAndPlay, trace: null }\n }\n }),\n [queueId, lane]\n );\n\n const trackClickFn = useCallback(() => {\n if (isCurrent) {\n !onCurrentCoverClick && onCurrentTrackClick && onCurrentTrackClick();\n } else {\n playTrack();\n scrollOnTrackClickFn && scrollOnTrackClickFn(queueTrack.compareableTrackId);\n }\n }, [isCurrent, onCurrentCoverClick, onCurrentTrackClick, playTrack, scrollOnTrackClickFn, queueTrack.compareableTrackId]);\n\n const handleRemoveFromQueue = useCallback(\n () =>\n dispatch({\n type: PLAYQUEUE_REMOVE_TRACK,\n payload: {\n queueId,\n isPreviewLane: lane === QueueLane.Preview,\n context: { action: AudioContextAction.UserPlayQueueRemove, trace: null }\n }\n }),\n [queueId, lane]\n );\n\n const togglePlay = useCallback(() => {\n if (isCurrent) {\n onCurrentCoverClick && onCurrentCoverClick();\n }\n }, [isCurrent, onCurrentCoverClick]);\n\n const image = (\n <ResourceCover size={isCurrentLanePreview ? CoverSize.Size64 : CoverSize.Size48} context={context} disabledAction={!isCurrent} onClick={togglePlay} disableLazyLoad={true}>\n {track && isCurrent && <PlayableSoundbars playable={track} style={SoundbarStyle.CoverOverlay} />}\n </ResourceCover>\n );\n const texts = [\n <ResourceTextPart key={1} design={ResourceTextDesign.PrimarySmall}>\n {title ?? \"\"}\n </ResourceTextPart>,\n <ResourceTextPart key={2} design={ResourceTextDesign.SecondarySmall}>\n {subtitle ?? \"\"}\n </ResourceTextPart>\n ];\n\n const allLinks = PreviewLinks({\n resourceType: ContentType.TrackPlayable,\n resource: track,\n context,\n displayType: PreviewDisplayType.Row\n });\n const links = getVisibleLinks(allLinks, 1, ContentType.TrackPlayable);\n\n const buttons = isCurrent ? (\n <ButtonMore\n resource={track}\n context={context}\n design={ButtonDesign.DefaultBig}\n icon={IconName.Meatballs}\n inline={{ right: true }}\n onOpen={setMoreOpen}\n closeContextMenuOnNavigation={false}\n />\n ) : (\n <Button disabled={disabled} className=\"delete\" design={ButtonDesign.DefaultSmall} onClick={handleRemoveFromQueue} icon={IconName.Delete16} inline={{ right: true }} />\n );\n const draggableItem = useCallback(() => createDraggablePlayableModel(queueTrack, dragProps.dragSourceId, context), [queueTrack, dragProps.dragSourceId, context]);\n\n return (\n <PreviewRow\n id={track?.id}\n key={track?.id}\n activated={activated}\n buttons={buttons}\n columns={1}\n context={context}\n allowDrop={allowDrop}\n disabled={disabled}\n draggableItem={draggableItem}\n dropProps={isCurrent ? null : dropProps}\n image={image}\n links={isCurrent ? links : texts}\n mainAction={PreviewAction.None}\n onAction={trackClickFn}\n onContextMenu={rightClick}\n resourceType={ContentType.TrackPlayable}\n />\n );\n};\n","import type { ComponentChild } from \"preact\";\nimport { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport \"./ResourcePreviewRow.scss\";\nimport { PlayablePreviewRowCover } from \"./PlayablePreviewRowCover\";\nimport { ResourcePreviewRowCover } from \"./ResourcePreviewRowCover\";\nimport { useResourcePreviewExpandContent } from \"./ResourcePreviewRowExpandContent\";\nimport { PreviewDisplayType, usePreviewAction } from \"..\";\nimport { ResourceTextDesign, ResourceTextPart } from \"../../resource\";\nimport { PreviewLinks, PreviewTexts } from \"../PreviewLinks\";\nimport { PreviewAction } from \"../PreviewProps\";\nimport { PreviewRow } from \"../PreviewRow\";\nimport { isPlayable } from \"services/playable\";\nimport { getResourceMainAction, getShowRowCover, getShowRowNumber } from \"services/resource\";\nimport type { Multiselect } from \"services/selection\";\nimport { isSelected, updateSelection } from \"services/selection\";\nimport type { DragProps, DropProps } from \"models/app\";\nimport { createDraggablePlayableModel } from \"models/app\";\nimport type { PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { PlayablePreviewModel, ResourceContentType, ResourcePreviewModel } from \"models/domain\";\nimport type { NotificationConversion } from \"models/domain/NotificationModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkContext, useOnRightClickContextMenu, usePlayablePropertiesFromState, usePreviewContext } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { ButtonMore } from \"components/atoms/controls/button/buttons\";\nimport type { CoverSize } from \"components/atoms/cover\";\nimport { IconName } from \"components/atoms/icon\";\nimport { PlayableSoundbars, SoundbarStyle } from \"components/atoms/soundbars\";\n\ninterface Props {\n context: SectionContextModel;\n customIcon?: IconName;\n customIconAction?: (resource: ResourcePreviewModel) => void;\n dragProps: DragProps;\n dropProps: DropProps | null;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n rank: number;\n resource: ResourcePreviewModel;\n size: CoverSize;\n width: number | null;\n disableLazyLoad: boolean;\n highlight?: boolean;\n multiselect?: Multiselect;\n locked?: boolean;\n key?: string;\n id?: string;\n}\n\nexport const ResourcePreviewRow = ({\n id,\n key,\n context: sectionContext,\n customIcon,\n customIconAction,\n dragProps,\n dropProps,\n onAction: onActionProp,\n rank,\n resource,\n size,\n width,\n disableLazyLoad,\n highlight,\n multiselect,\n locked\n}: Props) => {\n const [moreButtonIsOpen, setMoreButtonIsOpen] = useState(false);\n const context = usePreviewContext(resource.contentType, resource, sectionContext, rank);\n const { hasContextMenu, onContextMenu, disableContextMenu, editable, available, moreOpen } = useOnRightClickContextMenu(\n context,\n resource,\n sectionContext,\n moreButtonIsOpen,\n multiselect\n );\n const expandContent = useResourcePreviewExpandContent({ resource, preview: context, onAction: onActionProp });\n\n const columns = getPreviewRowColumnCount(width, resource.contentType, context);\n const mainAction = getResourceMainAction(resource.contentType, resource);\n const { onAction, onMainAction } = usePreviewAction({ preview: context, onAction: onActionProp, resource, mainAction, expandAction: expandContent.toggle });\n const onNavigate = useCallback(() => onActionProp?.(PreviewAction.Navigate, context, null), [onActionProp, context]);\n const onCustomAction = useCallback(() => customIconAction?.(resource), [customIconAction, resource]);\n\n const getAllLinks = resource.contentType === ContentType.LiveRadioTrack ? PreviewTexts : PreviewLinks;\n const allLinks = getAllLinks({\n resource,\n resourceType: resource.contentType,\n context,\n displayType: PreviewDisplayType.Row,\n onNavigate,\n disabled: !available\n });\n const links = getVisibleLinks(allLinks, columns, resource.contentType);\n\n const { number, image } = isPlayable(resource)\n ? PlayableRowNumberAndCover({ available, playable: resource, context, number: rank, size, width, onAction, disableLazyLoad })\n : RowNumberAndCover({ resource, context, number: rank, size, width, disableLazyLoad });\n\n const menuButton =\n hasContextMenu &&\n RightButton({\n disabled: disableContextMenu || locked,\n resource,\n context,\n mainAction,\n setMoreOpen: setMoreButtonIsOpen,\n onNavigate\n });\n\n const customButton = !!customIcon && <Button icon={customIcon} onClick={onCustomAction} disabled={locked} />;\n\n const draggableItem = useCallback(() => createDraggablePlayableModel(resource, dragProps.dragSourceId, context), [resource, dragProps.dragSourceId, context]);\n\n const onClick = useCallback(\n (ev: MouseEvent) => {\n if (!multiselect) return onMainAction();\n updateSelection(multiselect, resource, ev.ctrlKey, ev.shiftKey);\n },\n [multiselect, onMainAction, resource]\n );\n\n const isActivated = moreOpen || isSelected(multiselect, resource);\n const isMultiselecting = multiselect && multiselect.state.selectedItems.length > 1;\n\n return (\n <PreviewRow\n id={id}\n key={key}\n multiselect={multiselect}\n editable={editable}\n available={available}\n activated={isActivated}\n buttons={[menuButton, expandContent.button, customButton]}\n className={`resourcePreviewRow Ecc --mainAction-${mainAction}`}\n columns={columns}\n context={context}\n draggableItem={isMultiselecting ? undefined : draggableItem}\n dropProps={dropProps}\n image={image}\n highlight={highlight}\n links={links}\n number={number}\n onAction={onClick}\n mainAction={mainAction}\n onContextMenu={locked ? undefined : onContextMenu}\n resourceType={resource.contentType}\n expandContent={expandContent.content}\n />\n );\n};\n\ninterface RowNumberAndCoverProps {\n resource: ResourcePreviewModel;\n context: PreviewContextModel;\n number: number;\n size: CoverSize;\n width: number | null;\n onNavigate?: () => void;\n disableLazyLoad: boolean;\n}\n\nconst RowNumberAndCover = ({ resource, context, number: propNumber, size, disableLazyLoad }: RowNumberAndCoverProps) => {\n const showNumber = getShowRowNumber(resource.contentType, context);\n const showCover = getShowRowCover(context);\n\n let number: h.JSX.Element | undefined;\n let image: h.JSX.Element | undefined;\n\n if (showNumber) number = <NumberCell number={propNumber} />;\n if (showCover) image = <ResourcePreviewRowCover context={context} size={size} disableLazyLoad={disableLazyLoad} />;\n\n return { number, image };\n};\n\ninterface PlayableRowNumberAndCoverProps {\n available: boolean;\n context: PreviewContextModel;\n number: number;\n onAction: (action: PreviewAction) => void;\n playable: PlayablePreviewModel;\n size: CoverSize;\n width: number | null;\n disableLazyLoad: boolean;\n}\n\nconst PlayableRowNumberAndCover = ({ playable, context, number: propNumber, size, onAction, available, disableLazyLoad }: PlayableRowNumberAndCoverProps) => {\n const isTrack = playable.contentType === ContentType.TrackPlayable;\n const isLoaded = usePlayablePropertiesFromState(playable).isLoaded;\n\n const soundbars = isTrack && isLoaded;\n\n const showNumber = getShowRowNumber(playable.contentType, context);\n const showCover = getShowRowCover(context);\n\n let number: h.JSX.Element | undefined;\n let image: h.JSX.Element | undefined;\n\n if (showNumber) {\n if (!showCover && soundbars) number = <NumberWithSoundBarsCell playable={playable} />;\n else number = <NumberCell number={propNumber} />;\n }\n if (showCover)\n image = <PlayablePreviewRowCover available={available} playable={playable} context={context} size={size} onAction={onAction} disableLazyLoad={disableLazyLoad} />;\n\n return { number, image };\n};\n\nconst NumberWithSoundBarsCell = ({ playable }: { playable: PlayablePreviewModel }) => {\n return <div className=\"number\">{<PlayableSoundbars playable={playable} style={SoundbarStyle.Default} />}</div>;\n};\n\nconst NumberCell = ({ number }: { number: number }) => {\n return (\n <div className=\"number\">\n <ResourceTextPart design={ResourceTextDesign.SecondarySmall}>{(number + 1).toFixed()}</ResourceTextPart>\n </div>\n );\n};\n\ninterface RightButtonProps {\n resource: ResourcePreviewModel;\n context: PreviewContextModel;\n mainAction: PreviewAction;\n setMoreOpen: (open: boolean) => void;\n onNavigate?: () => void;\n disabled?: boolean;\n}\n\nconst RightButton = ({ resource, disabled, context, mainAction, setMoreOpen, onNavigate }: RightButtonProps) => {\n const hasNavigate = mainAction === PreviewAction.Navigate && context.section?.page?.type === ContentType.Search;\n const navigateLink = useLinkContext(resource.contentType, resource, context);\n if (hasNavigate) return <Button onClick={onNavigate} link={navigateLink} icon={IconName.ArrowRightAndroid} design={ButtonDesign.DefaultBig} inline={{ right: true }} />;\n\n return (\n <ButtonMore\n resource={resource}\n context={context}\n design={ButtonDesign.DefaultBig}\n icon={IconName.Meatballs}\n inline={{ right: true }}\n onOpen={setMoreOpen}\n disabled={disabled}\n />\n );\n};\n\nfunction getPreviewRowColumnCount(width: number | null, resourceType: ResourceContentType, context: PreviewContextModel) {\n const showNumber = getShowRowNumber(resourceType, context);\n const showCover = getShowRowCover(context);\n\n let usedWidth = 16 + 48 - 12; // margin + more button etc.\n if (showNumber) usedWidth += 12 + 16;\n if (showCover) usedWidth += 48 + 16;\n\n let columns = width != null ? Math.floor((width - usedWidth) / 250) : 1;\n if (columns < 1) columns = 1;\n if (columns > 4) columns = 4;\n\n return columns;\n}\n\nexport function getVisibleLinks(links: ComponentChild[], columns: number, contentType: ContentType) {\n // tood: calc maxLinks instead\n const maxInFirstColumn = getMaxInFirstColumn(contentType);\n const maxInAllColumns = contentType == ContentType.Playlist ? columns + 1 : columns;\n const maxLinks = columns === 1 ? maxInFirstColumn : maxInAllColumns;\n if (links.length > maxLinks) links.splice(maxLinks);\n return links;\n}\n\nfunction getMaxInFirstColumn(contentType: ContentType): number {\n switch (contentType) {\n case ContentType.Playlist:\n case ContentType.Notification:\n return 3;\n case ContentType.Album:\n return 4;\n default:\n return 2;\n }\n}\n","import { h } from \"preact\";\nimport { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { CoverSize, ResourceCover } from \"components/atoms/cover\";\n\ninterface Props {\n context: PreviewContextModel;\n size: CoverSize;\n disableLazyLoad: boolean;\n}\n\nexport const ResourcePreviewRowCover = ({ context, size, disableLazyLoad }: Props) => {\n return <ResourceCover size={size} context={context} disabledAction disableLazyLoad={disableLazyLoad} />;\n};\n","import type { ComponentChildren } from \"preact\";\nimport { Fragment, h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport \"./ResourcePreviewRowExpandContent.scss\";\nimport { PreviewAction } from \"../PreviewProps\";\nimport { getPWAInstallOption, promptUserForPWAInstall, PWAInstallOption } from \"services/pwa/initPWAService\";\nimport type { ExpandResourceModel } from \"services/resource\";\nimport { getIsExpandResource } from \"services/resource\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport { getNavigationConversionResourceType, NotificationConversion } from \"models/domain/NotificationModel\";\nimport type { NotificationContentModel, NotificationContentWrapperModel } from \"models/domain/NotificationModel\";\nimport { useOptionalLinkContext } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface UseResourcePreviewExpandContentProps {\n resource: ResourcePreviewModel;\n preview: PreviewContextModel;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n}\n\nexport function useResourcePreviewExpandContent({ resource, preview, onAction }: UseResourcePreviewExpandContentProps) {\n const [open, setOpen] = useState(false);\n\n const hasExpandContent = getIsExpandResource(resource);\n const content = hasExpandContent && ResourcePreviewRowExpandContent({ open, resource, preview, onAction });\n\n const toggle = useCallback(() => setOpen(!open), [open]);\n const iconName = open ? IconName.ArrowUpSmall : IconName.ArrowDownSmall;\n\n const button = hasExpandContent && <Button icon={iconName} inline={{ right: true }} onClick={toggle} />;\n\n return { toggle, button, content };\n}\n\ninterface ResourcePreviewRowExpandContentProps {\n resource: ExpandResourceModel;\n open: boolean;\n preview: PreviewContextModel;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n}\n\nconst ResourcePreviewRowExpandContent = ({ open, resource, preview, onAction }: ResourcePreviewRowExpandContentProps) => {\n if (!open) return null;\n return (\n <div className=\"resourcePreviewRowExpandContent eIE\">\n <Content preview={preview} onAction={onAction}>\n {resource.content}\n </Content>\n </div>\n );\n};\n\ninterface WrapperProps {\n element: NotificationContentWrapperModel;\n children: ComponentChildren;\n preview: PreviewContextModel;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n}\n\nconst Wrapper = ({ element, children, preview, onAction }: WrapperProps) => {\n switch (element.type) {\n case \"Bullet\":\n return <li>{children}</li>;\n case \"Headline\":\n return <h1>{children}</h1>;\n case \"Link\":\n return (\n <NotificationAction preview={preview} conversion={element.action} onAction={onAction}>\n {children}\n </NotificationAction>\n );\n case \"Paragraph\":\n return <p>{children}</p>;\n case \"Section\":\n return <section>{children}</section>;\n case \"BulletGroup\":\n return <ul>{children}</ul>;\n }\n};\n\ninterface ContentProps {\n children: NotificationContentModel;\n preview: PreviewContextModel;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n}\n\nconst Content = ({ children, preview, onAction }: ContentProps) => {\n if (children.type === \"Text\") return <Fragment>{children.text}</Fragment>;\n\n return (\n <Wrapper element={children} preview={preview} onAction={onAction}>\n {children.children.map((child, i) => (\n <Content key={i} preview={preview} onAction={onAction}>\n {child}\n </Content>\n ))}\n </Wrapper>\n );\n};\n\ninterface NotificationLinkProps {\n children: ComponentChildren;\n preview: PreviewContextModel;\n conversion: NotificationConversion;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n}\n\nconst NotificationAction = (props: NotificationLinkProps) => {\n if (props.conversion === NotificationConversion.InstallPWA) return <NotificationDirectAction {...props} />;\n else return <NotificationLink {...props} />;\n};\n\nconst NotificationLink = ({ preview, conversion, children, onAction: onActionProp }: NotificationLinkProps) => {\n const type = getNavigationConversionResourceType(conversion);\n const link = useOptionalLinkContext(type, null, preview);\n\n const onClick = useCallback(async () => {\n if (!preview.resource) return;\n onActionProp && onActionProp(PreviewAction.Navigate, preview, conversion);\n }, [conversion, preview, onActionProp]);\n\n if (!link) return null;\n\n return (\n <Button design={ButtonDesign.TextBrandInline} link={link} onClick={onClick}>\n {children}\n </Button>\n );\n};\n\nconst NotificationDirectAction = ({ conversion, preview, children, onAction: onActionProp }: NotificationLinkProps) => {\n const onClick = useCallback(async () => {\n if (conversion !== NotificationConversion.InstallPWA) return;\n\n if (!preview.resource) return;\n\n onActionProp && onActionProp(PreviewAction.Navigate, preview, conversion);\n promptUserForPWAInstall();\n }, [conversion, preview, onActionProp]);\n\n if (conversion === NotificationConversion.InstallPWA) {\n const option = getPWAInstallOption();\n\n if (option === PWAInstallOption.Installed) return <p disabled>Allerede installeret</p>;\n if (option === PWAInstallOption.None) return <p disabled>Kan ikke installeres lige nu</p>;\n }\n\n return (\n <Button design={ButtonDesign.TextBrandInline} onClick={onClick}>\n {children}\n </Button>\n );\n};\n","export * from \"./PlayablePreviewRowCover\";\nexport * from \"./QueueTrackRow\";\nexport * from \"./ResourcePreviewRow\";\nexport * from \"./ResourcePreviewRowCover\";\n","import { h } from \"preact\";\nimport { useRef } from \"preact/hooks\";\nimport \"./ArtistRadioPreviewSingle.scss\";\nimport { PreviewDisplayType } from \"../PreviewDisplayType\";\nimport { PreviewTexts } from \"../PreviewLinks\";\nimport { PreviewSingleTestLocator } from \"global/constants\";\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { ArtistRadioPreviewModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { usePreviewContext, useResizeObserver } from \"components/shared/hooks\";\nimport { ButtonGoToArtistRadio } from \"components/atoms/controls/button/buttons\";\n\ninterface ArtistRadioPreviewSingleProps {\n children: ArtistRadioPreviewModel | null;\n section: SectionContextModel;\n}\n\nexport const ArtistRadioPreviewSingle = ({ children, section }: ArtistRadioPreviewSingleProps) => {\n const preview = usePreviewContext(ContentType.ArtistRadio, children, section, 0);\n\n const button = <ButtonGoToArtistRadio radio={children} context={preview} />;\n const links = PreviewTexts({\n resourceType: ContentType.ArtistRadio,\n resource: children,\n context: preview,\n displayType: PreviewDisplayType.ArtistRadio\n });\n\n const ref = useRef<HTMLDivElement | null>(null);\n const width = useResizeObserver(ref.current)?.width ?? 0;\n const size = width >= 520 ? \"big\" : \"small\";\n\n return (\n <div ref={ref} className={`artistRadioPreviewSingle JJp --size-${size}`} data-cy={PreviewSingleTestLocator(ContentType.ArtistRadio)}>\n <figure>\n <figcaption>{links}</figcaption>\n {button}\n </figure>\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useRef } from \"preact/compat\";\nimport { useEffect, useState } from \"preact/hooks\";\nimport \"./BannerSingle.scss\";\nimport { usePreviewScrollToHighlight } from \"..\";\nimport { getThemeFromState } from \"components/app/hooks\";\nimport { PreviewSingleTestLocator } from \"global/constants\";\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel, ResourceContentType } from \"models/domain\";\nimport { useLinkContext, useOnRightClickContextMenu, usePreviewContext } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { CoverSize, ResourceCover, getPlaceholderPath } from \"components/atoms/cover\";\n\ninterface Props {\n children: ResourcePreviewModel | null;\n resourceType: ResourceContentType;\n highlight: boolean;\n section: SectionContextModel;\n}\n\nexport const BannerSingle = ({ children, resourceType, section, highlight }: Props) => {\n const preview = usePreviewContext(resourceType, children, section, 0);\n\n const ref = useRef<HTMLDivElement>(null);\n usePreviewScrollToHighlight({ ref, highlight });\n\n const { isLoaded } = useImagePreload(preview.resource?.cover ?? null);\n\n const image = isLoaded\n ? <ResourceCover disabled={false} size={CoverSize.Size80} context={preview} disabledAction={true} disableLazyLoad={false} dynamicSize />\n : <div className=\"bannerPreview\" style={{ backgroundImage: `url(${getPlaceholderPath(getThemeFromState())})` }}>\n <br />\n </div>;\n\n const primaryLink = useLinkContext(resourceType, children, preview);\n\n if (preview.resource?.contentType && preview.resource?.contentType !== \"BannerLayoutItemContent\") return null;\n\n return (\n <div class=\"bannerSingle k49\">\n <Button\n ref={ref}\n link={primaryLink ?? undefined}\n design={ButtonDesign.PlayableRow}\n disabled={false}\n className={`--type-${resourceType} --highlight-${highlight} --loaded-${isLoaded}`}\n data-cy={PreviewSingleTestLocator(resourceType)}>\n <figure>\n {image}\n </figure>\n </Button>\n </div>\n );\n};\n\nfunction useImagePreload(url: string | null) {\n const [isLoaded, setIsLoaded] = useState(false);\n const [isError, setIsError] = useState(false);\n\n useEffect(() => {\n if (url) {\n const img = document.createElement(\"img\");\n img.onload = () => setIsLoaded(true);\n img.onerror = () => setIsError(true);\n img.src = url;\n }\n }, [url])\n\n return { isLoaded, isError };\n}","import { h } from \"preact\";\nimport { useRef } from \"preact/compat\";\nimport \"./PreviewSingle.scss\";\nimport { PreviewDisplayType, usePreviewScrollToHighlight } from \"..\";\nimport { PreviewLinks } from \"../PreviewLinks\";\nimport { PreviewSingleTestLocator } from \"global/constants\";\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel, ResourceContentType } from \"models/domain\";\nimport { useLinkContext, useOnRightClickContextMenu, usePreviewContext, useResizeObserver } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { ResourceCover, CoverSize } from \"components/atoms/cover\";\n\ninterface Props {\n children: ResourcePreviewModel | null;\n resourceType: ResourceContentType;\n highlight: boolean;\n section: SectionContextModel;\n}\n\nexport const PreviewSingle = ({ children, resourceType, section, highlight }: Props) => {\n const preview = usePreviewContext(resourceType, children, section, 0);\n\n const { onContextMenu, available, moreOpen } = useOnRightClickContextMenu(preview, children, section, false, undefined);\n\n const ref = useRef<HTMLDivElement>(null);\n usePreviewScrollToHighlight({ ref, highlight });\n\n const width = useResizeObserver(ref.current)?.width ?? 0;\n const size = width >= 520 ? \"big\" : \"small\";\n\n const image = <ResourceCover disabled={false} size={size === \"small\" ? CoverSize.Size80 : CoverSize.Size144} context={preview} disabledAction={true} disableLazyLoad={false} />;\n const primaryLink = useLinkContext(resourceType, children, preview);\n\n const links = PreviewLinks({\n resourceType,\n resource: children,\n context: preview,\n displayType: PreviewDisplayType.Single\n });\n\n return (\n <Button\n ref={ref}\n activated={moreOpen}\n onContextMenu={onContextMenu}\n link={primaryLink ?? undefined}\n design={ButtonDesign.PlayableRow}\n disabled={false}\n className={`previewSingle c9f --type-${resourceType} --size-${size} --available-${available} --highlight-${highlight}`}\n data-cy={PreviewSingleTestLocator(resourceType)}>\n <figure>\n {image}\n {links.length > 0 && (\n <figcaption>\n {links.map((link, index) => (\n <div key={index}>{link}</div>\n ))}\n </figcaption>\n )}\n </figure>\n </Button>\n );\n};\n","export * from \"./ArtistRadioPreviewSingle\";\nexport * from \"./BannerSingle\";\nexport * from \"./PreviewSingle\";\n","import { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { ResourcePreviewSquareCover } from \"./ResourcePreviewSquareCover\";\nimport { PreviewAction, PreviewDisplayType } from \"..\";\nimport { PreviewLinks } from \"../PreviewLinks\";\nimport { PreviewSquare } from \"../PreviewSquare\";\nimport { usePreviewAction } from \"../usePreviewAction\";\nimport { isDraggable } from \"services/playable\";\nimport { getResourceMainAction } from \"services/resource\";\nimport type { DragProps, DropProps } from \"models/app\";\nimport { createDraggablePlayableModel } from \"models/app\";\nimport type { PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport type { NotificationConversion } from \"models/domain/NotificationModel\";\nimport { useOnRightClickContextMenu, usePreviewContext } from \"components/shared/hooks\";\nimport type { CoverRounding, CoverSize } from \"components/atoms/cover\";\n\ninterface Props {\n context: SectionContextModel;\n dragProps: DragProps;\n dropProps: DropProps | null;\n dynamicSize?: boolean;\n onAction: (action: PreviewAction, preview: PreviewContextModel, notificationAction: NotificationConversion | null) => void;\n rank: number;\n resource: ResourcePreviewModel;\n rounding?: CoverRounding;\n size: CoverSize;\n disableLazyLoad: boolean;\n highlight?: boolean;\n}\n\nexport const ResourcePreviewSquare = ({\n resource,\n context: sectionContext,\n size,\n onAction: onActionProp,\n dragProps,\n dropProps,\n rounding,\n dynamicSize,\n rank,\n disableLazyLoad,\n highlight\n}: Props) => {\n const [moreButtonIsOpen, setMoreButtonIsOpen] = useState(false);\n\n const context = usePreviewContext(resource.contentType, resource, sectionContext, rank);\n const { onContextMenu, disableContextMenu, editable, available, moreOpen } = useOnRightClickContextMenu(context, resource, sectionContext, moreButtonIsOpen);\n\n const mainAction = getResourceMainAction(resource.contentType, resource);\n const { onAction, onMainAction } = usePreviewAction({ preview: context, onAction: onActionProp, resource, mainAction });\n const onNavigate = useCallback(() => onActionProp(PreviewAction.Navigate, context, null), [onActionProp, context]);\n\n const draggableItem = useCallback(() => createDraggablePlayableModel(resource, dragProps.dragSourceId, context), [resource, dragProps.dragSourceId, context]);\n\n const image = (\n <ResourcePreviewSquareCover\n available={available}\n context={context}\n disableMoreButton={disableContextMenu}\n draggableItem={isDraggable(resource) ? draggableItem : undefined}\n dynamicSize={dynamicSize}\n mainAction={mainAction}\n moreOpen={moreOpen}\n onAction={onAction}\n onContextMenu={onContextMenu}\n resource={resource}\n rounding={rounding}\n setMoreOpen={setMoreButtonIsOpen}\n size={size}\n disableLazyLoad={disableLazyLoad}\n highlight={highlight}\n />\n );\n\n const links = PreviewLinks({\n resource,\n resourceType: resource.contentType,\n context,\n displayType: PreviewDisplayType.Square,\n onNavigate,\n disabled: !available\n });\n\n return (\n <PreviewSquare\n editable={editable}\n available={available}\n dropProps={dropProps}\n highlight={highlight}\n draggableItem={isDraggable(resource) ? draggableItem : undefined}\n resourceType={resource.contentType}\n onAction={onMainAction}\n image={image}\n links={links}\n activated={moreOpen}\n onContextMenu={onContextMenu}\n context={context}\n mainAction={mainAction}\n />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { PreviewAction } from \"../PreviewProps\";\nimport { SmallPreviewPlayButton } from \"../SmallPreviewPlayButton\";\nimport { TestLocator } from \"global/constants\";\nimport type { OpenMenuResult } from \"services/contextMenus\";\nimport { isPlayable } from \"services/playable\";\nimport { getResourceAvailableInSubscription, getHasContextMenu } from \"services/resource\";\nimport type { DraggableItemModel } from \"models/app\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { ButtonDesign } from \"components/atoms/controls/button\";\nimport { ButtonMore } from \"components/atoms/controls/button/buttons\";\nimport type { CoverRounding, CoverSize } from \"components/atoms/cover\";\nimport { ResourceCover } from \"components/atoms/cover\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n available: boolean;\n context: PreviewContextModel;\n disableMoreButton: boolean;\n draggableItem?: () => DraggableItemModel | null;\n dynamicSize: boolean | undefined;\n mainAction: PreviewAction;\n moreOpen: boolean;\n onAction: (action: PreviewAction) => void;\n onContextMenu?: (ev: MouseEvent) => Promise<OpenMenuResult | undefined>;\n resource: ResourcePreviewModel;\n rounding: CoverRounding | undefined;\n setMoreOpen: (open: boolean) => void;\n size: CoverSize;\n disableLazyLoad: boolean;\n highlight?: boolean;\n}\n\nexport const ResourcePreviewSquareCover = ({\n available,\n context,\n disableMoreButton,\n draggableItem,\n dynamicSize,\n mainAction,\n moreOpen,\n onAction,\n onContextMenu,\n resource,\n rounding,\n setMoreOpen,\n size,\n disableLazyLoad,\n highlight\n}: Props) => {\n const onMainAction = useCallback(() => onAction(mainAction), [onAction, mainAction]);\n const hasTracks = useMemo(() => !(resource.contentType === ContentType.Playlist && resource.trackCount === 0), [resource]);\n\n const playButton = hasTracks && available && isPlayable(resource) && getResourceAvailableInSubscription(resource) && (\n <SmallPreviewPlayButton playable={resource} context={context} onAction={onAction} />\n );\n const moreButton = getHasContextMenu(resource.contentType, resource) && (\n <ButtonMore\n disabled={disableMoreButton}\n resource={resource}\n context={context}\n onOpen={setMoreOpen}\n design={ButtonDesign.LightSmall}\n icon={IconName.Meatballs16}\n testLocator={TestLocator.PreviewMoreButton}\n />\n );\n\n const hasButtons = playButton || moreButton;\n\n return (\n <ResourceCover\n className={`resourcePreviewSquareCover j6I --moreOpen-${moreOpen}`}\n context={context}\n disabled={!available}\n draggableItem={available ? draggableItem : undefined}\n dynamicSize={dynamicSize}\n navigate={mainAction === PreviewAction.Navigate}\n onClick={onMainAction}\n onContextMenu={onContextMenu}\n rounding={rounding}\n size={size}\n highlight={highlight}\n disableLazyLoad={disableLazyLoad}>\n {hasButtons && (\n <div className=\"buttons\">\n {playButton}\n {moreButton}\n </div>\n )}\n </ResourceCover>\n );\n};\n","export * from \"./ResourcePreviewSquareCover\";\nexport * from \"./ResourcePreviewSquare\";","import { useCallback } from \"preact/hooks\";\nimport { PreviewAction, playPlayablePreview } from \".\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport type { NotificationConversion } from \"models/domain/NotificationModel\";\n\ninterface Props {\n preview: PreviewContextModel;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n resource: ResourcePreviewModel;\n mainAction: PreviewAction;\n expandAction?: () => void;\n}\n\nexport function usePreviewAction({ preview, onAction: onPropAction, resource, mainAction, expandAction }: Props) {\n const onAction = useCallback(\n (action: PreviewAction) => {\n if (action === PreviewAction.Play) playPlayablePreview(resource, preview);\n if (action === PreviewAction.Expand) expandAction && expandAction();\n onPropAction && onPropAction(action, preview, null);\n },\n [onPropAction, preview, resource, expandAction]\n );\n\n const onMainAction = useCallback(() => onAction(mainAction), [onAction, mainAction]);\n\n return { onAction, onMainAction };\n}\n","import type { Ref } from \"preact/hooks\";\nimport { useEffect, useState } from \"preact/hooks\";\nimport { hasNavigated } from \"services/navigationStack/navigationStack\";\n\ninterface Props {\n ref: Ref<HTMLElement>;\n highlight?: boolean;\n}\n\nexport function usePreviewScrollToHighlight<T extends HTMLElement>({ ref, highlight }: Props) {\n const [done, setDone] = useState(false);\n\n useEffect(() => {\n if (hasNavigated() || !highlight || done || !ref.current) return;\n setDone(true);\n ref.current.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n }, [ref, highlight, done]);\n}\n","import type { ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\nimport { ResourceTextDesign } from \".\";\nimport { ItemGroup } from \"../itemGroup/ItemGroup\";\nimport { ResourceLink } from \"./ResourceLink\";\nimport type { OpenMenuResult } from \"services/contextMenus\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { useLinkContextsFromPreview } from \"components/shared/hooks\";\nimport type { CoverRounding, CoverSize } from \"components/atoms/cover\";\nimport { ResourceCover } from \"components/atoms/cover\";\n\ninterface Props {\n children?: ComponentChildren;\n disabledAction?: boolean;\n context: PreviewContextModel;\n imageContext?: PreviewContextModel;\n rounding?: CoverRounding;\n scrollingText?: boolean;\n size: CoverSize;\n disableLazyLoad: boolean;\n onContextMenu?: (ev: MouseEvent) => Promise<OpenMenuResult | undefined>;\n}\n\nexport const ResourceCard = ({ context, size, rounding, children, scrollingText, disabledAction, imageContext, disableLazyLoad, onContextMenu }: Props) => {\n const linkModels = useLinkContextsFromPreview(context);\n //if (linkModels.length > 2) log.error({code: \"web-210304-1638\", msg: DefaultLogMessage.UnexpectedValue, [{ key: \"resourceType\", value: context.type }]);\n\n const links = linkModels.map((group, groupIndex) => {\n return (\n <ResourceLink\n links={group}\n key={groupIndex}\n design={groupIndex === 0 ? ResourceTextDesign.PrimarySmall : ResourceTextDesign.SecondarySmall}\n testLocatorName={groupIndex}\n />\n );\n });\n\n return (\n <ItemGroup title={links[0]} subtitle={links[1]} scrollingText={scrollingText}>\n <ResourceCover\n size={size}\n rounding={rounding}\n context={imageContext ?? context}\n onContextMenu={onContextMenu}\n disabledAction={disabledAction}\n disableLazyLoad={disableLazyLoad}>\n {children}\n </ResourceCover>\n </ItemGroup>\n );\n};\n","import { h } from \"preact\";\nimport { ResourceTextDesign } from \".\";\nimport { ItemGroup } from \"../itemGroup/ItemGroup\";\nimport { ResourceLink } from \"./ResourceLink\";\nimport { dispatch } from \"global\";\nimport { SET_MAXIPLAYER_OPEN } from \"global/actions\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport { MobileMaxiPlayerOpen } from \"models/app\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourceContentType, ResourcePageModel, ResourcePreviewModel } from \"models/domain\";\nimport { useLinkContextsFromPreview } from \"components/shared/hooks\";\n\ninterface Props {\n resource: ResourcePreviewModel | ResourcePageModel | null;\n resourceType: ResourceContentType;\n context: PreviewContextModel;\n}\n\nexport const ResourceCardMaxiPlayer = ({ resource, resourceType, context }: Props) => {\n const linkModels = useLinkContextsFromPreview(context);\n\n if (linkModels.length !== 2) log.error({ code: \"web-210304-1639\", msg: DefaultLogMessage.UnexpectedValue, data: { resourceType, linkModels } });\n\n const closeMaxiPlayer = () => dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Closed } });\n\n const links = linkModels.map((group, groupIndex) => {\n const design = groupIndex === 0 ? ResourceTextDesign.MaxiPlayerPrimary : ResourceTextDesign.MaxiPlayerSecondary;\n return <ResourceLink key={groupIndex} testLocatorName={groupIndex} design={design} links={group} onNavigate={closeMaxiPlayer} />;\n });\n\n return <ItemGroup title={links[0]} subtitle={links[1]} scrollingText={true} />;\n};\n","import { h } from \"preact\";\nimport { ResourceLinkPart, ResourceLinkGroup, ResourceTextDesign } from \".\";\nimport { LinkContextModel } from \"models/app/resourceContextModel\";\n\ninterface Props {\n design?: ResourceTextDesign;\n disabled?: boolean;\n links: LinkContextModel[];\n onNavigate?: () => void;\n testLocatorName?: number;\n className?: string;\n}\n\nexport const ResourceLink = ({ className, design, links, onNavigate, disabled, testLocatorName }: Props) => {\n return (\n <ResourceLinkGroup design={design} testLocatorName={testLocatorName} className={className}>\n {links.map((link, linkIndex) => {\n return <ResourceLinkPart disabled={disabled} link={link} onNavigate={onNavigate} key={linkIndex} design={design} testLocatorName={linkIndex} />;\n })}\n </ResourceLinkGroup>\n );\n};\n","import type { ComponentChild } from \"preact\";\nimport { h } from \"preact\";\nimport type { ResourceTextDesign } from \".\";\nimport \"./ResourceLinkGroup.scss\";\nimport { ResourceLinkGroupTestLocator } from \"global/constants\";\n\ninterface Props {\n children: ComponentChild[];\n className?: string;\n design?: ResourceTextDesign;\n testLocatorName?: number;\n}\n\nexport const ResourceLinkGroup = ({ children, className, testLocatorName, design }: Props) => {\n return (\n <div\n className={`resourceLinkGroup vU9 ${className ?? \"\"} ${design && `--design-${design}`}`}\n data-cy={testLocatorName ? ResourceLinkGroupTestLocator(testLocatorName) : undefined}>\n {children}\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { ResourceTextPart, ResourceTextDesign } from \"./ResourceTextPart\";\nimport { ResourceLinkTestLocator } from \"global/constants\";\nimport { LinkContextModel } from \"models/app/resourceContextModel\";\nimport { ButtonDesign, Button } from \"components/atoms/controls/button\";\n\ninterface Props {\n link: LinkContextModel;\n className?: string;\n clickable?: boolean;\n disabled?: boolean;\n design?: ResourceTextDesign;\n onNavigate?: () => void;\n scrollingText?: boolean;\n testLocatorName: number;\n}\n\nexport const ResourceLinkPart = ({ link, className, clickable = true, disabled, design, testLocatorName, onNavigate }: Props) => {\n if (link.text == null) return null;\n\n if (clickable && link.url != null) {\n const buttonDesign: ButtonDesign = (() => {\n switch (design) {\n case ResourceTextDesign.PrimarySmall:\n return ButtonDesign.PlayableLinkPrimary;\n case ResourceTextDesign.PrimarySmall2Lines:\n return ButtonDesign.PlayableLinkPrimary2Lines;\n case ResourceTextDesign.SecondarySmall:\n return ButtonDesign.PlayableLinkSecondary;\n case ResourceTextDesign.MaxiPlayerPrimary:\n return ButtonDesign.PlayableLinkMaxiPrimary;\n case ResourceTextDesign.MaxiPlayerSecondary:\n return ButtonDesign.PlayableLinkMaxiSecondary;\n default:\n return ButtonDesign.TextInline;\n }\n })();\n\n return (\n <Button\n disabled={disabled}\n className={`resourceLinkPart RAs ${className ?? \"\"}`}\n link={link}\n useText\n onClick={onNavigate}\n design={buttonDesign}\n inline={{ right: true, left: true, top: true, bottom: true }}\n testLocator={ResourceLinkTestLocator(testLocatorName)}\n />\n );\n } else\n return (\n <ResourceTextPart disabled={disabled} className={className} design={design} testLocatorName={testLocatorName}>\n {link.text}\n </ResourceTextPart>\n );\n};\n","import { h } from \"preact\";\nimport type { ResourceTextDesign } from \".\";\nimport { ResourceLinkGroup, ResourceTextPart } from \".\";\nimport type { LinkContextModel } from \"models/app/resourceContextModel\";\n\ninterface Props {\n onNavigate?: () => void;\n links: LinkContextModel[];\n design?: ResourceTextDesign;\n}\n\nexport const ResourceText = ({ design, links }: Props) => {\n return (\n <ResourceLinkGroup design={design}>\n {links.map((link, linkIndex) => {\n return (\n <ResourceTextPart key={linkIndex} design={design} testLocatorName={linkIndex}>\n {link.text}\n </ResourceTextPart>\n );\n })}\n </ResourceLinkGroup>\n );\n};\n","import { h } from \"preact\";\nimport { ResourceLinkTestLocator } from \"global/constants\";\n\nexport enum ResourceTextDesign {\n PrimarySmall = \"primarySmall\",\n PrimarySmall2Lines = \"primarySmall2Lines\",\n SecondarySmall = \"secondarySmall\",\n SecondarySmall2Lines = \"secondarySmall2Lines\",\n PrimaryBig = \"primaryBig\",\n SecondaryBig = \"secondaryBig\",\n MaxiPlayerPrimary = \"maxiPlayerPrimary\",\n MaxiPlayerSecondary = \"maxiPlayerSecondary\"\n}\n\ninterface Props {\n children: string | undefined;\n className?: string;\n design?: ResourceTextDesign;\n testLocatorName?: number;\n disabled?: boolean;\n}\n\nexport const ResourceTextPart = ({ children, className, design, testLocatorName, disabled = false }: Props) => {\n if (children == null) return null;\n return (\n <div\n className={`resourceTextPart orh ${className ?? \"\"} --design-${design ?? \"\"} --disabled-${disabled}`}\n data-cy={testLocatorName ? ResourceLinkTestLocator(testLocatorName) : undefined}>\n {children}\n </div>\n );\n};\n","export * from \"./ResourceCard\";\nexport * from \"./ResourceLink\";\nexport * from \"./ResourceLinkPart\";\nexport * from \"./ResourceTextPart\";\nexport * from \"./ResourceLinkGroup\";\n","import { h } from \"preact\";\nimport \"./SearchResultArea.scss\";\nimport type { PreviewAction } from \"../preview\";\nimport { useTranslations } from \"global/config\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { SearchViewState } from \"services/search\";\nimport type { PageContextModel, PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport type { SearchResultModel } from \"models/domain/SearchResultModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { NavigationPageRootName } from \"models/view/navigationStack\";\nimport { MediaSize } from \"components/shared/hooks\";\nimport { useFakePageContext, useSectionContext } from \"components/shared/hooks/useContext\";\nimport { useUserRecentSearches } from \"components/shared/hooks/useSearchHistory\";\nimport { ButtonClearSearchHistory } from \"components/atoms/controls/button/buttons/ButtonClearSearchHistory\";\nimport { ContentLoadSpinner } from \"components/atoms/spinner\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\n\nexport enum SearchResultAreaSource {\n Search,\n History\n}\n\ninterface Props {\n search: SearchResultModel | null;\n state: SearchViewState;\n onAction: (action: PreviewAction, source: SearchResultAreaSource, context: PreviewContextModel) => void;\n size: MediaSize;\n context: PageContextModel;\n}\n\nexport const SearchResultArea = (props: Props) => {\n const content: h.JSX.Element | null = (() => {\n switch (props.state) {\n case SearchViewState.Failed:\n return <SearchResultAreaFailed />;\n case SearchViewState.History:\n return <SearchResultAreaHistory {...props} />;\n case SearchViewState.Results:\n return <SearchResultAreaResults {...props} />;\n case SearchViewState.NoResults:\n return <SearchResultAreaNoResults />;\n case SearchViewState.Searching:\n return <SearchResultAreaSearching {...props} />;\n case SearchViewState.None:\n return <SearchResultAreaDefault />;\n }\n })();\n\n return <div className={`searchResultArea --size-${props.size}`}>{content}</div>;\n};\n\nconst SearchResultAreaDefault = () => {\n const translations = useTranslations();\n return (\n <section className=\"default\">\n <h1>{translations.SearchPlaceHolderTitle}</h1>\n <p>{translations.SearchPlaceholderText}.</p>\n </section>\n );\n};\n\nconst SearchResultAreaFailed = () => {\n const translations = useTranslations();\n return (\n <section className=\"failed\">\n <h1>{translations.ErrorStateErrorTitle}</h1>\n <p>{translations.ErrorStateErrorTryAgainText}</p>\n </section>\n );\n};\n\nconst SearchResultAreaNoResults = () => {\n const translations = useTranslations();\n return (\n <section className=\"noResults\">\n <h1>{translations.SearchNoResult}</h1>\n <p>{translations.SearchNoResultHint}</p>\n </section>\n );\n};\n\nconst SearchResultAreaSearching = ({ size }: Props) => {\n const translations = useTranslations();\n if (size === MediaSize.Mobile) {\n return (\n <section className=\"searching\">\n <ContentLoadSpinner />\n </section>\n );\n } else\n return (\n <section className=\"searching\">\n <p>{translations.GlobalSearchingName}</p>\n </section>\n );\n};\n\nconst SearchResultAreaHistory = ({ onAction, context: pageContext }: Props) => {\n const context = useSectionContext(ContentType.SearchRecentResults, null, pageContext, 0, ResourceDisplayType.List);\n\n const resources = useUserRecentSearches();\n if (resources.length == 0) log.error({ code: \"web-210823-1452\", msg: DefaultLogMessage.UnexpectedValue });\n\n const onActionFn = (action: PreviewAction, preview: PreviewContextModel) => onAction(action, SearchResultAreaSource.History, preview);\n\n return (\n <section className=\"history\">\n <ResourceSection showTitle buttons={<ButtonClearSearchHistory />} resources={resources} context={context} onAction={onActionFn} />\n </section>\n );\n};\n\nconst SearchResultAreaResults = ({ search, onAction }: Props) => {\n let mixedResults = search?.mixedResults ?? null;\n if (mixedResults?.mixedResults?.items.length == 0) mixedResults = null;\n\n let tracks = search?.tracks ?? null;\n if (tracks?.tracks?.items.length == 0) tracks = null;\n\n let artists = search?.artists ?? null;\n if (artists?.artists?.items.length == 0) artists = null;\n\n let albums = search?.albums ?? null;\n if (albums?.albums?.items.length == 0) albums = null;\n\n let playlists = search?.playlists ?? null;\n if (playlists?.playlists?.items.length == 0) playlists = null;\n\n const pageContext = useFakePageContext({ type: ContentType.Search, resource: null, root: NavigationPageRootName.Search, done: true });\n const mixedContext = useSectionContext(ContentType.SearchMixedResults, mixedResults, pageContext, 0, ResourceDisplayType.List);\n const tracksContext = useSectionContext(ContentType.SearchTrackResults, tracks, pageContext, 1, ResourceDisplayType.List);\n const artistsContext = useSectionContext(ContentType.SearchArtistResults, artists, pageContext, 2, ResourceDisplayType.List);\n const albumsContext = useSectionContext(ContentType.SearchAlbumResults, albums, pageContext, 3, ResourceDisplayType.List);\n const playlistsContext = useSectionContext(ContentType.SearchPlaylistResults, playlists, pageContext, 4, ResourceDisplayType.List);\n\n const onActionFn = (action: PreviewAction, previewContext: PreviewContextModel) => onAction(action, SearchResultAreaSource.Search, previewContext);\n\n return (\n <section className=\"results\">\n {mixedResults && <ResourceSection showTitle resources={mixedResults.mixedResults?.items ?? null} context={mixedContext} onAction={onActionFn} />}\n {tracks && <ResourceSection showTitle resources={tracks.tracks?.items ?? null} context={tracksContext} showAll={tracks} onAction={onActionFn} />}\n {artists && <ResourceSection showTitle resources={artists.artists?.items ?? null} context={artistsContext} showAll={artists} onAction={onActionFn} />}\n {albums && <ResourceSection showTitle resources={albums.albums?.items ?? null} context={albumsContext} showAll={albums} onAction={onActionFn} />}\n {playlists && <ResourceSection showTitle resources={playlists.playlists?.items ?? null} context={playlistsContext} showAll={playlists} onAction={onActionFn} />}\n </section>\n );\n};\n","export * from \"./SearchResultArea\";\n","import { h } from \"preact\";\nimport { useState } from \"preact/hooks\";\nimport \"./SeekBar.scss\";\nimport { getShortTimeSpanFromSecondsHHMMSS } from \"services/formatters/timeFormatters\";\nimport { usePlayRange } from \"components/shared/hooks\";\nimport { useSecondsPlayedFromState } from \"components/shared/hooks/useSecondsPlayed\";\nimport { PlayRange, RangeType } from \"components/atoms/controls/playRange\";\n\ninterface Props {\n onChange: (percent: number) => void;\n}\n\nexport const SeekBar = ({ onChange }: Props) => {\n const [seekPosition, setSeekPosition] = useState<number | null>(null);\n const hasPlayRange = usePlayRange();\n\n const { secondsPlayed, duration } = useSecondsPlayedFromState();\n\n const seconds = seekPosition || secondsPlayed;\n\n return (\n <div className=\"seekBar GxI\">\n <PlayRange onChange={onChange} onSeekPositionChange={setSeekPosition} type={RangeType.MobileMaxi} />\n {hasPlayRange && (\n <div className=\"duration\">\n <div className=\"seconds-played\">{getShortTimeSpanFromSecondsHHMMSS(seconds)}</div>\n <div className=\"seconds-remain\">{`-${getShortTimeSpanFromSecondsHHMMSS(duration - seconds)}`}</div>\n </div>\n )}\n </div>\n );\n};\n","export { SeekBar as default } from \"./SeekBar\";\n\n","import { h } from \"preact\";\nimport { useCallback, useMemo, useState } from \"preact/hooks\";\nimport type { ControlStyle } from \"../controlGroup/Control\";\nimport { Control } from \"../controlGroup/Control\";\nimport { ControlGroup } from \"../controlGroup/ControlGroup\";\nimport { getSortOptionName } from \"services/sort/getSortOptionName\";\nimport { getRandomUUID } from \"services/utils\";\nimport type { SortOption, SortOptionsModel } from \"models/app/SortOption\";\nimport { useCallbackMap } from \"components/shared/hooks\";\nimport { CheckMark } from \"components/atoms/controls/checkMark\";\n\ninterface Props {\n className?: string;\n style: ControlStyle;\n sortOptions: SortOptionsModel;\n onChange: (option: SortOption) => void;\n}\n\nexport const SortControl = ({ className, style, sortOptions, onChange: onChangeProp }: Props) => {\n const name = useMemo(() => getRandomUUID(), []);\n const [selected, setSelected] = useState(sortOptions.selected);\n const onChange = useCallback(\n (option: SortOption) => {\n setSelected(option);\n sortOptions.onChange(option);\n if (onChangeProp) onChangeProp(option);\n },\n [sortOptions, onChangeProp]\n );\n const options = useCallbackMap(sortOptions.options, onChange);\n\n return (\n <ControlGroup className={`sortControl ${className ?? \"\"}`}>\n {options.map((option) => (\n <Control\n key={option.key}\n title={getSortOptionName(option.key)}\n onClick={option.callback}\n right={<CheckMark type=\"radio\" checked={option.key === selected} onChange={option.callback} name={name} />}\n style={style}\n />\n ))}\n </ControlGroup>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useRef, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./VolumeExpandButton.scss\";\nimport { dispatch } from \"global\";\nimport { PLAYER_SET_VOLUME, PLAYER_TOGGLE_VOLUME_EXPAND } from \"global/actions\";\nimport { getVolumeIcon } from \"services/player/controllers/service/helpers/icons\";\nimport type { RootModel } from \"models/app\";\nimport { usePageClick } from \"components/shared/hooks/usePageClick\";\nimport { BasicRange } from \"components/atoms/controls/basicRange\";\nimport { Button } from \"components/atoms/controls/button\";\n\nexport enum ExpandDirection {\n Up = \"up\",\n Down = \"down\"\n}\n\ninterface Props {\n direction: ExpandDirection;\n}\n\nexport const VolumeExpandButton = ({ direction }: Props) => {\n const volume = useSelector((root: RootModel) => root.player.volume);\n const muted = useSelector((root: RootModel) => root.player.muted);\n const volumeLevel = muted ? 0 : volume * 100;\n\n const [open, setOpen] = useState(false);\n\n const ref = useRef<HTMLDivElement>(null);\n usePageClick(() => open && setOpen(false), ref);\n\n const toggleOpen = useCallback(() => {\n setOpen(!open);\n dispatch({ type: PLAYER_TOGGLE_VOLUME_EXPAND });\n }, [open]);\n const setVolume = useCallback((percent: number) => dispatch({ type: PLAYER_SET_VOLUME, payload: { volume: percent / 100 } }), []);\n\n return (\n <div className={`volumeExpandButton YlS --open-${open}`}>\n <div className={`rangeContainer --direction-${direction}`} ref={ref}>\n <div className=\"background\" />\n <BasicRange value={volumeLevel} onChange={setVolume} />\n </div>\n <Button onClick={toggleOpen} icon={getVolumeIcon(volume, muted)} round />\n </div>\n );\n};\n","export * from \"./VolumeExpandButton\";\n","import { h } from \"preact\";\nimport type { ModalButton } from \"../modal\";\nimport { dismissModal, Modal, openModal } from \"../modal\";\nimport { dispatch, messageBus } from \"global\";\nimport { PLAYER_SET_PLAY, PLAYER_STARTED_BY_USER } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { ButtonDesign } from \"components/atoms/controls/button\";\n\nexport function showConcurrencyModal(deviceId: string, deviceName: string) {\n unsubscribe = messageBus.subscribeEvery(PLAYER_STARTED_BY_USER, dismiss);\n\n return openModal(<ConcurrencyModal deviceId={deviceId} deviceName={deviceName} />);\n}\nexport function ConcurrencyModal({ deviceId, deviceName }: { deviceId: string; deviceName: string }) {\n const translations = useTranslations();\n const buttons: ModalButton[] = [\n {\n title: \"ConcurrencyModalCancel\",\n action: () => dismissModal(\"ConcurrencyModalCancel\"),\n design: ButtonDesign.TextBrandMedium\n },\n {\n title: \"ConcurrencyModalContinue\",\n action: resume,\n design: ButtonDesign.PrimarySmall\n }\n ];\n\n const subtitle = !deviceId || deviceId === \"legacy\" ? translations.ConcurrencyModalSubTitleLegacy : translations.ConcurrencyModalSubTitle.replace(\"${DeviceName}\", deviceName);\n\n return <Modal hasXCloseButton title={translations.ConcurrencyModalTitle} text={subtitle} buttons={buttons} />;\n}\n\nlet unsubscribe: (() => void) | null = null;\n\nfunction dismiss() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = null;\n }\n dismissModal(\"ConcurrencyModal.dismiss\");\n}\n\nfunction resume() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = null;\n }\n dispatch({\n type: PLAYER_SET_PLAY,\n payload: {\n play: true,\n context: { action: AudioContextAction.ConcurrencyResume, trace: null }\n }\n });\n dismissModal(\"ConcurrencyModal.resume\");\n}\n","export * from \"./ConcurrencyModal\";\n","import { h, createContext } from \"preact\";\nimport { forwardRef } from \"preact/compat\";\nimport { useCallback, useLayoutEffect, useMemo, useState } from \"preact/hooks\";\nimport { FloatingSheet, BottomSheet } from \".\";\nimport \"./AppContextMenu.scss\";\nimport { useContextMenus } from \"components/app/hooks\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL } from \"global/actions\";\nimport { distinct } from \"services/arrayHelper\";\nimport { OpenMenuResultAction } from \"services/contextMenus/open\";\nimport type { ContextMenuSheetModel, ContextMenuLinkModel } from \"models/view/contextMenu\";\nimport { KeyboardKeyName, usePageKey } from \"components/shared/hooks\";\nimport { useAppMediaSize, MediaSize } from \"components/shared/hooks/useAppMediaSize\";\nimport { Feature, isFeatureEnabled } from \"global/config\";\n\nexport enum ContextMenuMode {\n BottomSheet = \"bottomSheet\",\n Floating = \"floating\"\n}\n\ninterface ContextMenuSheetContextValue {\n sheet?: ContextMenuSheetModel;\n}\n\ninterface ContextMenuLinkContextValue {\n link?: ContextMenuLinkModel;\n}\n\ninterface ContextMenuManagerContextValue {\n mode?: ContextMenuMode;\n index?: number;\n sheet?: ContextMenuSheetModel;\n}\n\nexport const ContextMenuSheetContext = createContext<ContextMenuSheetContextValue>({});\nexport const ContextMenuLinkContext = createContext<ContextMenuLinkContextValue>({});\nexport const ContextMenuManagerContext = createContext<ContextMenuManagerContextValue>({});\n\ninterface Props {\n className?: string;\n}\n\nexport const AppContextMenu = forwardRef<HTMLDialogElement, Props>(({ className }: Props, ref) => {\n const appMediaSize = useAppMediaSize();\n const { open, visible, isOpen } = useContextMenus();\n\n const mode: ContextMenuMode = (() => {\n switch (appMediaSize) {\n case MediaSize.Mobile:\n return isFeatureEnabled(Feature.BottomSheetMenus) ? ContextMenuMode.BottomSheet : ContextMenuMode.Floating;\n case MediaSize.Tablet:\n case MediaSize.Desktop:\n return ContextMenuMode.Floating;\n }\n })();\n\n const sheets = useMemo(() => distinct([...open.reverse(), ...visible]), [open, visible]);\n const close = useCallback((ev?: MouseEvent) => {\n if (ev) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Cancel } } });\n }, []);\n\n usePageKey((ev) => {\n if (!isOpen) return;\n if (ev.key === KeyboardKeyName.Escape) {\n ev.stopPropagation();\n ev.preventDefault();\n close();\n }\n });\n\n return (\n <ContextMenuManagerContext.Provider value={{ mode }}>\n <dialog onClick={close} onContextMenu={close} tabIndex={-1} ref={ref} open={true} className={`appContextMenu RTs ${className ?? \"\"} --open-${isOpen} --mode-${mode}`}>\n <div className=\"background\" />\n {sheets.map((sheet, index) => (\n <SheetRender key={sheet.id} sheet={sheet} mode={mode} index={index} />\n ))}\n </dialog>\n </ContextMenuManagerContext.Provider>\n );\n});\n\nexport interface SheetProps {\n sheet: ContextMenuSheetModel;\n mode: ContextMenuMode;\n index: number;\n}\n\nconst SheetRender = (props: SheetProps) => {\n const { mode, sheet } = props;\n\n const [count, setCount] = useState(-1);\n useLayoutEffect(() => setCount((count) => (count < 1 ? count + 1 : count)), [mode]);\n\n return (\n <ContextMenuSheetContext.Provider key={sheet.id} value={{ sheet }}>\n {mode === ContextMenuMode.Floating && <FloatingSheet key={sheet.id} {...props} />}\n {mode === ContextMenuMode.BottomSheet && <BottomSheet key={sheet.id} {...{ ...props, openSmooth: count < 1 }} />}\n </ContextMenuSheetContext.Provider>\n );\n};\n","import { h } from \"preact\";\nimport { useRef, useCallback, useState, useMemo, useEffect } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport type { SheetProps } from \".\";\nimport \"./BottomSheet.scss\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL, CONTEXT_MENU_SET_VISIBLE } from \"global/actions\";\nimport { isContextMenuSheetOpen } from \"services/contextMenus\";\nimport { OpenMenuResultAction } from \"services/contextMenus/open\";\nimport type { RootModel } from \"models/app\";\nimport { ScrollAxis } from \"components/shared/hooks/useScrollPosition\";\nimport { useScrollState, ScrollState } from \"components/shared/hooks/useScrollState\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\n\ninterface BottomSheetProps extends SheetProps {\n openSmooth: boolean;\n}\n\nexport const BottomSheet = ({ index, sheet, openSmooth }: BottomSheetProps) => {\n const scroll1Ref = useRef<HTMLDivElement | null>(null);\n const scroll2Ref = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const rootOpen = useSelector((root: RootModel) => root.menu.open);\n const open = useMemo(() => isContextMenuSheetOpen(rootOpen, sheet), [rootOpen, sheet]);\n\n const scrollState = useScrollState(scroll1Ref.current, scroll2Ref.current, ScrollAxis.y);\n\n const [scrollChanged, setScrollChanged] = useState(false);\n const [visibleNow, setVisibleNow] = useState(false);\n\n const close = useCallback(() => dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Cancel } } }), []);\n const setVisible = useCallback((visible: boolean) => dispatch({ type: CONTEXT_MENU_SET_VISIBLE, payload: { sheet, visible } }), [sheet]);\n\n useEffect(() => {\n const visibleNow = scrollState !== ScrollState.Start && scrollState != ScrollState.NoScroll;\n\n if (visibleNow && !scrollChanged) setScrollChanged(true);\n if (!visibleNow && scrollChanged) setVisibleNow(visibleNow);\n }, [scrollState, scrollChanged]);\n\n useEffect(() => {\n if (!visibleNow && scrollChanged) {\n setVisible(false);\n if (open) close();\n }\n }, [visibleNow, scrollChanged, open, close, setVisible]);\n\n useEffect(() => {\n return () => {\n setVisible(false);\n };\n }, [setVisible]);\n\n useEffect(() => {\n if (open) {\n setVisibleNow(true);\n setVisible(true);\n const to = scroll1Ref.current ? scroll1Ref.current.clientHeight - 64 : 0;\n scroll1Ref.current?.scrollTo({ top: to, behavior: \"smooth\" });\n } else {\n scroll1Ref.current?.scrollTo({ top: 0, behavior: \"smooth\" });\n setTimeout(() => setVisible(false), 1000);\n }\n }, [open, scroll1Ref, openSmooth, setVisible]);\n\n const prevent = useCallback((ev: MouseEvent) => {\n ev.stopPropagation();\n }, []);\n\n if (!visibleNow && !open) return null;\n\n return (\n <div className={`bottomSheet kyW test_contextMenu --open-${open} --scrollState-${scrollState}`} style={{ zIndex: index }}>\n <div className=\"background\" onClick={close} />\n <div className=\"scroll1\" ref={scroll1Ref}>\n <div className=\"scroll2\" ref={scroll2Ref}>\n <div className=\"top\" />\n <div className=\"sheet\" onClick={prevent}>\n <div className=\"content\" ref={contentRef}>\n {sheet.content}\n </div>\n <div className=\"bottom1\">\n <div className=\"bottom2\">\n <div className=\"menu\">\n <Button className=\"close\" design={ButtonDesign.ContextMenuBottom} onClick={close}>\n Luk vindue\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useEffect } from \"preact/hooks\";\nimport type { SheetProps } from \".\";\nimport \"./FloatingSheet.scss\";\nimport { useContextMenuPlacement } from \"./hooks\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_HOVER, CONTEXT_MENU_OPEN, CONTEXT_MENU_UPDATE_POSITION } from \"global/actions\";\nimport { isContextMenuChildOpenWithAnotherLayer } from \"services/contextMenus\";\nimport type { ContextMenuPosition } from \"models/view/contextMenu\";\nimport { ContextMenuPositionType } from \"models/view/contextMenu\";\nimport { useRefUpdate } from \"components/shared/hooks\";\n\nexport const FloatingSheet = ({ index, sheet }: SheetProps) => {\n const placement = useContextMenuPlacement({ sheetPos: sheet.position, parentSheetPos: sheet.parent?.position ?? null, align: sheet.align, gap: sheet.gap });\n const { top, left, right } = placement ?? { top: 0, left: 0, right: undefined };\n const sheetRef = useRefUpdate<HTMLDivElement>();\n const inBackground = isContextMenuChildOpenWithAnotherLayer(sheet);\n\n useEffect(() => {\n if (!sheetRef.current) return;\n const position: ContextMenuPosition = { type: ContextMenuPositionType.Anchor, element: sheetRef.current };\n dispatch({ type: CONTEXT_MENU_UPDATE_POSITION, payload: { item: sheet, position } });\n }, [sheet, sheetRef]);\n\n useEffect(() => {\n if (!inBackground) return;\n dispatch({ type: CONTEXT_MENU_HOVER, payload: { itemId: sheet.id, on: false } });\n }, [sheet.id, inBackground]);\n\n const hoverOn = useCallback(() => {\n if (inBackground) return;\n dispatch({ type: CONTEXT_MENU_HOVER, payload: { itemId: sheet.id, on: true } });\n }, [sheet.id, inBackground]);\n\n const hoverOff = useCallback(() => {\n if (inBackground) return;\n dispatch({ type: CONTEXT_MENU_HOVER, payload: { itemId: sheet.id, on: false } });\n }, [sheet.id, inBackground]);\n\n const prevent = useCallback((ev: MouseEvent) => {\n ev.stopPropagation();\n }, []);\n\n const open = useCallback(() => {\n dispatch({ type: CONTEXT_MENU_OPEN, payload: { sheet } });\n }, [sheet]);\n\n return (\n <div\n className={`floatingSheet test_contextMenu HR4 --placement-${placement != null} --width-${sheet.width} --inBackground-${inBackground}`}\n style={{ zIndex: index, top, left, right }}\n onClick={prevent}\n onPointerEnter={hoverOn}\n onPointerLeave={hoverOff}\n ref={sheetRef}>\n <div className=\"content\">{sheet.content}</div>\n <div className=\"foreground\" onClick={open} />\n </div>\n );\n};\n","import { h, ComponentChildren } from \"preact\";\nimport { useMemo, useState, useContext, useCallback, useEffect } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./Link.scss\";\nimport { ContextMenuMode, ContextMenuSheetContext, ContextMenuManagerContext, ContextMenuLinkContext as LinkContext } from \".\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_OPEN, CONTEXT_MENU_UPDATE_POSITION, CONTEXT_MENU_HOVER, CONTEXT_MENU_CLOSE_ALL } from \"global/actions\";\nimport { TestLocator } from \"global/constants/testLocator\";\nimport { createContextMenuLink, isContextMenuLinkActive, isContextMenuSheetOpenOrVisible, OpenMenuResultAction } from \"services/contextMenus\";\nimport { openSubmenu } from \"services/contextMenus/open\";\nimport { RootModel } from \"models/app\";\nimport { LinkContextModel } from \"models/app/resourceContextModel\";\nimport { ContextMenuPositionType, ContextMenuPosition, ContextMenuSheetModel } from \"models/view/contextMenu\";\nimport { useRefUpdate } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { Icon, IconName } from \"components/atoms/icon\";\n\ninterface LinkProps {\n activated?: boolean;\n children?: ComponentChildren;\n className?: string;\n closeOnClick?: boolean;\n disabled?: boolean;\n icon?: IconName;\n link?: LinkContextModel;\n onClick?: (ev: MouseEvent) => void;\n testLocator?: TestLocator;\n tooltip?: string;\n toggled?: boolean;\n}\n\nexport const Link = ({ icon, children, className, closeOnClick, onClick, link, activated, disabled, toggled }: LinkProps) => {\n const innerOnClick = !(closeOnClick || onClick)\n ? undefined\n : (ev: MouseEvent) => {\n if (onClick) {\n onClick(ev);\n }\n if (closeOnClick) {\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n }\n };\n return (\n <Button\n activated={activated}\n design={ButtonDesign.ContextMenu}\n className={`link A7m ${className ?? \"\"}`}\n icon={icon}\n onClick={innerOnClick}\n link={link}\n toggled={toggled}\n disabled={disabled}>\n {children}\n </Button>\n );\n};\n\ninterface ContextLinkWithMenuProps {\n icon?: IconName;\n children?: ComponentChildren;\n submenu: h.JSX.Element;\n disabled?: boolean;\n}\n\nexport const LinkWithSubmenu = ({ icon, submenu, children, disabled }: ContextLinkWithMenuProps) => {\n const parent = useContext(ContextMenuSheetContext).sheet as ContextMenuSheetModel;\n const mode = useContext(ContextMenuManagerContext).mode as ContextMenuMode;\n const linkRef = useRefUpdate<HTMLButtonElement>();\n const appMenu = useSelector((model: RootModel) => model.menu);\n\n const link = useMemo(() => createContextMenuLink({ parent, tree: parent.tree, layer: parent.layer, position: null }), [parent]);\n const [sheet, setSheet] = useState<ContextMenuSheetModel | null>(null);\n\n const isActive = useMemo(() => isContextMenuLinkActive(appMenu.open?.id ?? null, appMenu.hovers, link), [link, appMenu.open, appMenu.hovers]);\n const isSubOpen = useMemo(() => sheet != null && isContextMenuSheetOpenOrVisible(appMenu.open, appMenu.visible, sheet), [appMenu.open, appMenu.visible, sheet]);\n\n const openSub = useCallback(() => {\n if (sheet) dispatch({ type: CONTEXT_MENU_OPEN, payload: { sheet } });\n else {\n const newSheet = openSubmenu({ parent: link, menu: submenu });\n setSheet(newSheet);\n }\n }, [sheet, setSheet, link, submenu]);\n const openParent = useCallback(() => dispatch({ type: CONTEXT_MENU_OPEN, payload: { sheet: parent } }), [parent]);\n\n useEffect(() => {\n if (!linkRef.current) return;\n const position: ContextMenuPosition = { type: ContextMenuPositionType.Anchor, element: linkRef.current };\n dispatch({ type: CONTEXT_MENU_UPDATE_POSITION, payload: { item: link, position } });\n }, [link, linkRef]);\n\n const hover = (on: boolean) => (!on || !disabled) && dispatch({ type: CONTEXT_MENU_HOVER, payload: { itemId: link.id, on } });\n\n useEffect(() => {\n if (mode === ContextMenuMode.Floating && isActive !== isSubOpen) {\n const fn = () => {\n if (isActive) openSub();\n else if (isSubOpen) openParent();\n };\n\n const timeOut = isActive ? 150 : 170;\n const timeOutId = window.setTimeout(() => fn(), timeOut);\n return () => clearTimeout(timeOutId);\n }\n }, [mode, isActive, isSubOpen, openParent, openSub]);\n\n return (\n <LinkContext.Provider value={{ link }}>\n <Button\n disabled={disabled}\n design={ButtonDesign.ContextMenu}\n className={`link A7m`}\n icon={icon}\n onClick={openSub}\n hover={isActive}\n ref={linkRef}\n onPointerEnter={() => hover(true)}\n onPointerLeave={() => hover(false)}>\n {children}\n <Icon className=\"submenu\" icon={IconName.ArrowRightSmall} />\n </Button>\n </LinkContext.Provider>\n );\n};\n","import { ComponentChildren, h, Fragment } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ContextMenuManagerContext, ContextMenuMode } from \".\";\n\nexport enum ShowSheetTop {\n InBottonSheet,\n Always\n}\n\ninterface SheetProps {\n top: h.JSX.Element;\n showTop?: ShowSheetTop;\n children?: ComponentChildren;\n}\n\nexport const Sheet = ({ top, showTop = ShowSheetTop.InBottonSheet, children }: SheetProps) => {\n const mode = useContext(ContextMenuManagerContext).mode as ContextMenuMode;\n const renderTop = showTop === ShowSheetTop.Always || mode === ContextMenuMode.BottomSheet;\n\n return (\n <Fragment>\n {renderTop && <div className=\"header\">{top}</div>}\n {children}\n </Fragment>\n );\n};\n","export * from \"./useContextMenuPosition\";","import { useState, useLayoutEffect } from \"preact/hooks\";\nimport { useLocalization } from \"components/app/hooks\";\nimport { CONTEXT_MENU_REPOSITION } from \"global/actions\";\nimport { useMessageBus } from \"global/hooks\";\nimport type { ContextMenuPosition } from \"models/view/contextMenu\";\nimport { ContextMenuAlign, ContextMenuPositionType } from \"models/view/contextMenu\";\nimport { useAppResize } from \"components/shared/hooks\";\n\nexport class ContextMenuPositionBox {\n top = 0;\n right = 0;\n bottom = 0;\n left = 0;\n}\n\ninterface ContextMenuPlacement {\n fitWidth: boolean;\n fitHeight: boolean;\n top: number;\n left?: number;\n right?: number;\n width: number;\n height: number;\n}\n\nenum ContextMenuSide {\n Top,\n Right,\n Bottom,\n Left\n}\n\ninterface Props {\n sheetPos: ContextMenuPosition | null;\n parentSheetPos: ContextMenuPosition | null;\n align: ContextMenuAlign;\n gap: boolean;\n}\n\nfunction getPlacement(viewMargin: number, box1: ContextMenuPositionBox, box2: ContextMenuPositionBox, side: ContextMenuSide, gap: boolean): ContextMenuPlacement {\n const menuGap = gap ? 1 : 0;\n const menuTopPadding = 16;\n\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n let availableHeight;\n\n switch (side) {\n case ContextMenuSide.Top:\n availableHeight = box1.top - viewMargin;\n break;\n case ContextMenuSide.Bottom:\n availableHeight = vh - box1.bottom - viewMargin;\n break;\n case ContextMenuSide.Right:\n case ContextMenuSide.Left:\n availableHeight = vh - 2 * viewMargin;\n break;\n }\n\n let availableWidth: number;\n\n switch (side) {\n case ContextMenuSide.Top:\n case ContextMenuSide.Bottom:\n availableWidth = vw - 2 * viewMargin;\n break;\n case ContextMenuSide.Right:\n availableWidth = vw - box1.right - viewMargin;\n break;\n case ContextMenuSide.Left:\n availableWidth = box1.left - viewMargin;\n break;\n }\n\n let width = box2.right - box2.left;\n let height = box2.bottom - box2.top;\n\n const fitWidth = width <= availableWidth;\n const fitHeight = height <= availableHeight;\n\n if (!fitWidth) width = availableWidth;\n if (!fitHeight) height = availableHeight;\n\n let top: number;\n\n switch (side) {\n case ContextMenuSide.Top:\n top = box1.top - height - menuGap;\n break;\n case ContextMenuSide.Bottom:\n top = box1.bottom + menuGap;\n break;\n case ContextMenuSide.Right:\n case ContextMenuSide.Left:\n top = box1.top - menuTopPadding;\n if (height + top > availableHeight + viewMargin) top = availableHeight + viewMargin - height;\n break;\n }\n\n let left: number;\n\n switch (side) {\n case ContextMenuSide.Top:\n case ContextMenuSide.Bottom:\n left = box1.left;\n if (width + left > availableWidth + viewMargin) left = availableWidth + viewMargin - width;\n break;\n case ContextMenuSide.Right:\n left = box1.right + menuGap;\n break;\n case ContextMenuSide.Left:\n left = box1.left - width - menuGap;\n break;\n }\n\n const placement: ContextMenuPlacement = {\n fitWidth,\n fitHeight,\n top,\n left,\n width,\n height\n };\n\n return placement;\n}\n\nconst getBestPlacement = (\n viewMargin: number,\n sheetPos: ContextMenuPosition | null,\n parentSheetPos: ContextMenuPosition | null,\n align: ContextMenuAlign,\n gap: boolean\n): ContextMenuPlacement | null => {\n if (!sheetPos) return null;\n if (!parentSheetPos) return null;\n\n const box1 = getPosBox(parentSheetPos);\n const box2 = getPosBox(sheetPos);\n\n switch (align) {\n case ContextMenuAlign.Right: {\n const p1 = getPlacement(viewMargin, box1, box2, ContextMenuSide.Right, gap);\n if (p1.fitWidth) return p1;\n\n const p2 = getPlacement(viewMargin, box1, box2, ContextMenuSide.Left, gap);\n if (p2.fitWidth) return p2;\n\n return p1.width >= p2.width ? p1 : p2;\n }\n case ContextMenuAlign.Below: {\n const p1 = getPlacement(viewMargin, box1, box2, ContextMenuSide.Bottom, gap);\n if (p1.fitHeight) return p1;\n\n const p2 = getPlacement(viewMargin, box1, box2, ContextMenuSide.Top, gap);\n if (p2.fitHeight) return p2;\n\n return p1.height >= p2.height ? p1 : p2;\n }\n case ContextMenuAlign.UpperRight: {\n const p2 = getPlacement(viewMargin, box1, box2, ContextMenuSide.Left, gap);\n p2.top = 8;\n return p2;\n }\n }\n};\n\nexport const useContextMenuPlacement = ({ sheetPos, parentSheetPos, align, gap }: Props) => {\n const [placement, setPlacement] = useState<ContextMenuPlacement | null>(null);\n const local = useLocalization();\n const size = useAppResize();\n const margin = 8;\n\n useMessageBus(CONTEXT_MENU_REPOSITION, () => {\n setPlacement(() => getBestPlacement(margin, sheetPos, parentSheetPos, align, gap));\n });\n\n useLayoutEffect(() => {\n setPlacement(() => getBestPlacement(margin, sheetPos, parentSheetPos, align, gap));\n }, [margin, sheetPos, parentSheetPos, align, gap, size]);\n\n useLayoutEffect(() => {\n setTimeout(() => {\n setPlacement(() => getBestPlacement(margin, sheetPos, parentSheetPos, align, gap));\n });\n }, [margin, sheetPos, parentSheetPos, align, gap, size, local]);\n\n return placement;\n};\n\nfunction getPosBox(position: ContextMenuPosition): ContextMenuPositionBox {\n const pos = new ContextMenuPositionBox();\n\n switch (position.type) {\n case ContextMenuPositionType.ScreenCorner: {\n const { x, y } = position.screenPosition;\n pos.top = y;\n pos.bottom = y;\n pos.right = window.innerWidth - x;\n pos.left = window.innerWidth - x;\n return pos;\n }\n case ContextMenuPositionType.ScreenPosition: {\n const { x, y } = position.screenPosition;\n pos.top = y;\n pos.bottom = y;\n pos.right = x;\n pos.left = x;\n return pos;\n }\n case ContextMenuPositionType.Anchor: {\n const { top, right, bottom, left } = position.element.getBoundingClientRect();\n pos.top = top;\n pos.right = right;\n pos.bottom = bottom;\n pos.left = left;\n return pos;\n }\n }\n}\n","export * from \"./AppContextMenu\";\nexport * from \"./Link\";\nexport * from \"./Sheet\";\nexport * from \"./BottomSheet\";\nexport * from \"./FloatingSheet\";\n","import { h } from \"preact\";\nimport { useDisplayLoggedIn } from \"services/user\";\n\nexport const AccountLink = () => {\n const loggedIn = useDisplayLoggedIn();\n return loggedIn ? <div className={\"text\"}>{`User name`}</div> : null;\n};\n","import { h } from \"preact\";\nimport { Link } from \"..\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL, PLAYQUEUE_ADD_TO_LAST } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport type { Multiselect } from \"services/selection\";\nimport { getMultiselectPlayModel } from \"services/selection\";\nimport { createAndStartUserPlayTraceModel, TraceName } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n multiselect: Multiselect;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const AddMultipleToLastQueueLink = ({ multiselect, context, showIcon }: Props) => {\n const translations = useTranslations();\n const addToQueue = async () => {\n const playable = getMultiselectPlayModel(multiselect);\n const trace = await createAndStartUserPlayTraceModel(TraceName.ClickToSound);\n dispatch({ type: PLAYQUEUE_ADD_TO_LAST, payload: { playable, playableContext: context, context: { action: AudioContextAction.UserContextMenuAddToQueue, trace } } });\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n };\n return (\n <Link icon={showIcon ? IconName.PlayAsLast : undefined} onClick={addToQueue}>\n {translations.QueuePlayAsLast}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { PLAYER_TOGGLE_FAVORITE } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport type { Multiselect } from \"services/selection\";\nimport { getMultiselectPlayModel, clearSelection } from \"services/selection\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n multiselect: Multiselect;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const AddMultipleToMyMusicLink = ({ multiselect, context, showIcon }: Props) => {\n const translations = useTranslations();\n const { section } = context;\n const isFavorite = multiselect.state.productType === ContentType.MyMusicTracks;\n\n const icon = useMemo(() => {\n if (!showIcon) return undefined;\n if (isFavorite) return IconName.FavoritesActive;\n return IconName.Favorites;\n }, [isFavorite, showIcon]);\n\n const onRemoveFavorites = useCallback(async () => {\n const tracks = getMultiselectPlayModel(multiselect).tracks?.items ?? null;\n if (tracks) {\n if (isFavorite) {\n clearSelection(multiselect);\n }\n dispatch({ type: PLAYER_TOGGLE_FAVORITE, payload: { section, playables: tracks, operation: \"remove\" } });\n }\n }, [multiselect, section, isFavorite]);\n\n const onAddFavoritesOrLogin = useCallback(async () => {\n if (multiselect.state.activeItem) {\n const tracks = getMultiselectPlayModel(multiselect).tracks?.items;\n if (tracks) {\n dispatch({ type: PLAYER_TOGGLE_FAVORITE, payload: { section, playables: tracks ?? null, operation: \"add\" } });\n }\n }\n }, [multiselect, section]);\n\n return isFavorite ? (\n <Link icon={icon} toggled closeOnClick onClick={onRemoveFavorites}>\n {translations.ContextOptionRemoveFromMyMusic}\n </Link>\n ) : (\n <Link icon={icon} closeOnClick onClick={onAddFavoritesOrLogin}>\n {translations.ContextOptionAddToMyMusic}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { LinkWithSubmenu } from \"../Link\";\nimport { AddToPlaylistContextMenu } from \"../menus\";\nimport { useTranslations } from \"global/config\";\nimport { addTracksToPlaylist } from \"services/playlist\";\nimport type { Multiselect } from \"services/selection\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { TrackPreviewModel } from \"models/domain\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n multiselect: Multiselect;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const AddMultipleToPlaylistLink = ({ multiselect, context, showIcon }: Props) => {\n const translations = useTranslations();\n\n const onAdd = useCallback(async (playlistId: string) => {\n if (multiselect.state.selectedItems.length > 0) {\n addTracksToPlaylist(playlistId, multiselect.state.selectedItems as TrackPreviewModel[]);\n }\n }, [multiselect])\n\n return (\n <LinkWithSubmenu\n disabled={multiselect.state.selectedItems.length == 0}\n icon={showIcon ? IconName.AddToPlaylist : undefined}\n submenu={<AddToPlaylistContextMenu onAdd={onAdd} context={context} />}>\n {translations.AddToPlaylist}\n </LinkWithSubmenu>\n );\n};\n","import { h } from \"preact\";\nimport { useSelector } from \"react-redux\";\nimport { Link } from \"..\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL, PLAYQUEUE_ADD } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport type { Multiselect } from \"services/selection\";\nimport { getMultiselectPlayModel } from \"services/selection\";\nimport type { RootModel } from \"models/app\";\nimport { createAndStartUserPlayTraceModel, TraceName } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { QueueLane } from \"models/app/player/input\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n multiselect: Multiselect;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const AddMultipleToQueueLink = ({ multiselect, context, showIcon }: Props) => {\n const translations = useTranslations();\n const addToQueue = async () => {\n const playable = getMultiselectPlayModel(multiselect);\n const trace = await createAndStartUserPlayTraceModel(TraceName.ClickToSound);\n dispatch({ type: PLAYQUEUE_ADD, payload: { playable, playableContext: context, context: { action: AudioContextAction.UserContextMenuAddToQueue, trace } } });\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n };\n const playQueue = useSelector((root: RootModel) => root.queue.playQueue);\n const isPriorityLaneEmpty = playQueue.findIndex((item) => item.lane === QueueLane.Priority) === -1;\n\n return (\n <Link icon={showIcon ? IconName.PlayAsNext : undefined} onClick={addToQueue}>\n {isPriorityLaneEmpty ? translations.QueuePlayAsNext : translations.QueuePlayAsPriority}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { Link } from \"..\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL, PLAYQUEUE_SET_AND_PLAY } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport type { Multiselect } from \"services/selection\";\nimport { getMultiselectPlayModel } from \"services/selection\";\nimport { createAndStartUserPlayTraceModel, TraceName } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n multiselect: Multiselect;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const AddMultipleToQueueReplaceLink = ({ multiselect, context, showIcon }: Props) => {\n const translations = useTranslations();\n const addToQueue = async () => {\n const playable = getMultiselectPlayModel(multiselect);\n const trace = await createAndStartUserPlayTraceModel(TraceName.ClickToSound);\n dispatch({ type: PLAYQUEUE_SET_AND_PLAY, payload: { playable, playableContext: context, context: { action: AudioContextAction.UserContextMenuAddToQueue, trace } } });\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n };\n return (\n <Link icon={showIcon ? IconName.PlayAsLast : undefined} onClick={addToQueue}>\n {translations.Play}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { useTranslations } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\nimport { useDisplayLoggedIn } from \"services/user\";\nimport { IconName } from \"components/atoms/icon\";\nimport { useLinkAndPreviewContext, useSectionContext } from \"components/shared/hooks\";\nimport { ContentType } from \"models/ModelType\";\nimport { navigation } from \"services/navigation\";\nimport { setProfileEntrypoint } from \"components/pages/profilesPage/profilePageEntry\";\n\nexport const AddProfileLink = () => {\n const section = useSectionContext(ContentType.ProfilesPage, null, null, null, null);\n const link = useLinkAndPreviewContext(ContentType.ProfilesPage, null, section, null);\n link.url = navigation.templates.addProfilesPage(); // todo\n\n const loggedIn = useDisplayLoggedIn();\n const translations = useTranslations();\n\n const onAddProfile = useCallback(() => {\n setProfileEntrypoint(\"Settings\");\n }, []);\n\n if (!loggedIn) return null;\n\n return (\n <Link closeOnClick onClick={onAddProfile} link={link} tooltip={translations.NavBarLogin} icon={IconName.Plus16} testLocator={TestLocator.AccountMenuAddProfileButton} className=\"iconcircle\">\n {translations.AddProfile}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { Link } from \"..\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL, PLAYQUEUE_ADD_TO_LAST } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport { createAndStartUserPlayTraceModel, TraceName } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlayQueuePlayableModel } from \"models/domain/PlayQueuePlayableModel\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n playable: PlayQueuePlayableModel | null;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const AddToLastQueueLink = ({ playable, context, showIcon }: Props) => {\n const translations = useTranslations();\n const addToQueue = async () => {\n if (!playable) return;\n const trace = await createAndStartUserPlayTraceModel(TraceName.ClickToSound);\n dispatch({ type: PLAYQUEUE_ADD_TO_LAST, payload: { playable, playableContext: context, context: { action: AudioContextAction.UserContextMenuAddToQueue, trace } } });\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n };\n return (\n <Link disabled={!playable} icon={showIcon ? IconName.PlayAsLast : undefined} onClick={addToQueue}>\n {translations.QueuePlayAsLast}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { PLAYER_TOGGLE_FAVORITE } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport type { FavoritePreviewModel } from \"services/favorites\";\nimport { useFavoriteStatus } from \"services/favorites\";\nimport { useDisplayLoggedIn } from \"services/user\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n playable: FavoritePreviewModel | null;\n showIcon: boolean;\n assumedFavorite?: boolean;\n context: PreviewContextModel;\n}\n\nexport const AddToMyMusicLink = ({ showIcon, playable, assumedFavorite, context }: Props) => {\n const loggedIn = useDisplayLoggedIn();\n let isFavorite = useFavoriteStatus(playable);\n const translations = useTranslations();\n const { section } = context;\n if (isFavorite === null && assumedFavorite !== undefined) {\n isFavorite = assumedFavorite;\n }\n\n const icon = useMemo(() => {\n if (!showIcon) return undefined;\n if (isFavorite) return IconName.FavoritesActive;\n return IconName.Favorites;\n }, [isFavorite, showIcon]);\n\n const addFavoritesOrLogin = useCallback(\n () =>\n dispatch({\n type: PLAYER_TOGGLE_FAVORITE,\n payload: {\n section,\n playables: playable ? [playable] : null,\n operation: \"add\"\n }\n }),\n [playable, section]\n );\n\n const removeFavorites = useCallback(\n () =>\n dispatch({\n type: PLAYER_TOGGLE_FAVORITE,\n payload: {\n section,\n playables: playable ? [playable] : null,\n operation: \"remove\"\n }\n }),\n [playable, section]\n );\n\n if (playable == null) {\n return <Link icon={icon}>{` `}</Link>;\n }\n\n if (isFavorite != true) {\n if (playable.contentType === ContentType.LiveRadioTrack && !playable.track.availableInSubscription) {\n return null;\n }\n if (playable.contentType === ContentType.TrackPlayable && !playable.track.availableInSubscription) {\n return null;\n }\n if (playable.contentType === ContentType.Album && !playable.availableInSubscription) {\n return null;\n }\n }\n\n if (isFavorite == null && loggedIn) {\n return <Link icon={icon}>{` `}</Link>;\n }\n\n return isFavorite ? (\n <Link icon={icon} toggled closeOnClick onClick={removeFavorites}>\n {translations.ContextOptionRemoveFromMyMusic}\n </Link>\n ) : (\n <Link icon={icon} closeOnClick onClick={addFavoritesOrLogin}>\n {translations.ContextOptionAddToMyMusic}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { LinkWithSubmenu } from \"../Link\";\nimport { AddToPlaylistContextMenu } from \"../menus\";\nimport { useTranslations } from \"global/config\";\nimport { addPlayableToPlaylist, canBeAddedToPlaylist } from \"services/playlist\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlayableModel } from \"models/domain/PlayableModel\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n playable: PlayableModel | null;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const AddToPlaylistLink = ({ playable, context, showIcon }: Props) => {\n const translations = useTranslations();\n\n const onAdd = useCallback(async (playlistId: string) => {\n if (playable) {\n await addPlayableToPlaylist(playlistId, playable);\n }\n }, [playable])\n\n if (!canBeAddedToPlaylist(playable)) return null;\n\n return (\n <LinkWithSubmenu\n disabled={playable == null}\n icon={showIcon ? IconName.AddToPlaylist : undefined}\n submenu={<AddToPlaylistContextMenu onAdd={onAdd} context={context} />}>\n {translations.AddToPlaylist}\n </LinkWithSubmenu>\n );\n};\n","import { h } from \"preact\";\nimport { useSelector } from \"react-redux\";\nimport { Link } from \"..\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL, PLAYQUEUE_ADD } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport type { RootModel } from \"models/app\";\nimport { createAndStartUserPlayTraceModel, TraceName } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { QueueLane } from \"models/app/player/input\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlayQueuePlayableModel } from \"models/domain/PlayQueuePlayableModel\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n playable: PlayQueuePlayableModel | null;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const AddToQueueLink = ({ playable, context, showIcon }: Props) => {\n const translations = useTranslations();\n const addToQueue = async () => {\n if (!playable) return;\n const trace = await createAndStartUserPlayTraceModel(TraceName.ClickToSound);\n dispatch({ type: PLAYQUEUE_ADD, payload: { playable, playableContext: context, context: { action: AudioContextAction.UserContextMenuAddToQueue, trace } } });\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n };\n const playQueue = useSelector((root: RootModel) => root.queue.playQueue);\n const isPriorityLaneEmpty = playQueue.findIndex((item) => item.lane === QueueLane.Priority) === -1;\n\n return (\n <Link disabled={!playable} icon={showIcon ? IconName.PlayAsNext : undefined} onClick={addToQueue}>\n {isPriorityLaneEmpty ? translations.QueuePlayAsNext : translations.QueuePlayAsPriority}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"..\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { ContextResourceModel, PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { openToast } from \"components/organisms/toast\";\nimport { CopyIdFailedToast, CopyIdSuccessToast } from \"components/organisms/toast/toasts\";\n\ninterface Props {\n context: PreviewContextModel;\n}\n\nasync function copyTrackIdToClipboard(resource: ContextResourceModel) {\n const id = resource?.id;\n if (id == null) {\n log.error({ code: \"web-220224-1322\", msg: DefaultLogMessage.UnexpectedNull, data: { resource } });\n return;\n }\n\n try {\n await navigator.clipboard.writeText(id);\n openToast(CopyIdSuccessToast());\n } catch (e) {\n log.error({ code: \"web-220224-1423\", msg: \"id could not be copied\", data: { resource }, error: e });\n openToast(CopyIdFailedToast());\n }\n}\n\nexport const CopyIdLink = ({ context }: Props) => {\n const resource = context.resource;\n\n const copyToClipBoard = useCallback(() => {\n if (!resource) {\n log.error({ code: \"web-220719-1112\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n copyTrackIdToClipboard(resource);\n }, [resource]);\n\n return (\n <Link icon={undefined} onClick={copyToClipBoard}>\n Copy track ID\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { Link } from \"..\";\nimport { useTranslations } from \"global/config\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n onClick: () => void;\n showIcon: boolean;\n disabled?: boolean;\n}\n\nexport const CreatePlaylistLink = ({ showIcon, onClick, disabled }: Props) => {\n const translations = useTranslations();\n return (\n <Link disabled={disabled} onClick={onClick} icon={showIcon ? IconName.Playlist : undefined} closeOnClick>\n {translations.CreatePlaylist}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { Link } from \"../Link\";\nimport { useTranslations } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\nimport { UserProfileModel } from \"models/app\";\nimport { Avatar } from \"components/atoms/controls/avatar\";\nimport \"./CurrentProfileLink.scss\";\nimport { Button } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { TopHeaderLink } from \"./TopHeaderLink\";\n\ninterface Props {\n profile?: UserProfileModel;\n}\n\nexport const CurrentProfileLink = ({ profile }: Props) => {\n const translations = useTranslations();\n\n if (!profile) {\n return <TopHeaderLink title={translations.ProfileDefaultTitle} icon={IconName.Profile} testLocator={TestLocator.PageHeaderAccountButton} />\n }\n\n return (\n <Link closeOnClick className=\"currentprofilelink --hover-false\" tooltip={profile ? undefined : translations.NavBarLogin} testLocator={TestLocator.AccountMenuProfileButton}>\n <span>\n {profile.title}\n <Avatar text={profile.title} color={profile.color} />\n </span>\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { SET_MY_MUSIC_SORTING } from \"global/actions\";\nimport type { FavoriteAlbumsSorting, FavoriteArtistsSorting, FavoriteTracksSorting } from \"generated/graphql-types\";\nimport type { RootModel } from \"models/app\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n sorting: FavoriteAlbumsSorting | FavoriteArtistsSorting | FavoriteTracksSorting;\n title: string;\n type: \"albumsSorting\" | \"artistsSorting\" | \"tracksSorting\";\n}\n\nexport const FavoritesSortingLink = ({ sorting, title, type }: Props) => {\n const currentSorting = useSelector((root: RootModel) => root.ui[type]);\n const onClick = useCallback(() => {\n dispatch({ type: SET_MY_MUSIC_SORTING, payload: { [type]: sorting } });\n }, [type, sorting]);\n\n return (\n <Link closeOnClick icon={currentSorting == sorting ? IconName.Checkmark : IconName.None} onClick={currentSorting !== sorting ? onClick : undefined}>\n {title}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport type { ArtistLinkModel } from \"models/domain\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n artist: ArtistLinkModel | null;\n showIcon: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const FollowArtistLink = ({ showIcon, artist }: Props) => {\n const translations = useTranslations();\n const click = () => {\n log.error({ code: \"web-210519-1229\", msg: DefaultLogMessage.NotImplemented });\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n };\n return (\n <Link icon={showIcon ? IconName.Radio : undefined} onClick={click}>\n {translations.ContextOptionFollowArtist}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { Link } from \"..\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport { promptUserForPWAInstall, getPWAInstallOption, PWAInstallOption } from \"services/pwa/initPWAService\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n showIcon: boolean;\n}\n\nexport const GetDesktopAppLink = ({ showIcon }: Props) => {\n const option = getPWAInstallOption();\n const translations = useTranslations();\n\n if (option === PWAInstallOption.None || option === PWAInstallOption.Installed) return null;\n\n const activated = option === PWAInstallOption.InstallPromptOpen;\n const prompt = async () => {\n const installed = await promptUserForPWAInstall();\n if (installed) dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n };\n\n return (\n <Link icon={showIcon ? IconName.Download : undefined} onClick={() => prompt()} activated={activated}>\n {translations.AccountMenuGetDeskopAppActionWeb}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { Link } from \"..\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport { IconName } from \"components/atoms/icon\";\nimport { showInAppFeedbackModal } from \"components/organisms/modal/modals/InAppFeedbackModal\";\n\ninterface Props {\n showIcon: boolean;\n}\n\nexport const GiveFeedbackLink = ({ showIcon }: Props) => {\n const translations = useTranslations();\n const giveFeedback = async () => {\n showInAppFeedbackModal();\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n };\n return (\n <Link icon={showIcon ? IconName.Feedback : undefined} onClick={giveFeedback}>\n {translations.SettingsFeedbackTitle}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { SET_MAXIPLAYER_OPEN } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { MobileMaxiPlayerOpen } from \"models/app\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { AlbumModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkContext } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n album: AlbumModel;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const GoToAlbumLink = ({ showIcon, album, context }: Props) => {\n const link = useLinkContext(ContentType.Album, album, context);\n const translations = useTranslations();\n const click = useCallback(() => {\n dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Closed } });\n }, []);\n\n return (\n <Link closeOnClick icon={showIcon ? IconName.Albums : undefined} onClick={click} link={link}>\n {translations.ContextOptionGoToAlbum}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { SET_MAXIPLAYER_OPEN } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { MobileMaxiPlayerOpen } from \"models/app\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ArtistLinkModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkContext } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n artist: ArtistLinkModel | null;\n showIcon: boolean;\n context: PreviewContextModel;\n}\n\nexport const GoToArtistLink = ({ showIcon, artist, context }: Props) => {\n const link = useLinkContext(ContentType.Artist, artist, context);\n const translations = useTranslations();\n const click = useCallback(() => {\n dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Closed } });\n }, []);\n return (\n <Link closeOnClick disabled={!artist} icon={showIcon ? IconName.Artist : undefined} onClick={click} link={link}>\n {translations.ContextOptionGoToArtist}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { SET_MAXIPLAYER_OPEN } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { MobileMaxiPlayerOpen } from \"models/app\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ArtistRadioModel } from \"models/domain/ArtistRadioModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkContext } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n artistRadio: ArtistRadioModel | null;\n showIcon: boolean;\n context: PreviewContextModel;\n}\n\nexport const GoToArtistRadioLink = ({ showIcon, artistRadio, context }: Props) => {\n const link = useLinkContext(ContentType.ArtistRadio, artistRadio, context);\n const translations = useTranslations();\n\n const click = useCallback(() => {\n dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Closed } });\n }, []);\n\n return (\n <Link closeOnClick icon={showIcon ? IconName.Sound : undefined} onClick={click} link={link}>\n {translations.ContextOptionGoToArtistRadioAction}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"..\";\nimport { useTranslations } from \"global/config\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkAndPreviewContext, useSectionContext } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n showIcon: boolean;\n}\n\nexport const GoToProfilesLink = ({ showIcon }: Props) => {\n const section = useSectionContext(ContentType.ProfilesPage, null, null, null, null);\n const link = useLinkAndPreviewContext(ContentType.ProfilesPage, null, section, null);\n const translations = useTranslations();\n\n const click = useCallback(() => {\n // todo: dispatch event?\n }, []);\n\n return (\n <Link closeOnClick icon={showIcon ? IconName.Settings : undefined} onClick={click} link={link}>\n {translations.ManageProfiles}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"..\";\nimport { dispatch } from \"global\";\nimport { SET_MAXIPLAYER_OPEN } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { MobileMaxiPlayerOpen } from \"models/app\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkAndPreviewContext, useSectionContext } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n showIcon: boolean;\n}\n\nexport const GoToSettingsLink = ({ showIcon }: Props) => {\n const section = useSectionContext(ContentType.SettingsPage, null, null, null, null);\n const link = useLinkAndPreviewContext(ContentType.SettingsPage, null, section, null);\n const translations = useTranslations();\n const click = useCallback(() => {\n dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Closed } });\n }, []);\n\n return (\n <Link closeOnClick icon={showIcon ? IconName.Settings : undefined} onClick={click} link={link}>\n {translations.SettingsTitle}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { SET_MAXIPLAYER_OPEN } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { MobileMaxiPlayerOpen } from \"models/app\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { TrackRadioModel } from \"models/domain/TrackRadioModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkContext } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n trackRadio: TrackRadioModel;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const GoToTrackRadioLink = ({ showIcon, trackRadio, context }: Props) => {\n const translations = useTranslations();\n const link = useLinkContext(ContentType.TrackRadio, trackRadio, context);\n const click = useCallback(() => {\n dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Closed } });\n }, []);\n return (\n <Link closeOnClick link={link} icon={showIcon ? IconName.Sound : undefined} onClick={click}>\n {translations.ContextOptionGoToTrackRadioAction}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { LinkWithSubmenu } from \"..\";\nimport { useTranslations } from \"global/config\";\nimport { IconName } from \"components/atoms/icon\";\nimport { LocalizationSettingControl } from \"components/molecules/localizationSettingControl/LocalizationSettingControl\";\n\ninterface Props {\n showIcon: boolean;\n}\n\nexport const LanguageLink = ({ showIcon }: Props) => {\n const translations = useTranslations();\n return (\n <LinkWithSubmenu icon={showIcon ? IconName.Language : undefined} submenu={<LocalizationSettingControl />}>\n {translations.SettingsLanguage}\n </LinkWithSubmenu>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { store, useTranslations } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\nimport { LogoutTrigger } from \"services/logger/analytics/properties/event\";\nimport { logout, useDisplayLoggedIn } from \"services/user\";\nimport { IconName } from \"components/atoms/icon\";\nimport { showLoginUi } from \"components/organisms/login\";\nimport { useSelector } from \"react-redux\";\nimport { RootModel } from \"models/app\";\n\ninterface Props {\n showIcon: boolean;\n}\n\nexport const LogInOutLink = ({ showIcon }: Props) => {\n const loggedIn = useDisplayLoggedIn();\n const username = useSelector((root: RootModel) => root.user.username);\n const logoutFn = useCallback(() => logout(LogoutTrigger.Manual), []);\n const translations = useTranslations();\n return loggedIn ? (\n <Link\n closeOnClick\n onClick={logoutFn}\n tooltip={translations.SettingsLogoutPrompTitle}\n icon={showIcon ? IconName.SignOut : undefined}\n testLocator={TestLocator.AccountMenuLogoutButton}>\n {\n username\n ? <div>\n {translations.SettingsLogoutPrompTitle}\n <p>{username}</p>\n </div>\n : translations.SettingsLogoutPrompTitle\n }\n </Link>\n ) : (\n <Link closeOnClick onClick={showLoginUi} tooltip={translations.NavBarLogin} icon={showIcon ? IconName.SignIn : undefined} testLocator={TestLocator.AccountMenuLoginButton}>\n {translations.NavBarLogin}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useMemo } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { PLAYLIST_DELETED } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { mutateDeletePlaylist } from \"services/backend\";\nimport { isOnPage, navigateForwardTo } from \"services/navigationStack/navigationStack\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlaylistPageModel, PlaylistPreviewModel } from \"models/domain/PlaylistModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { ModalOpenResult } from \"models/view/AppModalModel\";\nimport { IconName } from \"components/atoms/icon\";\nimport { showDeletePlaylistModal } from \"components/organisms/modal/modals/DeletePlaylistModal\";\nimport { openToast } from \"components/organisms/toast\";\nimport { PlaylistDeletedToast, PlaylistNotDeletedToast } from \"components/organisms/toast/toasts\";\n\ninterface Props {\n playable: PlaylistPreviewModel | PlaylistPageModel | null;\n preview: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const PlaylistDeleteLink = ({ showIcon, playable, preview }: Props) => {\n const translations = useTranslations();\n const showDeletePlaylistDialog = useMemo(\n () => async () => {\n if (!playable) return;\n const res = await showDeletePlaylistModal();\n if (res === ModalOpenResult.Submit) {\n try {\n const ok = await mutateDeletePlaylist({ id: playable.id });\n if (ok) {\n dispatch({\n type: PLAYLIST_DELETED,\n payload: {\n playlistId: playable.id\n }\n });\n openToast(PlaylistDeletedToast());\n if (isOnPage(ContentType.Playlist, playable)) navigateForwardTo(ContentType.MyMusicPlaylists, null, preview);\n\n return;\n }\n } catch (e) {\n // todo: consider logging\n }\n openToast(PlaylistNotDeletedToast());\n }\n },\n [playable, preview]\n );\n if (!playable) return <Link>{\"\"}</Link>;\n if (!playable.owner) return null;\n\n const icon = showIcon ? IconName.Trash : undefined;\n return (\n <Link icon={icon} disabled={!playable} closeOnClick onClick={showDeletePlaylistDialog}>\n {translations.ContextOptionDeletePlaylist}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { Link } from \"..\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { getIcon } from \"services/resource\";\nimport { getLinkFromResource } from \"services/resource/resourceLinkService\";\nimport type { PlaylistPreviewModel } from \"models/domain\";\n\ninterface Props {\n playlist: PlaylistPreviewModel;\n onClick: () => void;\n showIcon: boolean;\n}\n\nexport const PlaylistLink = ({ showIcon, playlist, onClick }: Props) => {\n const icon = getIcon(playlist.contentType);\n if (icon == null) {\n log.error({ code: \"web-210517-1418\", msg: DefaultLogMessage.NotImplemented });\n return null;\n }\n\n const title = getLinkFromResource(playlist)?.text;\n\n return (\n <Link onClick={onClick} icon={showIcon ? icon : undefined} closeOnClick>\n {title}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { useTranslations } from \"global/config\";\nimport { removeTrackFromPlaylist } from \"services/playlist\";\nimport type { PlaylistModel, TrackPreviewModel } from \"models/domain\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n track: TrackPreviewModel | null;\n playlist: PlaylistModel;\n showIcon: boolean;\n}\n\nexport const PlaylistRemoveTrackLink = ({ showIcon, track, playlist }: Props) => {\n const icon = showIcon ? IconName.Trash : undefined;\n const translations = useTranslations();\n\n const onRemoveTrack = useCallback(async () => {\n await removeTrackFromPlaylist(track, playlist);\n }, [track, playlist]);\n\n return (\n <Link icon={icon} closeOnClick disabled={!track} onClick={onRemoveTrack}>\n {translations.ContextOptionRemoveFromPlaylist}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { useTranslations } from \"global/config\";\nimport type { PlaylistPageModel, PlaylistPreviewModel } from \"models/domain\";\nimport { IconName } from \"components/atoms/icon\";\nimport { showRenamePlaylistModal } from \"components/organisms/modal/modals/RenamePlaylistModal\";\n\ninterface Props {\n playable: PlaylistPreviewModel | PlaylistPageModel | null;\n showIcon: boolean;\n}\n\nexport const PlaylistRenameLink = ({ showIcon, playable }: Props) => {\n const callback = useCallback(() => playable && showRenamePlaylistModal(playable), [playable]);\n const translations = useTranslations();\n if (playable && !playable.owner) return null;\n\n const icon = showIcon ? IconName.RenamePlaylist : undefined;\n return (\n <Link icon={icon} disabled={!playable} closeOnClick onClick={callback}>\n {translations.ContextOptionRenamePlaylist}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { PLAYLIST_MODIFIED } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { mutateModifyPlaylist } from \"services/backend\";\nimport { PlaylistVisibility } from \"generated/graphql-types\";\nimport type { PlaylistPageModel, PlaylistPreviewModel } from \"models/domain\";\nimport { isPlaylistPublic } from \"models/domain\";\nimport { IconName } from \"components/atoms/icon\";\nimport { openToast } from \"components/organisms/toast\";\nimport { PlaylistErrorStateChangeToast, PlaylistMadePrivateToast, PlaylistMadePublicToast } from \"components/organisms/toast/toasts\";\n\ninterface Props {\n playable: PlaylistPreviewModel | PlaylistPageModel | null;\n showIcon: boolean;\n}\n\nexport const PlaylistVisibilityLink = ({ showIcon, playable }: Props) => {\n const translations = useTranslations();\n const isPublic = isPlaylistPublic(playable);\n\n const icon = useMemo(() => {\n if (!showIcon) return undefined;\n if (isPublic) return IconName.Private;\n return IconName.Public;\n }, [isPublic, showIcon]);\n\n const doToggleVisibility = useCallback(async () => {\n if (!playable) return;\n try {\n const id = await mutateModifyPlaylist({\n id: playable.id,\n input: {\n visibility: isPublic ? PlaylistVisibility.Private : PlaylistVisibility.Public\n }\n });\n\n if (id) {\n dispatch({\n type: PLAYLIST_MODIFIED,\n payload: {\n playlistId: id,\n playlist: {\n visibility: isPublic ? PlaylistVisibility.Private : PlaylistVisibility.Public\n }\n }\n });\n openToast(isPublic ? PlaylistMadePrivateToast() : PlaylistMadePublicToast());\n return true;\n }\n } catch {\n /**/\n }\n\n openToast(PlaylistErrorStateChangeToast());\n return false;\n }, [playable, isPublic]);\n\n if (!playable) return <Link>{\"\"}</Link>;\n if (!playable.owner) return null;\n\n return (\n <Link icon={icon} closeOnClick onClick={doToggleVisibility}>\n {isPublic ? translations.ContextOptionMakePrivate : translations.ContextOptionMakePlaylistPublic}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { useTranslations } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\nimport { changeUserProfile, useDisplayLoggedIn } from \"services/user\";\nimport { UserProfileModel } from \"models/app\";\nimport { Avatar } from \"components/atoms/controls/avatar\";\nimport \"./ProfileLink.scss\";\n\ninterface Props {\n profile: UserProfileModel;\n}\n\nexport const ProfileLink = ({ profile }: Props) => {\n const loggedIn = useDisplayLoggedIn();\n const translations = useTranslations();\n\n const onSwitchProfile = useCallback(async () => {\n // todo: dispatch event?\n if (!profile.current) {\n const ok = await changeUserProfile(profile.id)\n }\n }, []);\n\n if (!loggedIn) return null;\n\n return (\n <Link closeOnClick className=\"profilelink\" onClick={onSwitchProfile} tooltip={translations.NavBarLogin} testLocator={TestLocator.AccountMenuProfileButton} disabled={profile.current}>\n <span>\n <Avatar text={profile.title} color={profile.color} />\n {profile.title}\n </span>\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"../Link\";\nimport { useTranslations } from \"global/config\";\nimport { removeTracksFromPlaylist } from \"services/playlist\";\nimport type { Multiselect } from \"services/selection\";\nimport { getMultiselectPlayModel, clearSelection } from \"services/selection\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { TrackPlayableModel, TrackPreviewModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n multiselect: Multiselect;\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const RemoveMultipleFromPlaylistLink = ({ multiselect, context, showIcon }: Props) => {\n const icon = showIcon ? IconName.Trash : undefined;\n const translations = useTranslations();\n\n const onRemoveTracks = useCallback(async () => {\n if (multiselect.state.selectedItems.length > 0 && multiselect.state.context) {\n const playlistId = multiselect.state.context.resource?.id;\n if (!playlistId) {\n // todo: log error\n return;\n }\n const tracks = getMultiselectPlayModel(multiselect).tracks?.items;\n if (tracks) {\n clearSelection(multiselect);\n removeTracksFromPlaylist(playlistId, tracks);\n }\n }\n }, [multiselect])\n\n if (context.section.resource?.contentType !== ContentType.Playlist || !context.section.resource.owner)\n return null;\n\n return (\n <Link icon={icon} closeOnClick onClick={onRemoveTracks}>\n {translations.ContextOptionRemoveFromPlaylist}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { LinkWithSubmenu } from \"..\";\nimport { ShareContextMenu } from \"../menus\";\nimport { useTranslations } from \"global/config\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { isPlaylistPublic } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n context: PreviewContextModel;\n showIcon: boolean;\n}\n\nexport const ShareLink = ({ context, showIcon }: Props) => {\n const resource = context.resource;\n const disabled = resource?.contentType === ContentType.Playlist && !isPlaylistPublic(resource);\n const translations = useTranslations();\n return (\n <LinkWithSubmenu disabled={disabled} icon={showIcon ? IconName.ShareAndroid : undefined} submenu={<ShareContextMenu context={context} />}>\n {translations.ContextOptionShare}\n </LinkWithSubmenu>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Link } from \"..\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { copySharingLinkToClipboard } from \"services/sharing/sharing\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n context: PreviewContextModel;\n}\n\nexport const ShareUrlLink = ({ context }: Props) => {\n const translations = useTranslations();\n const resource = context.resource;\n const onClick = useCallback(async () => {\n if (!resource) {\n log.error({ code: \"web-220224-1322\", msg: DefaultLogMessage.UnexpectedNull, data: { type: context.type } });\n return;\n }\n copySharingLinkToClipboard(resource);\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n }, [resource, context.type]);\n\n return (\n <Link icon={IconName.ShareUrl} onClick={onClick}>\n {translations.ShareUrlAction}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { Link } from \"..\";\nimport { dispatch } from \"global\";\nimport { SET_DESKTOP_LYRICS_VISIBLE, SET_MAXIPLAYER_OPEN } from \"global/actions\";\nimport { Feature, isFeatureEnabled, useTranslations } from \"global/config\";\nimport { useTrackLyricsId } from \"services/backend\";\nimport { useLoginState } from \"services/user\";\nimport { LoginState, MobileMaxiPlayerOpen } from \"models/app\";\nimport type { PlayQueuePlayableModel } from \"models/domain/PlayQueuePlayableModel\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n playable: PlayQueuePlayableModel | null;\n showIcon: boolean;\n}\n\nexport const ShowLyricsLink = ({ playable, showIcon }: Props) => {\n const translations = useTranslations();\n const lyricsId = useTrackLyricsId({ id: playable?.id ?? \"0\" })?.model;\n const isLoggedIn = useLoginState() === LoginState.LoggedIn;\n const isLyricsEnabled = isFeatureEnabled(Feature.Lyrics);\n\n if (!isLoggedIn || !isLyricsEnabled || !lyricsId) return null;\n\n const showLyrics = async () => {\n if (!playable || !lyricsId) return;\n dispatch({\n type: SET_DESKTOP_LYRICS_VISIBLE,\n payload: {\n open: true,\n startingPoint: \"ContextMenu\",\n trackId: playable.id,\n lyricsId\n }\n });\n };\n\n return (\n <Link disabled={!isLoggedIn || !isLyricsEnabled || !lyricsId} icon={showIcon ? IconName.Lyrics : undefined} onClick={showLyrics} closeOnClick>\n {translations.ContextOptionShowLyrics}\n </Link>\n );\n};\n","import { h } from \"preact\";\nimport { Link } from \"../Link\";\nimport { useTranslations } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\nimport { UserProfileModel } from \"models/app\";\nimport { Avatar } from \"components/atoms/controls/avatar\";\nimport { Button } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport \"./TopHeaderLink.scss\";\n\ninterface Props {\n title: string;\n icon: IconName;\n testLocator?: TestLocator;\n}\n\nexport const TopHeaderLink = ({ title, icon, testLocator }: Props) => {\n const translations = useTranslations();\n\n return (\n <Link closeOnClick className=\"topheaderlink --hover-false\" disabled={false}>\n <span>\n {title}\n <Button\n inline={{ right: true }}\n activated={true}\n icon={icon}\n testLocator={testLocator}\n />\n </span>\n </Link>\n );\n};\n","export * from \"./AccountLink\";\nexport * from \"./AddToLastQueueLink\";\nexport * from \"./AddToMyMusicLink\";\nexport * from \"./AddMultipleToPlaylistLink\";\nexport * from \"./AddMultipleToLastQueueLink\";\nexport * from \"./AddMultipleToQueueReplaceLink\";\nexport * from \"./AddMultipleToMyMusic\";\nexport * from \"./AddMultipleToQueueLink\";\nexport * from \"./AddProfileLink\";\nexport * from \"./AddToPlaylistLink\";\nexport * from \"./AddToQueueLink\";\nexport * from \"./CreatePlaylistLink\";\nexport * from \"./CurrentProfileLink\";\nexport * from \"./FavoriteSortingLink\";\nexport * from \"./FollowArtistLink\";\nexport * from \"./GetDesktopAppLink\";\nexport * from \"./GoToAlbumLink\";\nexport * from \"./GoToArtistLink\";\nexport * from \"./GoToArtistRadioLink\";\nexport * from \"./GoToProfilesLink\";\nexport * from \"./GoToTrackRadioLink\";\nexport * from \"./GiveFeedbackLink\";\nexport * from \"./LanguageLink\";\nexport * from \"./LogInOutLink\";\nexport * from \"./PlaylistDeleteLink\";\nexport * from \"./PlaylistLink\";\nexport * from \"./PlaylistRemoveTrackLink\";\nexport * from \"./PlaylistRenameLink\";\nexport * from \"./PlaylistVisibilityLink\";\nexport * from \"./ProfileLink\";\nexport * from \"./RemoveMultipleFromPlaylistLink\";\nexport * from \"./ShareLink\";\nexport * from \"./ShareUrlLink\";\nexport * from \"./ShowLyricsLink\";\n","import { Fragment, h } from \"preact\";\nimport { IconMenuTop } from \"./tops\";\nimport { AddProfileLink, CurrentProfileLink, GoToProfilesLink, ProfileLink } from \"../links\";\nimport { GetDesktopAppLink } from \"../links/GetDesktopAppLink\";\nimport { GiveFeedbackLink } from \"../links/GiveFeedbackLink\";\nimport { GoToSettingsLink } from \"../links/GoToSettingsLink\";\nimport { LogInOutLink } from \"../links/LogInOutLink\";\nimport { Sheet } from \"../Sheet\";\nimport { Feature, isFeatureEnabled, useTranslations } from \"global/config\";\nimport { hasPermissionFromToken, useDisplayLoggedIn } from \"services/user\";\nimport { IconName } from \"components/atoms/icon\";\nimport { useSelector } from \"react-redux\";\nimport { RootModel } from \"models/app\";\n\nexport function AccountContextMenu() {\n const loggedIn = useDisplayLoggedIn();\n const translations = useTranslations();\n const profiles = useSelector((root: RootModel) => root.user.profiles);\n const profilesLimit = useSelector((root: RootModel) => root.user.profilesNumberLimit) ?? 0;\n const showProfiles = loggedIn && profiles.length > 0 && hasPermissionFromToken(\"prof\") && isFeatureEnabled(Feature.Profiles);\n\n return (\n <Sheet top={<IconMenuTop icon={IconName.Profile} title={translations.AccountMenuTitleWeb} />}>\n {\n showProfiles && <Fragment>\n {\n profiles.filter(n => n.current).map(profile => (\n <CurrentProfileLink profile={profile} />\n ))\n }\n {\n profiles.filter(n => !n.current).map(profile => (\n <ProfileLink profile={profile} />\n ))\n }\n {\n profiles.length < profilesLimit &&\n <AddProfileLink />\n }\n {showProfiles && <GoToProfilesLink showIcon={false} />}\n <br />\n </Fragment>\n }\n {\n !showProfiles &&\n <CurrentProfileLink />\n }\n <GoToSettingsLink showIcon={false} />\n {loggedIn && <GiveFeedbackLink showIcon={false} />}\n <GetDesktopAppLink showIcon={false} />\n <br />\n <LogInOutLink showIcon={false} />\n </Sheet>\n );\n}\n","import { h } from \"preact\";\nimport { useContext, useEffect, useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet, Link } from \"..\";\nimport { PlaylistLink } from \"../links\";\nimport { CreatePlaylistLink } from \"../links/CreatePlaylistLink\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus/open\";\nimport { addQueueToPlaylist } from \"services/playlist\";\nimport { useDisplayLoggedIn } from \"services/user\";\nimport type { RootModel } from \"models/app\";\nimport type { PlaylistModel } from \"models/domain/PlaylistModel\";\nimport { ModalOpenResult } from \"models/view/AppModalModel\";\nimport { ContentLoadSpinner } from \"components/atoms/spinner\";\nimport { promptLoginIfRequired } from \"components/organisms/login\";\nimport { showCustomCreatePlaylistModal } from \"components/organisms/modal/modals/CreatePlaylistModal\";\n\nexport const AddQueueToPlaylistContextMenu = () => {\n const translations = useTranslations();\n const playlists = useSelector((root: RootModel) => root.cache.userPlaylistPreviews);\n\n useEffect(() => {\n setTimeout(() => {\n // context menu needs to be rendered first\n dispatch({ type: \"CONTEXT_MENU_REPOSITION\" });\n });\n }, [playlists]);\n\n const create = useMemo(\n () => async () => {\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n if (await promptLoginIfRequired()) {\n const newPlaylistResult = await showCustomCreatePlaylistModal(translations.SaveQueueAsPlaylist2, null, null);\n if (newPlaylistResult.result === ModalOpenResult.Submit && !!newPlaylistResult.playlistId) {\n await addQueueToPlaylist(newPlaylistResult.playlistId);\n }\n }\n },\n [translations.SaveQueueAsPlaylist2]\n );\n\n const add = useMemo(\n () => async (playlist: PlaylistModel) => {\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n if (await promptLoginIfRequired()) {\n await addQueueToPlaylist(playlist.id);\n }\n },\n []\n );\n\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n const loggedIn = useDisplayLoggedIn();\n\n return (\n <Sheet top={<div />}>\n <CreatePlaylistLink onClick={create} showIcon={showIcon} />\n <hr />\n {playlists?.map((playlist) => (\n <PlaylistLink key={playlist.id} playlist={playlist} onClick={() => add(playlist)} showIcon={showIcon} />\n ))}\n {!playlists && <ContentLoadSpinner />}\n {!loggedIn && (\n <Link disabled={true} icon={undefined}>\n Log ind for at se playlister\n </Link>\n )}\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet } from \"..\";\nimport { ResourceMenuTop } from \"./tops\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlayQueuePlayablePreviewModel } from \"models/domain\";\n\ninterface Props {\n playable: PlayQueuePlayablePreviewModel;\n context: PreviewContextModel;\n}\n\nexport const AddToMyMusicContextMenu = ({ context }: Props) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n\n return <Sheet top={<ResourceMenuTop context={context} />}>not implemented</Sheet>;\n};\n","import { h } from \"preact\";\nimport { useContext, useEffect, useMemo } from \"preact/hooks\";\nimport { ResourceMenuTop } from \"./tops\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet, Link } from \"..\";\nimport { PlaylistLink } from \"../links\";\nimport { CreatePlaylistLink } from \"../links/CreatePlaylistLink\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_REPOSITION } from \"global/actions\";\nimport { useUserPlaylists } from \"services/playlist\";\nimport { useDisplayLoggedIn } from \"services/user\";\nimport { CombinedPlaylistsSorting } from \"generated/graphql-types\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlaylistModel } from \"models/domain/PlaylistModel\";\nimport { ModalOpenResult } from \"models/view/AppModalModel\";\nimport { ContentLoadSpinner } from \"components/atoms/spinner\";\nimport { promptLoginIfRequired } from \"components/organisms/login\";\nimport { showCreatePlaylistModal } from \"components/organisms/modal/modals/CreatePlaylistModal\";\n\ninterface Props {\n onAdd: (playlistId: string) => Promise<void>;\n context: PreviewContextModel;\n}\n\nexport const AddToPlaylistContextMenu = ({ onAdd, context }: Props) => {\n const playlists = useUserPlaylists(CombinedPlaylistsSorting.ModifiedDate);\n\n useEffect(() => {\n // wait one iteration so context menu is rendered before this\n setTimeout(() => {\n dispatch({ type: CONTEXT_MENU_REPOSITION });\n });\n }, [playlists]);\n\n const create = useMemo(\n () => async () => {\n if (await promptLoginIfRequired()) {\n const newPlaylistResult = await showCreatePlaylistModal();\n if (newPlaylistResult.result === ModalOpenResult.Submit && !!newPlaylistResult.playlistId) {\n await onAdd(newPlaylistResult.playlistId);\n }\n }\n },\n [onAdd]\n );\n\n const add = useMemo(\n () => async (playlist: PlaylistModel) => {\n if (await promptLoginIfRequired()) {\n await onAdd(playlist.id);\n }\n },\n [onAdd]\n );\n\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n const loggedIn = useDisplayLoggedIn();\n\n return (\n <Sheet top={<ResourceMenuTop context={context} />}>\n <CreatePlaylistLink onClick={create} showIcon={showIcon} />\n <hr />\n {playlists?.map((playlist) => (\n <PlaylistLink key={playlist.id} playlist={playlist} onClick={() => add(playlist)} showIcon={showIcon} />\n ))}\n {loggedIn && !playlists && <ContentLoadSpinner />}\n {!loggedIn && (\n <Link disabled={true} icon={undefined}>\n Log ind for at se playlister\n </Link>\n )}\n </Sheet>\n );\n};\n","import { Fragment, h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ResourceMenuTop } from \"./tops\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet } from \"..\";\nimport { AddToPlaylistLink, AddToMyMusicLink, AddToQueueLink, AddToLastQueueLink, GoToArtistLink, ShareLink } from \"../links\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { AlbumPreviewModel } from \"models/domain\";\n\ninterface Props {\n album: AlbumPreviewModel | null;\n context: PreviewContextModel;\n}\n\nexport const AlbumContextMenu = ({ album, context }: Props) => {\n const available = album ? album.availableInSubscription : true;\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n return (\n <Sheet top={<ResourceMenuTop context={context} />}>\n <AddToMyMusicLink playable={album} showIcon={showIcon} context={context} />\n {available && (\n <Fragment>\n <AddToPlaylistLink playable={album} context={context} showIcon={showIcon} />\n <AddToQueueLink playable={album} context={context} showIcon={showIcon} />\n <AddToLastQueueLink playable={album} context={context} showIcon={showIcon} />\n <GoToArtistLink artist={album?.artist ?? null} showIcon={showIcon} context={context} />\n <ShareLink context={context} showIcon={showIcon} />\n </Fragment>\n )}\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ResourceMenuTop } from \"./tops\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet } from \"..\";\nimport { ShareLink } from \"../links\";\nimport { AddToMyMusicLink } from \"../links/AddToMyMusicLink\";\nimport { GoToArtistRadioLink } from \"../links/GoToArtistRadioLink\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ArtistPreviewModel } from \"models/domain\";\n\ninterface Props {\n artist: ArtistPreviewModel | null;\n context: PreviewContextModel;\n}\n\nexport const ArtistContextMenu = ({ artist, context }: Props) => {\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n const radio = artist?.artistRadio ?? null;\n return (\n <Sheet top={<ResourceMenuTop context={context} />}>\n <AddToMyMusicLink playable={artist} context={context} showIcon={showIcon} />\n <GoToArtistRadioLink artistRadio={radio} showIcon={showIcon} context={context} />\n <ShareLink context={context} showIcon={showIcon} />\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet } from \"..\";\nimport { ShareLink } from \"../links/ShareLink\";\nimport { ResourceMenuTop } from \"./tops\";\nimport { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { LiveRadioPreviewModel } from \"models/domain\";\nimport { LiveRadioPlayableModel } from \"models/domain/LiveRadioPlayableModel\";\n\ninterface Props {\n liveRadio: LiveRadioPlayableModel | LiveRadioPreviewModel | null;\n context: PreviewContextModel;\n}\n\nexport const LiveRadioContextMenu = ({ context }: Props) => {\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n return (\n <Sheet top={<ResourceMenuTop context={context} />}>\n <ShareLink context={context} showIcon={showIcon} />\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet } from \"..\";\nimport { ShareLink } from \"../links/ShareLink\";\nimport { ResourceMenuTop } from \"./tops\";\nimport { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { MixRadioPreviewModel } from \"models/domain/MixRadioModel\";\n\ninterface Props {\n mixRadio: MixRadioPreviewModel | null;\n context: PreviewContextModel;\n}\n\nexport const MixRadioContextMenu = ({ context }: Props) => {\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n return (\n <Sheet top={<ResourceMenuTop context={context} />}>\n <ShareLink context={context} showIcon={showIcon} />\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useMemo } from \"preact/hooks\";\nimport { ResourceContextMenu } from \".\";\nimport { getAlbumPreview, getArtistPreview, getTrackPreview, getPlaylistPreview, getTrackChartPreview, getLiveRadioPlay } from \"services/backend\";\nimport type { DomainQueryResult } from \"services/backend/backendService\";\nimport { useDomainQueryResult } from \"services/backend/backendService\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport type { MixedContentPreviewModel } from \"models/domain/MixedContentModel\";\nimport { ContentType } from \"models/ModelType\";\n\ninterface Props {\n mixedContent: MixedContentPreviewModel;\n context: PreviewContextModel;\n}\n\nexport const MixedContentContextMenu = ({ context, mixedContent }: Props) => {\n const query = useMemo(() => getMixedContentResource(mixedContent), [mixedContent]);\n const result = useDomainQueryResult(query);\n const resource = result?.model ?? null;\n\n return <ResourceContextMenu context={context} resource={resource} resourceType={mixedContent.mixedContentType} />;\n};\n\nasync function getMixedContentResource(mixedContent: MixedContentPreviewModel | null): Promise<DomainQueryResult<ResourcePreviewModel> | null> {\n if (!mixedContent) return null;\n const id = mixedContent.mixedContentId;\n\n if (id == null) {\n log.error({ code: \"web-211027-1830\", msg: \"id is null\", data: { mixedContentType: mixedContent.mixedContentType } });\n return null;\n }\n\n switch (mixedContent.mixedContentType) {\n case ContentType.Album:\n return await getAlbumPreview({ id });\n case ContentType.Artist:\n return await getArtistPreview({ id });\n case ContentType.Playlist:\n return await getPlaylistPreview({ id });\n case ContentType.TrackPlayable:\n return await getTrackPreview({ id });\n case ContentType.TrackChart:\n return await getTrackChartPreview({ id });\n case ContentType.LiveRadio:\n return await getLiveRadioPlay({ id });\n }\n\n log.error({ code: \"web-211027-1830\", msg: DefaultLogMessage.NotImplemented, data: { mixedContentType: mixedContent.mixedContentType } });\n return null;\n}\n","import { h } from \"preact\";\nimport { Sheet } from \"..\";\nimport { FavoritesSortingLink } from \"../links\";\nimport { SortingMenuTop } from \"./tops\";\nimport { useTranslations } from \"global/config\";\nimport { FavoriteAlbumsSorting } from \"models/domain\";\n\nexport const MyMusicAlbumsSortingContextMenu = () => {\n const translations = useTranslations();\n\n return (\n <Sheet top={<SortingMenuTop />}>\n <FavoritesSortingLink title={translations.SortByLastAdded} type=\"albumsSorting\" sorting={FavoriteAlbumsSorting.LatestAdded} />\n <FavoritesSortingLink title={translations.SortByNameTitle} type=\"albumsSorting\" sorting={FavoriteAlbumsSorting.Alphabetically} />\n <FavoritesSortingLink title={translations.SortByArtist} type=\"albumsSorting\" sorting={FavoriteAlbumsSorting.ArtistName} />\n <FavoritesSortingLink title={translations.SortByReleaseYear} type=\"albumsSorting\" sorting={FavoriteAlbumsSorting.ReleaseDate} />\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { Sheet } from \"..\";\nimport { FavoritesSortingLink } from \"../links\";\nimport { SortingMenuTop } from \"./tops\";\nimport { useTranslations } from \"global/config\";\nimport { FavoriteArtistsSorting } from \"models/domain\";\n\nexport const MyMusicArtistsSortingContextMenu = () => {\n const translations = useTranslations();\n return (\n <Sheet top={<SortingMenuTop />}>\n <FavoritesSortingLink title={translations.SortByLastAdded} type=\"artistsSorting\" sorting={FavoriteArtistsSorting.LatestAdded} />\n <FavoritesSortingLink title={translations.SortAlphabetically} type=\"artistsSorting\" sorting={FavoriteArtistsSorting.Alphabetically} />\n </Sheet>\n );\n};\n","// import { h } from \"preact\";\n// import { Sheet } from \"../..\";\n// import { ResourceTypeMenuTop } from \"./tops/ResourceTypeMenuTop\";\n// import { ContentType } from \"models/ModelType\";\n\n// todo must have context before it can be implemented\nexport const MyMusicPlaylistsContextMenu = () => {\n \n // const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n return null;\n // return (\n // <Sheet top={<ResourceTypeMenuTop resourceType={ ContentType.MyMusicPlaylists} />}>not implemented</Sheet>\n // );\n};\n","import { h } from \"preact\";\nimport { Sheet } from \"..\";\nimport { FavoritesSortingLink } from \"../links\";\nimport { SortingMenuTop } from \"./tops\";\nimport { useTranslations } from \"global/config\";\nimport { FavoriteTracksSorting } from \"models/domain\";\n\nexport const MyMusicTracksSortingContextMenu = () => {\n const translations = useTranslations();\n return (\n <Sheet top={<SortingMenuTop />}>\n <FavoritesSortingLink title={translations.SortByLastAdded} type=\"tracksSorting\" sorting={FavoriteTracksSorting.LatestAdded} />\n <FavoritesSortingLink title={translations.SortByNameTitle} type=\"tracksSorting\" sorting={FavoriteTracksSorting.Alphabetically} />\n <FavoritesSortingLink title={translations.SortByArtist} type=\"tracksSorting\" sorting={FavoriteTracksSorting.ArtistName} />\n <FavoritesSortingLink title={translations.SortByReleaseYear} type=\"tracksSorting\" sorting={FavoriteTracksSorting.ReleaseDate} />\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { SortingMenuTop } from \"./tops\";\nimport { Sheet } from \"..\";\nimport { Link } from \"../Link\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL, SET_MY_MUSIC_SORTING } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport { CombinedPlaylistsSorting } from \"generated/graphql-types\";\nimport type { RootModel } from \"models/app\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n target: \"playlistsSorting\" | \"sidebarPlaylistsSorting\";\n}\n\nexport const MyPlaylistsSortingContextMenu = ({ target }: Props) => {\n const currentSorting = useSelector((root: RootModel) => root.ui[target]);\n const translations = useTranslations();\n const sortModifiedDate = useCallback(() => {\n dispatch({ type: SET_MY_MUSIC_SORTING, payload: { [target]: CombinedPlaylistsSorting.ModifiedDate } });\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n }, [target]);\n\n const sortCreatedDate = useCallback(() => {\n dispatch({ type: SET_MY_MUSIC_SORTING, payload: { [target]: CombinedPlaylistsSorting.CreatedDate } });\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n }, [target]);\n\n const sortAlphabetically = useCallback(() => {\n dispatch({ type: SET_MY_MUSIC_SORTING, payload: { [target]: CombinedPlaylistsSorting.Title } });\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n }, [target]);\n\n return (\n <Sheet top={<SortingMenuTop />}>\n <Link\n icon={currentSorting == CombinedPlaylistsSorting.ModifiedDate ? IconName.Checkmark : IconName.None}\n onClick={currentSorting !== CombinedPlaylistsSorting.ModifiedDate ? sortModifiedDate : undefined}>\n {translations.SortByLatestUpdated}\n </Link>\n <Link\n icon={currentSorting == CombinedPlaylistsSorting.CreatedDate ? IconName.Checkmark : IconName.None}\n onClick={currentSorting !== CombinedPlaylistsSorting.CreatedDate ? sortCreatedDate : undefined}>\n {translations.SortByLastAdded}\n </Link>\n <Link\n icon={currentSorting == CombinedPlaylistsSorting.Title ? IconName.Checkmark : IconName.None}\n onClick={currentSorting !== CombinedPlaylistsSorting.Title ? sortAlphabetically : undefined}>\n {translations.SortAlphabetically}\n </Link>\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ContextMenuManagerContext, ContextMenuMode, Sheet } from \"..\";\nimport { IconMenuTop } from \"./tops/IconMenuTop\";\nimport { useTranslations } from \"global/config\";\nimport { IconName } from \"components/atoms/icon\";\nimport { NotificationFeed } from \"components/organisms/notificationFeed\";\nimport { TopHeaderLink } from \"../links/TopHeaderLink\";\n\nexport const NotificationFeedContextMenu = () => {\n const showHeadline = useContext(ContextMenuManagerContext).mode !== ContextMenuMode.BottomSheet;\n const translations = useTranslations();\n return (\n <Sheet top={<IconMenuTop icon={IconName.Notification} title={translations.NotificationFeedTitle} />}>\n <TopHeaderLink title={translations.NotificationFeedTitle} icon={IconName.Notification} />\n <NotificationFeed showHeadline={showHeadline} />\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { ResourceContextMenu } from \".\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { NotificationPreviewModel } from \"models/domain/NotificationModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { usePreviewContext } from \"components/shared/hooks\";\n\ninterface Props {\n notification: NotificationPreviewModel | null;\n context: PreviewContextModel;\n}\n\nexport const NotificationPlayableContextMenu = ({ context, notification }: Props) => {\n const playable = notification?.playable ?? null;\n\n context = usePreviewContext(playable?.contentType ?? ContentType.Notification, playable, context.section, null);\n if (playable == null) return null;\n\n return <ResourceContextMenu context={context} resourceType={playable.contentType} resource={playable} />;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { Sheet } from \"..\";\nimport { dispatch } from \"global\";\nimport { PLAYER_REPEAT, PLAYER_SHUFFLE } from \"global/actions\";\nimport { Feature, isFeatureEnabled, useTranslations } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { userToggleCastSession } from \"services/player/controllers/chromeCast/service/actions\";\nimport { getRepeatIcon } from \"services/player/controllers/service/helpers/icons\";\nimport type { RootModel } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { RepeatStatus } from \"models/view/RepeatStatus\";\nimport { ShuffleState } from \"models/view/ShuffleState\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { toggleLyrics, useLyricsState } from \"components/organisms/lyrics\";\n\nexport const PlayerDesktopContextMenu = () => {\n const repeat = useSelector((root: RootModel) => root.player.repeat);\n const shuffle = useSelector((root: RootModel) => root.player.shuffle);\n const shuffleToggled = shuffle !== ShuffleState.Off;\n const repeatToggled = repeat !== RepeatStatus.None;\n\n const { isLyricsEnabled, isLyricsAvailable, isLyricsOpen } = useLyricsState();\n\n const playerShuffle = useCallback(() => dispatch({ type: PLAYER_SHUFFLE, payload: { context: { action: AudioContextAction.UserPlayerShuffle, trace: null } } }), []);\n const playerRepeat = useCallback(() => dispatch({ type: PLAYER_REPEAT, payload: {} }), []);\n const onToggleLyrics = useCallback(() => toggleLyrics(\"MaxiPlayer\"), []) // its the context menu on the maxiplayer, not a context menu on some random track\n\n const translations = useTranslations();\n\n return (\n <Sheet top={<div />}>\n <Button toggled={shuffleToggled} onClick={playerShuffle} icon={IconName.Shuffle} design={ButtonDesign.ContextMenu} testLocator={TestLocator.PlayerShuffleButton}>\n {translations.Shuffle}\n </Button>\n <Button\n className={`--repeatStatus-${repeat}`}\n toggled={repeatToggled}\n onClick={playerRepeat}\n icon={getRepeatIcon(repeat)}\n design={ButtonDesign.ContextMenu}\n testLocator={TestLocator.PlayerRepeatButton}>\n {translations.GlobalRepeatName}\n </Button>\n\n <Button\n onClick={userToggleCastSession}\n icon={IconName.Chromecast}\n design={ButtonDesign.ContextMenu}\n testLocator={TestLocator.PlayerChromecastButton}>\n {translations.GlobalChromecastName}\n </Button>\n\n {\n isLyricsEnabled && (isLyricsAvailable || isFeatureEnabled(Feature.LyricsIconWhenNotAvailable)) &&\n <Button\n onClick={onToggleLyrics}\n disabled={!isLyricsAvailable && !isLyricsOpen}\n toggled={isLyricsOpen}\n icon={IconName.Lyrics}\n design={ButtonDesign.ContextMenu}\n testLocator={TestLocator.PlayerChromecastButton}>\n {translations.ContextOptionShowLyrics}\n </Button>\n }\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ResourceMenuTop } from \"./tops\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet } from \"..\";\nimport { AddToLastQueueLink, AddToPlaylistLink, AddToMyMusicLink, AddToQueueLink, ShareLink, PlaylistDeleteLink, PlaylistRenameLink, PlaylistVisibilityLink } from \"../links\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlaylistPageModel, PlaylistPreviewModel } from \"models/domain\";\n\ninterface Props {\n playlist: PlaylistPreviewModel | PlaylistPageModel | null;\n preview: PreviewContextModel;\n assumedFavorite?: boolean;\n}\n\nexport const PlaylistContextMenu = ({ playlist, preview, assumedFavorite }: Props) => {\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n const isOwned = playlist ? playlist.owner : true;\n const isPlaylistEmpty = !playlist ? true : playlist.duration === 0;\n\n return (\n <Sheet top={<ResourceMenuTop context={preview} />}>\n {!isOwned && <AddToMyMusicLink context={preview} playable={playlist} showIcon={showIcon} assumedFavorite={assumedFavorite} />}\n <AddToPlaylistLink playable={playlist} context={preview} showIcon={showIcon} />\n {isOwned && <PlaylistVisibilityLink playable={playlist} showIcon={showIcon} />}\n {isOwned && <PlaylistRenameLink playable={playlist} showIcon={showIcon} />}\n {!isPlaylistEmpty && <AddToQueueLink playable={playlist} context={preview} showIcon={showIcon} />}\n {!isPlaylistEmpty && <AddToLastQueueLink playable={playlist} context={preview} showIcon={showIcon} />}\n <ShareLink context={preview} showIcon={showIcon} />\n {isOwned && <PlaylistDeleteLink playable={playlist} preview={preview} showIcon={showIcon} />}\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { LiveRadioContextMenu, MixRadioContextMenu } from \".\";\nimport { AlbumContextMenu } from \"./AlbumContextMenu\";\nimport { ArtistContextMenu } from \"./ArtistContextMenu\";\nimport { MixedContentContextMenu } from \"./MixedContentContextMenu\";\nimport { NotificationPlayableContextMenu } from \"./NotificationPlayableContextMenu\";\nimport { PlaylistContextMenu } from \"./PlaylistContextMenu\";\nimport { TrackChartContextMenu } from \"./TrackChartContextMenu\";\nimport { TrackContextMenu } from \"./TrackContextMenu\";\nimport { TrackRecommendationContextMenu } from \"./TrackRecommendationContextMenu\";\nimport { TracksContextMenu } from \"./TracksContextMenu\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { Multiselect } from \"services/selection\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\n\ninterface Props {\n resource: ResourcePreviewModel | null;\n context: PreviewContextModel;\n resourceType: ContentType;\n multiselect?: Multiselect;\n}\n\nexport const ResourceContextMenu = ({ context, resource, resourceType, multiselect }: Props) => {\n if (resource != null && resource.contentType !== resourceType) {\n log.error({\n code: \"web-220331-1056\",\n msg: DefaultLogMessage.UnexpectedNull,\n data: {\n \"received resourceType\": resource.contentType,\n \"intended resourceType\": resourceType\n }\n });\n return null;\n }\n\n if (multiselect && multiselect.state.selectedItems.length > 1) {\n switch (resourceType) {\n case ContentType.TrackPlayable:\n return <TracksContextMenu multiselect={multiselect} context={context} />;\n }\n }\n\n switch (resourceType) {\n case ContentType.Album: {\n if (resource != null && resource.contentType !== ContentType.Album) throw Error();\n return <AlbumContextMenu album={resource} context={context} />;\n }\n case ContentType.Artist: {\n if (resource != null && resource.contentType !== ContentType.Artist) throw Error();\n return <ArtistContextMenu artist={resource} context={context} />;\n }\n case ContentType.LiveRadioPlayable: {\n if (resource != null && resource.contentType !== ContentType.LiveRadioPlayable) throw Error();\n return <LiveRadioContextMenu liveRadio={resource} context={context} />;\n }\n case ContentType.MixRadio: {\n if (resource != null && resource.contentType !== ContentType.MixRadio) throw Error();\n return <MixRadioContextMenu mixRadio={resource} context={context} />;\n }\n\n case ContentType.Playlist: {\n if (resource != null && resource.contentType !== ContentType.Playlist) throw Error();\n return <PlaylistContextMenu playlist={resource} preview={context} assumedFavorite={resource?.owner} />;\n }\n case ContentType.MixedContent: {\n if (resource != null && resource.contentType !== ContentType.MixedContent) throw Error();\n if (!resource) return null;\n return <MixedContentContextMenu mixedContent={resource} context={context} />;\n }\n case ContentType.TrackChart: {\n if (resource != null && resource.contentType !== ContentType.TrackChart) throw Error();\n return <TrackChartContextMenu trackChart={resource} context={context} />;\n }\n case ContentType.TrackPlayable: {\n if (resource != null && resource.contentType !== ContentType.TrackPlayable) throw Error();\n return <TrackContextMenu track={resource} context={context} />;\n }\n case ContentType.TrackRecommendation: {\n if (resource != null && resource.contentType !== ContentType.TrackRecommendation) throw Error();\n return <TrackRecommendationContextMenu trackRecommendation={resource} context={context} />;\n }\n case ContentType.LiveRadio: {\n if (resource != null && resource.contentType !== ContentType.LiveRadio) throw Error();\n\n if (context.section.type === ContentType.Queue || context.section.type === ContentType.Player) {\n const track = resource?.tracks?.nowPlaying ?? null;\n if (track) return <TrackContextMenu track={track} context={context} />;\n }\n return <LiveRadioContextMenu liveRadio={resource} context={context} />;\n }\n case ContentType.LiveRadioTrack: {\n if (resource != null && resource.contentType !== ContentType.LiveRadioTrack) throw Error();\n return <TrackContextMenu track={resource} context={context} />;\n }\n case ContentType.Notification: {\n if (resource != null && resource.contentType !== ContentType.Notification) throw Error();\n return <NotificationPlayableContextMenu context={context} notification={resource} />;\n }\n default:\n log.error({\n code: \"web-210616-1700\",\n msg: DefaultLogMessage.NotImplemented,\n data: {\n \"received resourceType\": resource?.contentType,\n \"intended resourceType\": resourceType,\n resource\n }\n });\n return null;\n }\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ContextMenuManagerContext, ContextMenuMode, Sheet } from \"..\";\nimport { ShareUrlLink } from \"../links/ShareUrlLink\";\nimport { ResourceMenuTop } from \"./tops\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\n\ninterface Props {\n context: PreviewContextModel;\n}\n\nexport const ShareContextMenu = ({ context }: Props) => {\n return (\n <Sheet top={<ResourceMenuTop context={context} />}>\n <ShareUrlLink context={context} />\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { IconMenuTop } from \"./tops\";\nimport { Sheet } from \"..\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport type { SortOptionsModel } from \"models/app/SortOption\";\nimport { IconName } from \"components/atoms/icon\";\nimport { ControlStyle } from \"components/molecules/controlGroup/Control\";\nimport { SortControl } from \"components/molecules/sortControl/SortControl\";\n\ninterface Props {\n sortOptions: SortOptionsModel;\n}\n\nexport const SortContextMenu = ({ sortOptions }: Props) => {\n const translations = useTranslations();\n const onChange = useCallback(() => {\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n }, []);\n\n return (\n <Sheet top={<IconMenuTop icon={IconName.Sort} title={translations.SortTitle} />}>\n <SortControl onChange={onChange} sortOptions={sortOptions} style={ControlStyle.ContextMenu} />\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet } from \"..\";\nimport { AddToLastQueueLink, AddToPlaylistLink, AddToQueueLink } from \"../links\";\nimport { ResourceMenuTop } from \"./tops\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { TrackChartPreviewModel } from \"models/domain/ChartModel\";\n\ninterface Props {\n trackChart: TrackChartPreviewModel | null;\n context: PreviewContextModel;\n}\n\nexport const TrackChartContextMenu = ({ context, trackChart }: Props) => {\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n return (\n <Sheet top={<ResourceMenuTop context={context} />}>\n <AddToPlaylistLink playable={trackChart} context={context} showIcon={showIcon} />\n <AddToQueueLink playable={trackChart} context={context} showIcon={showIcon} />\n <AddToLastQueueLink playable={trackChart} context={context} showIcon={showIcon} />\n </Sheet>\n );\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Fragment, h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ResourceMenuTop } from \"./tops\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet } from \"..\";\nimport {\n AddToPlaylistLink,\n ShareLink,\n AddToLastQueueLink,\n AddToMyMusicLink,\n GoToAlbumLink,\n GoToArtistLink,\n GoToTrackRadioLink,\n PlaylistRemoveTrackLink\n} from \"../links\";\nimport { AddToQueueLink } from \"../links/AddToQueueLink\";\nimport { CopyIdLink } from \"../links/CopyIdLink\";\nimport { ShowLyricsLink } from \"../links/ShowLyricsLink\";\nimport { environment } from \"services/environment\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { LiveRadioTrackPreviewModel } from \"models/domain\";\nimport type { TrackPlayablePreviewModel } from \"models/domain/TrackPlayableModel\";\nimport { ContentType } from \"models/ModelType\";\n\ninterface Props {\n track: TrackPlayablePreviewModel | LiveRadioTrackPreviewModel | null;\n context: PreviewContextModel;\n}\n\nexport const TrackContextMenu = ({ track, context }: Props) => {\n const available = track?.track.availableInSubscription;\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n const pageContext = context.section.page;\n const page = pageContext?.resource;\n const contentEditorMode = environment.contentEditorMode;\n\n const isLiveRadioTrack =\n track?.contentType === ContentType.LiveRadioTrack || track?.parent.contentType === ContentType.LiveRadio || track?.parent.contentType === ContentType.MixRadio;\n\n return (\n <Sheet top={<ResourceMenuTop context={context} />}>\n {page?.contentType === ContentType.Playlist && page.owner && <PlaylistRemoveTrackLink track={track?.track ?? null} playlist={page} showIcon={showIcon} />}\n <AddToMyMusicLink context={context} playable={track} showIcon={showIcon} />\n {available && (\n <Fragment>\n <AddToPlaylistLink playable={track} context={context} showIcon={showIcon} />\n {!isLiveRadioTrack && <AddToQueueLink playable={track} context={context} showIcon={showIcon} />}\n {!isLiveRadioTrack && <AddToLastQueueLink playable={track} context={context} showIcon={showIcon} />}\n <ShowLyricsLink playable={track} showIcon={showIcon} />\n {pageContext?.type !== ContentType.Artist && <GoToArtistLink artist={track.track.artist} showIcon={showIcon} context={context} />}\n {pageContext?.type !== ContentType.Album && <GoToAlbumLink album={track.track.album} showIcon={showIcon} context={context} />}\n <GoToTrackRadioLink trackRadio={track.track.trackRadio} showIcon={showIcon} context={context} />\n <ShareLink context={context} showIcon={showIcon} />\n {contentEditorMode && <CopyIdLink context={context} />}\n </Fragment>\n )}\n </Sheet>\n );\n};\n","import { h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet } from \"..\";\nimport { AddToPlaylistLink, AddToQueueLink, AddToLastQueueLink } from \"../links\";\nimport { ResourceMenuTop } from \"./tops\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { TrackRecommendationModel } from \"models/domain\";\n\ninterface Props {\n trackRecommendation: TrackRecommendationModel | null;\n context: PreviewContextModel;\n}\n\nexport const TrackRecommendationContextMenu = ({ context, trackRecommendation }: Props) => {\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n return (\n <Sheet top={<ResourceMenuTop context={context} />}>\n <AddToPlaylistLink playable={trackRecommendation} context={context} showIcon={showIcon} />\n <AddToQueueLink playable={trackRecommendation} context={context} showIcon={showIcon} />\n <AddToLastQueueLink playable={trackRecommendation} context={context} showIcon={showIcon} />\n </Sheet>\n );\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Fragment, h } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ResourceMenuTop } from \"./tops\";\nimport { ContextMenuMode, ContextMenuManagerContext, Sheet } from \"..\";\nimport {\n AddMultipleToLastQueueLink,\n AddMultipleToQueueReplaceLink,\n AddMultipleToMyMusicLink,\n AddMultipleToPlaylistLink,\n AddMultipleToQueueLink,\n RemoveMultipleFromPlaylistLink\n} from \"../links\";\nimport type { Multiselect } from \"services/selection\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\n\ninterface Props {\n multiselect: Multiselect;\n context: PreviewContextModel;\n}\n\nexport const TracksContextMenu = ({ multiselect, context }: Props) => {\n const showIcon = useContext(ContextMenuManagerContext).mode === ContextMenuMode.BottomSheet;\n const pageContext = context.section.page;\n const page = pageContext?.resource;\n //const contentEditorMode = environment.contentEditorMode;\n\n return (\n <Sheet top={<ResourceMenuTop context={context} />}>\n <AddMultipleToMyMusicLink multiselect={multiselect} context={context} showIcon={showIcon} />\n <RemoveMultipleFromPlaylistLink multiselect={multiselect} context={context} showIcon={showIcon} />\n <AddMultipleToPlaylistLink multiselect={multiselect} context={context} showIcon={showIcon} />\n <AddMultipleToQueueLink multiselect={multiselect} context={context} showIcon={showIcon} />\n <AddMultipleToLastQueueLink multiselect={multiselect} context={context} showIcon={showIcon} />\n <AddMultipleToQueueReplaceLink multiselect={multiselect} context={context} showIcon={showIcon} />\n </Sheet>\n );\n};\n","export * from \"./AccountContextMenu\";\nexport * from \"./AddQueueToPlaylistContextMenu\";\nexport * from \"./AddToMyMusicContextMenu\";\nexport * from \"./AddToPlaylistContextMenu\";\nexport * from \"./AlbumContextMenu\";\nexport * from \"./ArtistContextMenu\";\nexport * from \"./LiveRadioContextMenu\";\nexport * from \"./MixRadioContextMenu\";\nexport * from \"./MyMusicAlbumsSortingContextMenu\";\nexport * from \"./MyMusicArtistsSortingContextMenu\";\nexport * from \"./MyMusicPlaylistsContextMenu\";\nexport * from \"./MyMusicTracksSortingContextMenu\";\nexport * from \"./MyPlaylistsSortingContextMenu\";\nexport * from \"./NotificationPlayableContextMenu\";\nexport * from \"./PlayerDesktopContextMenu\";\nexport * from \"./PlaylistContextMenu\";\nexport * from \"./ResourceContextMenu\";\nexport * from \"./ShareContextMenu\";\nexport * from \"./SortContextMenu\";\nexport * from \"./TrackChartContextMenu\";\nexport * from \"./TrackContextMenu\";\nexport * from \"./TracksContextMenu\";\nexport * from \"./TrackRecommendationContextMenu\";\n","import { h } from \"preact\";\nimport type { IconName } from \"components/atoms/icon\";\nimport { IconGroup } from \"components/molecules/itemGroup/IconGroup\";\n\ninterface Props {\n icon: IconName;\n title: string;\n subtitle?: string;\n}\n\nexport const IconMenuTop = ({ icon, title, subtitle }: Props) => {\n return <IconGroup icon={icon} title={title} subtitle={subtitle} />;\n};\n","import { h } from \"preact\";\nimport { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { CoverSize } from \"components/atoms/cover\";\nimport { ResourceCard } from \"components/molecules/resource\";\n\ninterface Props {\n context: PreviewContextModel;\n}\n\nexport const ResourceMenuTop = ({ context }: Props) => {\n return <ResourceCard context={context} size={CoverSize.Size64} scrollingText={true} disabledAction={true} disableLazyLoad={true} />;\n};\n","import { h } from \"preact\";\nimport \"./SortingMenuTop.scss\";\nimport { useTranslations } from \"global/config\";\n\nexport const SortingMenuTop = () => {\n const translations = useTranslations();\n return <div className=\"sortingMenuTop k3e\">{translations.SortTitle}</div>;\n};\n","export * from \"./IconMenuTop\";\nexport * from \"./ResourceMenuTop\";\nexport * from \"./SortingMenuTop\";\n","import { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { Button } from \"components/atoms/controls/button\";\nimport { SearchTextInput } from \"components/atoms/controls/textInput/inputs\";\nimport { IconName } from \"components/atoms/icon\";\n\ninterface Props {\n initialValue?: string;\n placeholder?: string;\n onChange: (value: string) => void;\n onExpandedChanged?: (isExpanded: boolean) => void;\n}\n\nexport const FilterUi = ({ initialValue, placeholder, onChange, onExpandedChanged }: Props) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const [currentValue, setCurrentValue] = useState(initialValue ?? \"\");\n\n const innerOnChange = useCallback(\n (text: string) => {\n setCurrentValue(text);\n if (onChange) {\n onChange(text);\n }\n },\n [setCurrentValue, onChange]\n );\n\n const keyHandler = useCallback(\n (e: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => {\n if (e.key == \"Escape\" && !currentValue) {\n innerOnChange(\"\");\n setIsExpanded(false);\n if (onExpandedChanged) {\n onExpandedChanged(false);\n }\n }\n },\n [innerOnChange, currentValue, setIsExpanded, onExpandedChanged]\n );\n\n const clickHandler = useCallback(() => {\n setIsExpanded(true);\n if (onExpandedChanged) {\n onExpandedChanged(true);\n }\n }, [setIsExpanded, onExpandedChanged]);\n\n const blurHandler = useCallback(() => {\n if (!currentValue) {\n setIsExpanded(false);\n if (onExpandedChanged) {\n onExpandedChanged(false);\n }\n }\n return true;\n }, [setIsExpanded, onExpandedChanged, currentValue]);\n\n return isExpanded ? (\n <SearchTextInput\n placeholder={placeholder}\n onChange={innerOnChange}\n value={currentValue}\n onKeyDown={keyHandler}\n className=\"filter grow maxwidth\"\n autoFocus\n onBlur={blurHandler}\n />\n ) : (\n <Button className={\"filter\"} icon={IconName.Search} onClick={clickHandler} />\n );\n};\n","export * from \"./filter\";\n","import { Fragment, h } from \"preact\";\nimport { useCallback, useRef } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { AccountContextMenu } from \"../contextMenu/menus\";\nimport { showLoginUi } from \"../login\";\nimport { Search, SearchResultDisplay } from \"../search/Search\";\nimport { Feature, isFeatureEnabled, useTranslations } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { useNavigation } from \"services/navigationStack/useNavigation\";\nimport { hasPermissionFromToken, shouldDisplayAsLoggedIn, useLoginState } from \"services/user\";\nimport { LoginState, type RootModel } from \"models/app\";\nimport { ContentType } from \"models/ModelType\";\nimport { NavigationPageRootName } from \"models/view/navigationStack\";\nimport { useContextMenu, useFakePageContext, useResizeObserver } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { ButtonNotificationFeed } from \"components/atoms/controls/button/buttons\";\nimport { IconName } from \"components/atoms/icon\";\nimport \"./DesktopHeader.scss\";\n\ninterface Props {\n className?: string;\n}\n\nexport function DesktopHeader({ className }: Props) {\n const context = useFakePageContext({ type: ContentType.Search, resource: null, root: NavigationPageRootName.Search, done: true });\n const translations = useTranslations();\n const loginStateIsKnown = useLoginState() !== LoginState.Unknown;\n\n const { hasForward, hasBackward } = useNavigation();\n\n const searchRef = useRef<HTMLDivElement>(null);\n\n const accountMenuButtonRef = useRef<HTMLButtonElement>(null);\n const accountMenu = useContextMenu(<AccountContextMenu />, false);\n\n const loginState = useSelector((root: RootModel) => root.user.state);\n const loggedOut = !shouldDisplayAsLoggedIn(loginState);\n\n const profile = useSelector((root: RootModel) => root.user.profiles?.find(n => n.current));\n const showProfiles = loginState === LoginState.LoggedIn && profile && hasPermissionFromToken(\"prof\") && isFeatureEnabled(Feature.Profiles);\n\n const openAccountMenu = useCallback(() => {\n if (!accountMenuButtonRef.current) {\n log.error({ code: \"web-210519-1100\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n accountMenu.openAtPosition(8, 8);\n }, [accountMenu]);\n\n const [search, searchBackground] = Search({ context, resultsDisplay: SearchResultDisplay.WhenFocus });\n\n const documentWidth = useResizeObserver(document.body ?? null)?.width ?? 0;\n const searchRect = useResizeObserver(searchRef?.current ?? null);\n\n const searchWidth = searchRect?.width ?? 0;\n const searchLeftOptimal = documentWidth / 2 - searchWidth / 2;\n const searchLeft = searchRef.current ? searchRef.current?.getBoundingClientRect().left : 0;\n const searchLeftOffset = `${searchLeftOptimal - searchLeft}px`;\n\n return (\n <div tabIndex={-1} className={`desktopHeader kPv ${className ?? \"\"}`}>\n <div className=\"content\">\n <div className=\"navigation\">\n <Button\n icon={IconName.ArrowLeftAndroid}\n disabled={!hasBackward}\n design={ButtonDesign.DefaultBig}\n inline={{ left: true }}\n onClick={() => window.history.back()}\n />\n <Button\n icon={IconName.ArrowRightAndroid}\n disabled={!hasForward}\n design={ButtonDesign.DefaultBig}\n inline={{ right: true }}\n onClick={() => window.history.forward()}\n />\n </div>\n <div className=\"search\">\n <div ref={searchRef} style={{ paddingLeft: searchLeftOffset }}>\n {search}\n </div>\n </div>\n <div className=\"menu\">\n {loginStateIsKnown && loggedOut && (\n <Button design={ButtonDesign.PrimarySmall} onClick={showLoginUi} testLocator={TestLocator.PageHeaderLoginButton}>\n {translations.NavBarLogin}\n </Button>\n )}\n {loginStateIsKnown && <Fragment>\n <ButtonNotificationFeed />\n {\n showProfiles &&\n <div class=\"headeravatar\" style={{ \"--colorHighlight\": profile.color }}>\n <Button\n inline={{ right: true }}\n activated={accountMenu.isOpen}\n design={ButtonDesign.LightSmall}\n ref={accountMenuButtonRef}\n onClick={openAccountMenu}\n testLocator={TestLocator.PageHeaderAccountButton}\n ><span>{profile.title.substring(0, 1).toUpperCase()}</span></Button>\n </div>\n }\n {\n !showProfiles &&\n <Button\n inline={{ right: true }}\n activated={accountMenu.isOpen}\n ref={accountMenuButtonRef}\n icon={IconName.Profile}\n onClick={openAccountMenu}\n testLocator={TestLocator.PageHeaderAccountButton}\n />\n }\n </Fragment>\n }\n </div>\n </div>\n {searchBackground}\n </div>\n );\n}\n","import { h } from \"preact\";\nimport { useCallback, useRef } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./MobileHeader.scss\";\nimport { AccountContextMenu } from \"../contextMenu/menus\";\nimport { showLoginUi } from \"../login\";\nimport { Feature, isFeatureEnabled, useTranslations } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { hasPermissionFromToken, shouldDisplayAsLoggedIn } from \"services/user\";\nimport { LoginState, type RootModel } from \"models/app\";\nimport { useContextMenu } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { ButtonNotificationFeed } from \"components/atoms/controls/button/buttons\";\nimport { IconName } from \"components/atoms/icon\";\nimport { Logo } from \"components/atoms/logo\";\n\ninterface Props {\n className?: string;\n}\n\nexport function MobileHeader({ className }: Props) {\n const accountMenuButtonRef = useRef<HTMLButtonElement>(null);\n const accountMenu = useContextMenu(<AccountContextMenu />, false);\n const translations = useTranslations();\n const loginState = useSelector((root: RootModel) => root.user.state);\n const loggedOut = !shouldDisplayAsLoggedIn(loginState);\n\n const profile = useSelector((root: RootModel) => root.user.profiles?.find(n => n.current));\n const showProfiles = loginState === LoginState.LoggedIn && profile && hasPermissionFromToken(\"prof\") && isFeatureEnabled(Feature.Profiles);\n\n const openAccountMenu = useCallback(() => {\n if (!accountMenuButtonRef.current) {\n log.error({ code: \"web-210519-1223\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n accountMenu.openAtPosition(8, 8);\n }, [accountMenu]);\n\n return (\n <div className={`mobileHeader t0P ${className ?? \"\"}`}>\n <div className=\"left\">\n {loggedOut && (\n <Button design={ButtonDesign.PrimarySmall} onClick={showLoginUi} testLocator={TestLocator.PageHeaderLoginButton}>\n {translations.NavBarLogin}\n </Button>\n )}\n </div>\n <div className=\"middle\">\n <Logo />\n </div>\n <div className=\"right\">\n <ButtonNotificationFeed />\n {\n showProfiles &&\n <div class=\"headeravatar\" style={{ \"--colorHighlight\": profile.color }}>\n <Button\n inline={{ right: true }}\n activated={accountMenu.isOpen}\n design={ButtonDesign.LightSmall}\n ref={accountMenuButtonRef}\n onClick={openAccountMenu}\n testLocator={TestLocator.PageHeaderAccountButton}\n ><span>{profile.title.substring(0, 1).toUpperCase()}</span></Button>\n </div>\n }\n {\n !showProfiles &&\n <Button\n inline={{ right: true }}\n activated={accountMenu.isOpen}\n ref={accountMenuButtonRef}\n icon={IconName.Profile}\n onClick={openAccountMenu}\n testLocator={TestLocator.PageHeaderAccountButton}\n className=\"userbutton\"\n />\n }\n </div>\n </div>\n );\n}\n","import { Fragment, h } from \"preact\";\nimport type { RefObject } from \"preact\";\nimport { useCallback, useEffect, useState } from \"preact/hooks\";\nimport { showErrorTryAgainModal, showInAppFeedbackModal, showInAppFeedbackSubmitModal } from \"../modal/modals\";\nimport { InAppFeedbackResponseRequest, isFeedbackResponseEnabled } from \"./InAppFeedbackResponseRequest\";\nimport { useTranslations } from \"global/config\";\nimport { FeedbackCategory, submitInAppFeedback } from \"services/inAppFeedback\";\nimport { log } from \"services/logger/initLoggerService\";\nimport { FeedbackTextValidation, formatInputText, InputEmailValidation, validateEmail, validateFeedbackText } from \"services/validation\";\nimport { ModalOpenResult } from \"models/view/AppModalModel\";\nimport { FormState } from \"components/atoms/controls/form\";\nimport type { SelectOption } from \"components/atoms/controls/select\";\nimport { Select } from \"components/atoms/controls/select\";\nimport { TextArea } from \"components/atoms/controls/textArea\";\nimport { TextInputState } from \"components/atoms/controls/textInput\";\nimport { InputSection } from \"components/molecules/inputSection\";\n\nconst minMessageLength = 1;\nconst maxMessageLength = 30_000;\nconst feedbackDraftExpirationMs = 1_000 * 60 * 15;\n\ninterface FeedbackDraft {\n category: FeedbackCategory;\n message: string;\n closed: number;\n response: boolean;\n responseEmail: string;\n}\n\nlet feedbackDraft: FeedbackDraft | null;\n\ninterface Props {\n submit: RefObject<() => Promise<boolean>>;\n dismiss: RefObject<() => Promise<boolean>>;\n onFromStateChange: (state: FormState) => void;\n}\n\nexport const InAppFeedback = ({ submit, dismiss, onFromStateChange }: Props) => {\n const [formState, setFormState] = useState(FormState.Default);\n const translations = useTranslations();\n const disabled = formState === FormState.Submiting;\n\n const responseEnabled = isFeedbackResponseEnabled();\n const [response, setResponse] = useState(false);\n\n const formStateChange = (state: FormState) => {\n setFormState(state);\n onFromStateChange(state);\n };\n\n const [category, setCategory] = useState(FeedbackCategory.Default);\n const [categoryState, setCategoryState] = useState(TextInputState.Default);\n const [categoryLabel, setCategoryLabel] = useState(\"\");\n const options = useSelectOptions(category);\n\n const [message, setMessage] = useState(\"\");\n const [messageState, setMessageState] = useState(TextInputState.Default);\n const [messageLabel, setMessageLabel] = useState(\"\");\n\n const [email, setEmail] = useState(\"\");\n const [emailState, setEmailState] = useState(TextInputState.Default);\n const [emailLabel, setEmailLabel] = useState(\"\");\n\n const onCategoryFocus = useCallback(() => {\n setCategoryState(TextInputState.Default);\n setCategoryLabel(\"\");\n }, []);\n\n const onMessageFocusOrBlur = useCallback(() => {\n setMessageState(TextInputState.Default);\n setMessageLabel(\"\");\n setMessage(formatInputText(message));\n }, [message, setMessage]);\n\n const onEmailFocusOrBlur = useCallback(() => {\n setEmailState(TextInputState.Default);\n setEmailLabel(\"\");\n setEmail(formatInputText(email));\n }, [email]);\n\n const saveFeedbackDraft = useCallback(() => {\n feedbackDraft = null;\n if (category !== FeedbackCategory.Default || message !== \"\" || response || email != \"\")\n feedbackDraft = { category, message, response, responseEmail: email, closed: new Date().getTime() };\n }, [category, message, response, email]);\n\n submit.current = async () => {\n if (formState === FormState.Submiting) {\n log.error({ code: \"web-210730-1907\", msg: \"already submitting\" });\n return false;\n }\n\n const setCategoryError = (label: string) => {\n setCategoryState(TextInputState.Error);\n setCategoryLabel(label);\n };\n\n const setMessageError = (label: string) => {\n setMessageState(TextInputState.Error);\n setMessageLabel(label);\n };\n\n const setEmailError = (label: string) => {\n setEmailState(TextInputState.Error);\n setEmailLabel(label);\n };\n\n const messageVal = validateFeedbackText(message, minMessageLength, maxMessageLength);\n if (messageVal === FeedbackTextValidation.TooLong) {\n log.error({ code: \"web-210729-1552\", msg: \"text too long, should not happen\" });\n }\n\n const emailVal = response ? validateEmail(email) : null;\n\n const categoryOK = category !== FeedbackCategory.Default;\n const messageOK = messageVal === FeedbackTextValidation.OK;\n const emailOK = !response || emailVal === InputEmailValidation.OK;\n\n if (!categoryOK) {\n setCategoryError(translations.FeedbackModalTopicValidationEmptyWeb);\n }\n if (!messageOK) {\n setMessageError(translations.FeedbackModalMessageValidationEmptyWeb);\n }\n\n if (!emailOK) {\n switch (emailVal) {\n case InputEmailValidation.Empty:\n setEmailError(translations.FeedbackModalEmailValidationEmptyWeb);\n break;\n case InputEmailValidation.Invalid:\n setEmailError(translations.FeedbackModalEmailValidationInvalidWeb);\n break;\n }\n }\n\n if (!categoryOK || !messageOK || !emailOK) return false;\n\n formStateChange(FormState.Submiting);\n const success = await submitInAppFeedback(category, message, response ? email : null);\n formStateChange(FormState.Default);\n\n if (success) {\n feedbackDraft = null;\n await showInAppFeedbackSubmitModal();\n } else {\n saveFeedbackDraft();\n const retry = await showErrorTryAgainModal();\n if (retry === ModalOpenResult.Submit) await showInAppFeedbackModal();\n }\n\n return false;\n };\n\n dismiss.current = async () => {\n saveFeedbackDraft();\n return true;\n };\n\n useEffect(() => {\n if (feedbackDraft != null) {\n const now = new Date().getTime();\n if (now > feedbackDraft.closed + feedbackDraftExpirationMs) {\n feedbackDraft = null;\n return;\n }\n\n setCategory(feedbackDraft.category);\n setMessage(feedbackDraft.message);\n setResponse(!responseEnabled ? false : feedbackDraft.response);\n setEmail(!responseEnabled ? \"\" : feedbackDraft.responseEmail);\n\n feedbackDraft.closed = now;\n }\n }, [responseEnabled]);\n\n return (\n <Fragment>\n <InputSection title={translations.FeedbackModalTopicTitleWeb} state={categoryState} label={categoryLabel}>\n <Select disabled={disabled} onChange={setCategory} onFocus={onCategoryFocus} options={options} state={categoryState} />\n </InputSection>\n <InputSection title={translations.FeedbackModalMessageTitleWeb} state={messageState} label={messageLabel}>\n <TextArea\n disabled={disabled}\n maxLength={maxMessageLength}\n onBlur={onMessageFocusOrBlur}\n onChange={setMessage}\n onFocus={onMessageFocusOrBlur}\n placeholder={translations.FeedbackModalMessagePlaceholderWeb}\n state={messageState}\n value={message}\n />\n </InputSection>\n <InAppFeedbackResponseRequest\n disabled={disabled}\n label={emailLabel}\n onBlur={onEmailFocusOrBlur}\n onChange={setEmail}\n onFocus={onEmailFocusOrBlur}\n state={emailState}\n value={email}\n open={response}\n onOpenChange={setResponse}\n />\n </Fragment>\n );\n};\n\nfunction useSelectOptions(selected: FeedbackCategory): SelectOption<FeedbackCategory>[] {\n const getSelectOption = (category: FeedbackCategory, text: string): SelectOption<FeedbackCategory> => ({ value: category, id: category, text, seleced: category === selected });\n const translations = useTranslations();\n return [\n getSelectOption(FeedbackCategory.Default, translations.SettingsFeedbackTopicDefaultOptionWeb),\n getSelectOption(FeedbackCategory.Function, translations.SettingsFeedbackTopicFunction),\n getSelectOption(FeedbackCategory.Stability, translations.SettingsFeedbackTopicStability),\n getSelectOption(FeedbackCategory.Content, translations.SettingsFeedbackTopicContent),\n getSelectOption(FeedbackCategory.Other, translations.SettingsFeedbackTopicOther)\n ];\n}\n\ninterface Props {\n submit: RefObject<() => Promise<boolean>>;\n dismiss: RefObject<() => Promise<boolean>>;\n onFromStateChange: (state: FormState) => void;\n}\n","import type { ComponentChild } from \"preact\";\nimport { h } from \"preact\";\nimport { useTranslations } from \"global/config\";\nimport { replaceStringsWithCompoenents } from \"services/configCMS/configCMS\";\nimport { isNullOrEmpty } from \"services/stringHelper\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\n\nlet _hasPrivacyLabel: boolean | null;\nexport function useHasPrivacyLabel(): boolean {\n const translations = useTranslations();\n if (_hasPrivacyLabel == null) _hasPrivacyLabel = !isNullOrEmpty(translations.FeedbackModalPrivacyTextWeb);\n return _hasPrivacyLabel;\n}\n\nexport const InAppFeedbackPrivacyLabel = () => {\n const translations = useTranslations();\n let components: ComponentChild[] = [translations.FeedbackModalPrivacyTextWeb];\n\n const link1 = (\n <Button design={ButtonDesign.TextBrandInline} externalUrl={translations.FeedbackModalPrivacyAction1UrlWeb}>\n {translations.FeedbackModalPrivacyAction1Web}\n </Button>\n );\n\n const link2 = (\n <Button design={ButtonDesign.TextBrandInline} externalUrl={translations.FeedbackModalPrivacyAction2UrlWeb}>\n {translations.FeedbackModalPrivacyAction2Web}\n </Button>\n );\n\n components = replaceStringsWithCompoenents(components, \"{link1}\", link1);\n components = replaceStringsWithCompoenents(components, \"{link2}\", link2);\n\n return <div>{components}</div>;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport \"./InAppFeedbackResponseRequest.scss\";\nimport { store } from \"global\";\nimport { WebAppBrand } from \"shared/models\";\nimport { useTranslations } from \"global/config\";\nimport { environment } from \"services/environment\";\nimport { CheckBoxButton } from \"components/atoms/controls/checkBoxButton\";\nimport type { TextInputState } from \"components/atoms/controls/textInput\";\nimport { TextInput } from \"components/atoms/controls/textInput\";\nimport { Control } from \"components/molecules/controlGroup/Control\";\nimport { InputSection } from \"components/molecules/inputSection\";\n\ninterface InAppFeedbackResponseRequestProps {\n disabled: boolean;\n label: string;\n onBlur: () => void;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onChange: (value: string) => void;\n onFocus: () => void;\n state: TextInputState;\n value: string;\n}\n\nexport const InAppFeedbackResponseRequest = ({ state, label, disabled, onChange, onFocus, onBlur, value, onOpenChange, open }: InAppFeedbackResponseRequestProps) => {\n const translations = useTranslations();\n const check = useCallback(() => {\n onFocus();\n onOpenChange(!open);\n }, [open, onFocus, onOpenChange]);\n\n const onBlurFn = useCallback(() => {\n onBlur();\n return true;\n }, [onBlur]);\n\n if (!isFeedbackResponseEnabled()) return null;\n\n return (\n <div className={`inAppFeedbackResponseRequest lRT --open-${open}`}>\n <div className=\"top\">\n <Control title={translations.FeedbackModalEmailTitleWeb} left={<CheckBoxButton checked={open} onChange={check} />} />\n </div>\n {open && (\n <div className=\"content\">\n <div className=\"text\">{translations.FeedbackModalEmailTextWeb}</div>\n <InputSection state={state} label={label}>\n <TextInput\n autoComplete=\"email\"\n disabled={disabled}\n onBlur={onBlurFn}\n onChange={onChange}\n onFocus={onFocus}\n placeholder={translations.FeedbackModalEmailPlaceholderWeb}\n state={state}\n type=\"email\"\n value={value}\n />\n </InputSection>\n </div>\n )}\n </div>\n );\n};\n\nexport function isFeedbackResponseEnabled(): boolean {\n if (store.getState().controlPanel.enableFeedbackResponse !== true) return false;\n switch (environment.webAppBrand) {\n case WebAppBrand.Telmore:\n return false;\n case WebAppBrand.YouSee:\n return true;\n }\n}\n","export * from \"./InAppFeedback\";\n","import { h } from \"preact\";\nimport { LayoutPageItem } from \"./LayoutPageItem\";\nimport { getComparableId } from \"services/resource\";\nimport type { PageContextModel } from \"models/app/resourceContextModel\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport type { LayoutItemGroupModel } from \"models/domain/layoutPage\";\n\ninterface GroupProps {\n group: LayoutItemGroupModel;\n context: PageContextModel;\n}\n\nexport const LayoutPageGroup = ({ group, context }: GroupProps) => (\n <section className=\"layoutPageGroup jLY\">\n <div className=\"items\">\n {group.items?.items.filter(n => n.displayType !== ResourceDisplayType.Unknown).map((item, index) => (\n <LayoutPageItem key={getComparableId(item)} item={item} page={context} rank={index} />\n ))}\n </div>\n </section>\n);\n","import { h } from \"preact\";\nimport type { PageContextModel } from \"models/app/resourceContextModel\";\nimport { getLayoutPageItemConnectionModelItems } from \"models/domain/helpers\";\nimport type { LayoutItemSectionModel } from \"models/domain/layoutPage\";\nimport { useSectionContext } from \"components/shared/hooks\";\nimport { useResourcesFromUnions } from \"components/shared/hooks/useResources\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\n\ninterface ItemProps {\n item: LayoutItemSectionModel;\n page: PageContextModel;\n rank: number;\n}\n\nexport const LayoutPageItem = ({ item, page, rank }: ItemProps) => {\n const section = useSectionContext(item.contentType, item, page, rank, item.displayType, item.id);\n const connection = getLayoutPageItemConnectionModelItems(item.content);\n const items = useResourcesFromUnions(connection?.items ?? null, item);\n\n return <ResourceSection resources={items} context={section} key={item.id} showTitle showAll={item} skeletonItems />;\n};\n","export * from \"./LayoutPageGroup\";\nexport * from \"./LayoutPageItem\";","import { h } from \"preact\";\nimport \"./DelegatedLogin.scss\";\nimport { getThemeSettingFromState } from \"components/app/hooks\";\nimport { messageBus } from \"global\";\nimport { WebAppBrand } from \"shared/models\";\nimport { USER_LOGGED_IN, USER_LOGIN_ERROR } from \"global/actions\";\nimport { Feature, isFeatureEnabled } from \"global/config\";\nimport { getInstallationId } from \"services/app\";\nimport { apiDelegatedLoginPath } from \"services/backend\";\nimport { addEnvironmentVariablesToUrl, environment } from \"services/environment\";\nimport { log, LogTag } from \"services/logger\";\nimport { addQueryParameterToUrl } from \"services/urlHelper\";\nimport { ModalOpenResult } from \"models/view/AppModalModel\";\nimport { dismissModal, Modal, openModal } from \"components/organisms/modal\";\nimport { showLoginErrorModal } from \"components/organisms/modal/modals\";\n\nexport function openDelegatedLoginWindow(): Promise<void> {\n // todo: guard against opening multiple windows\n\n const win = window.open(getDelegatedLoginUrl(), \"DelegatedLogin\", \"menubar=no,toolbar=no, status=0, resizable=no, width=480, height=512\");\n\n return new Promise<void>((resolve, reject) => {\n if (win) {\n log.info({ code: \"web-220926-1442\", msg: \"opened\", tags: [LogTag.User] });\n\n const unsubscribeA = messageBus.subscribeOne(USER_LOGGED_IN, (msg) => {\n log.info({ code: \"web-220926-1450\", msg: \"received userloggedin\", data: { ...msg }, tags: [LogTag.User] });\n clearInterval(timer);\n unsubscribeA();\n unsubscribeB();\n if (!win.closed) win.close();\n resolve();\n });\n\n const unsubscribeB = messageBus.subscribeOne(USER_LOGIN_ERROR, (msg) => {\n log.info({ code: \"web-220926-1451\", msg: \"received user login error\", data: { ...msg }, tags: [LogTag.User] });\n unsubscribeA();\n unsubscribeB();\n if (!win.closed) win.close();\n setTimeout(() => {\n showLoginErrorModal(msg.payload.error);\n }, 500);\n resolve();\n });\n\n const timer = setInterval(() => {\n if (win.closed) {\n clearInterval(timer);\n\n log.info({ code: \"web-220926-1452\", msg: \"closing\" });\n unsubscribeA();\n unsubscribeB();\n reject();\n }\n }, 500);\n } else {\n reject();\n }\n });\n}\n\nexport function navigateToDelegatedLogin(): Promise<void> {\n // todo: persist the return url, and then the /delegatedloginresponse should use it if present\n\n document.location.href = getDelegatedLoginUrl();\n\n return new Promise<void>(() => {\n // only needed for the method signature\n });\n}\n\nexport function showDelegatedLoginModal() {\n return new Promise<void>((resolve, reject) => {\n const unsubscribeA = messageBus.subscribeOne(USER_LOGGED_IN, (msg) => {\n log.info({ code: \"web-220926-1453\", msg: \"received userloggedin\", data: { ...msg }, tags: [LogTag.User] });\n unsubscribeA();\n unsubscribeB();\n dismissModal(\"unsubscribeA\");\n resolve();\n });\n\n const unsubscribeB = messageBus.subscribeOne(USER_LOGIN_ERROR, (msg) => {\n log.info({ code: \"web-220926-1454\", msg: \"received user login error\", data: { ...msg }, tags: [LogTag.User] });\n unsubscribeA();\n unsubscribeB();\n dismissModal(\"unsubscribeB\");\n setTimeout(() => {\n showLoginErrorModal(msg.payload.error);\n }, 500);\n resolve();\n });\n\n openModal(\n <Modal hasXCloseButton>\n <DelegatedLogin />\n </Modal>\n ).then((result) => {\n unsubscribeA();\n unsubscribeB();\n if (result === ModalOpenResult.Submit) resolve();\n else reject();\n });\n });\n}\n\nexport function DelegatedLogin() {\n return (\n <div className={\"login aHu\"}>\n <iframe scrolling=\"no\" src={getDelegatedLoginUrl()} />\n </div>\n );\n}\n\nfunction getDelegatedLoginUrl(): string {\n const theme = getThemeSettingFromState();\n const style = \"nopadding\";\n\n let url = isFeatureEnabled(Feature.ForceRemoteBackend)\n ? `https://musik.${environment.webAppBrand === WebAppBrand.YouSee ? \"yousee\" : \"telmore\"}.dk${apiDelegatedLoginPath}${\n document.location.port ? `?port=${document.location.port}` : \"\"\n }`\n : document.location.hostname === \"localhost\"\n ? `https://${document.location.hostname}${document.location.port ? \":5000\" : \"\"}${apiDelegatedLoginPath}${document.location.port ? `?port=${document.location.port}` : \"\"}`\n : apiDelegatedLoginPath;\n\n url = addQueryParameterToUrl(url, \"theme\", theme);\n url = addQueryParameterToUrl(url, \"style\", style);\n url = addQueryParameterToUrl(url, \"installationid\", getInstallationId());\n url = addEnvironmentVariablesToUrl(url);\n\n return url;\n}\n","import { navigateToDelegatedLogin, showDelegatedLoginModal, openDelegatedLoginWindow } from \"./delegatedLogin/DelegatedLogin\";\nimport { dispatch } from \"global\";\nimport { USER_LOGIN_ERROR } from \"global/actions\";\nimport { environment, LoginMode } from \"services/environment\";\nimport { log, LogTag } from \"services/logger\";\nimport { establishSessionFromLogin, getIsLoggedInFromState } from \"services/user\";\n\nexport async function promptLoginIfRequired() {\n if (await getIsLoggedInFromState()) return true;\n\n try {\n await showLoginUi();\n } catch (e) {\n log.info({ code: \"web-210721-1919\", msg: \"user closed the loin modal\" });\n }\n return await getIsLoggedInFromState();\n}\n\nexport function showLoginUi() {\n switch (environment?.loginMode) {\n default:\n case LoginMode.OauthPopup:\n return openDelegatedLoginWindow();\n case LoginMode.OauthEmbedded:\n return showDelegatedLoginModal();\n case LoginMode.OauthNavigation:\n return navigateToDelegatedLogin();\n }\n}\n\nexport function initDelegatedLoginListener() {\n window.addEventListener(\n \"message\",\n async (event) => {\n //const delegatedLoginOrigin = `${ document.location.protocol }//${ document.location.host }`; // todo: consider supporting the page on a different domain\n if (event && event.data && event.data.type == \"tokens\" /* && event.origin === delegatedLoginOrigin */) {\n log.info({ code: \"web-220926-1437\", msg: \"received tokens from delegated login\", data: { event }, tags: [LogTag.User] });\n await establishSessionFromLogin(event.data.refreshToken, event.data.accessToken);\n }\n\n if (event && event.data && event.data.type == \"delegatedloginerror\") {\n log.info({ code: \"web-220926-1438\", msg: \"received error from delegated login\", data: { event }, tags: [LogTag.User] });\n dispatch({\n type: USER_LOGIN_ERROR,\n payload: {\n error: event.data.errorcode\n }\n });\n }\n },\n false\n );\n}\n","import { h } from \"preact\";\nimport { useState } from \"preact/hooks\";\nimport \"./sessionFrame.scss\";\nimport { USER_LOGGING_OUT, USER_LOGIN_ERROR } from \"global/actions\";\nimport { isFeatureEnabled, Feature } from \"global/config\";\nimport { useMessageBus } from \"global/hooks\";\nimport { environment } from \"services/environment\";\n\n// This is a workaround for the Ping OAuth logins.\n// Their UI sets cookies that remember a session, and if the UI is reloaded before that session exires,\n// the UI will automatically log people in again, i.e. people will be unable to log in as a different user until the session expires.\n// Since the feature can't be configured off, they have provided us a URL we can load that clears the session cookies...\n\nexport function SessionFrame() {\n const [url, setUrl] = useState<string | null>(null);\n\n function show() {\n if (isFeatureEnabled(Feature.SessionFrame)) {\n setUrl(environment.sessionHackUrl);\n setTimeout(() => {\n setUrl(null)\n }, 8000);\n }\n }\n\n useMessageBus(USER_LOGGING_OUT, show);\n useMessageBus(USER_LOGIN_ERROR, show);\n\n if (!url) return null;\n\n return (\n <iframe className=\"sessionframe wtf\" src={url} />\n )\n}","/* eslint-disable react/jsx-key */\nimport { Fragment, h } from \"preact\";\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./Lyrics.scss\";\nimport { toggleLyrics } from \"./toggleLyrics\";\nimport type { LyricLine } from \"./useLyrics\";\nimport { useLyrics } from \"./useLyrics\";\nimport { dispatch } from \"global\";\nimport { AUDIO_INPUT_AUDIO_PLAY_CHANGE, DISPLAYED_LYRICS, PLAYER_SEEK, PLAYER_UI_SEEKING, SET_DESKTOP_LYRICS_VISIBLE, SET_MAXIPLAYER_OPEN } from \"global/actions\";\nimport { store, translate } from \"global/config\";\nimport { useMessageBus } from \"global/hooks\";\nimport { getTrackPreview } from \"services/backend\";\nimport { getCurrentLaneFromState } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport { SynchronizationType } from \"generated/graphql-types\";\nimport { MobileMaxiPlayerOpen, type RootModel } from \"models/app\";\nimport { AudioInputType } from \"models/app/player\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemPlayQueueModel } from \"models/app/player/input\";\nimport type { PlayableModel } from \"models/domain\";\nimport { getAudioPropertiesFromState, useRefUpdate, useSecondsPlayedFromState } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { PageLoadSpinner } from \"components/atoms/spinner\";\n\ntype LyricsInternalState = {\n enableAutoscroll: boolean;\n isAutoscrolling: boolean;\n autoscrollTimer: number | undefined;\n}\n\nexport function Lyrics() {\n\n const internalState = useMemo<LyricsInternalState>(() => ({\n enableAutoscroll: true,\n isAutoscrolling: false,\n autoscrollTimer: undefined\n }), []);\n\n const lyricsTrackId = useSelector((root: RootModel) => root.ui.layout.lyricsTrackId);\n const lyricsStartingPoint = useSelector((root: RootModel) => root.ui.layout.lyricsStart);\n\n const [queueTrackId] = useState(store.getState().player.input === AudioInputType.PlayQueue ? getCurrentLaneFromState()?.track.id : undefined)\n\n const isLyricsForCurrentTrack = queueTrackId == lyricsTrackId;\n\n const { loading, lyricsId, lines, synchronizationType, author, publisher, provider } = useLyrics(lyricsTrackId);\n\n const { secondsPlayed } = useSecondsPlayedFromState();\n const [dragSecondsPlayer, setDragSecondsPlayerd] = useState<number | undefined>(undefined);\n\n const positionMs = (dragSecondsPlayer || secondsPlayed) * 100;\n const activeIndex = findActiveIndex(positionMs, lines);\n\n useEffect(() => {\n if (loading || !lyricsId || !lyricsTrackId || !synchronizationType || !lyricsStartingPoint) return;\n (async () => {\n\n const currentLane = getCurrentLaneFromState();\n const playable: PlayableModel | null = ((isLyricsForCurrentTrack && currentLane && currentLane.track.id == lyricsTrackId) ? currentLane : undefined) ?? (await getTrackPreview({ id: lyricsTrackId }))?.model ?? null;\n\n if (!playable) {\n // todo: consider logging\n return;\n }\n\n dispatch({\n type: DISPLAYED_LYRICS,\n payload: {\n lyricsId,\n playable,\n startingPoint: lyricsStartingPoint,\n sync: isLyricsForCurrentTrack ? synchronizationType : SynchronizationType.None\n }\n })\n\n })();\n }, [lyricsTrackId, loading, lyricsId, synchronizationType, lyricsStartingPoint, isLyricsForCurrentTrack])\n\n const onClick = useCallback((e: h.JSX.TargetedMouseEvent<HTMLParagraphElement>) => {\n if (!isLyricsForCurrentTrack) return;\n const index = Array.prototype.indexOf.call((e.target as HTMLParagraphElement).parentNode?.children, e.target)\n if (lines?.[index]?.fromMs) {\n const { duration } = getAudioPropertiesFromState();\n if (duration) {\n const percent = (lines[index]?.fromMs ?? 0) / duration\n dispatch({ type: PLAYER_SEEK, payload: { percent, context: { action: AudioContextAction.UserPlayerSeek, trace: null } } })\n internalState.isAutoscrolling = true;\n internalState.enableAutoscroll = true;\n if (internalState.autoscrollTimer) clearTimeout(internalState.autoscrollTimer);\n internalState.autoscrollTimer = window.setTimeout(() => {\n internalState.isAutoscrolling = false;\n }, 4000);\n }\n }\n }, [lines, internalState, isLyricsForCurrentTrack]);\n\n useMessageBus(PLAYER_UI_SEEKING, msg => {\n if (!isLyricsForCurrentTrack) return;\n setDragSecondsPlayerd(msg.payload.seconds);\n });\n\n useMessageBus(PLAYER_SEEK, () => {\n if (!isLyricsForCurrentTrack) return;\n setDragSecondsPlayerd(undefined);\n });\n\n // close lyrics when the track changes\n useMessageBus(AUDIO_INPUT_AUDIO_PLAY_CHANGE, msg => {\n if (isLyricsForCurrentTrack && (msg.payload.audio as AudioInputItemPlayQueueModel).trackId !== lyricsTrackId) {\n if (store.getState().ui.layout.lyricsStart === \"MaxiPlayer\") {\n dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Open } });\n }\n dispatch({\n type: SET_DESKTOP_LYRICS_VISIBLE,\n payload: {\n open: false\n }\n });\n }\n });\n\n // disable autoscroll when receiving a scroll event from the user\n const pageRef = useRefUpdate<HTMLDivElement>();\n useLayoutEffect(() => {\n const element = pageRef.current;\n if (!element) return undefined;\n const scrollListener = () => {\n // since scroll events dont indicate if they are triggered by the user or scrollIntoView(),\n // we have to use a timer to wait until we know scrollIntoView() is done.\n if (!internalState.isAutoscrolling) {\n internalState.enableAutoscroll = false;\n }\n };\n const wheelListener = () => {\n internalState.enableAutoscroll = false;\n };\n element.addEventListener(\"scroll\", scrollListener)\n element.addEventListener(\"wheel\", wheelListener)\n return () => {\n element.removeEventListener(\"scroll\", scrollListener)\n element.removeEventListener(\"wheel\", wheelListener)\n };\n });\n // autoscroll when new lyric is focused\n useLayoutEffect(() => {\n if (isLyricsForCurrentTrack && internalState.enableAutoscroll) {\n if (internalState.autoscrollTimer) clearTimeout(internalState.autoscrollTimer);\n internalState.isAutoscrolling = true;\n internalState.autoscrollTimer = window.setTimeout(() => {\n // wait 2 seconds until scrollIntoView() finishes, as it provides no event/callback.\n internalState.isAutoscrolling = false;\n }, 2000);\n\n document.getElementById(\"activelyric\")?.scrollIntoView({ block: \"center\", behavior: \"smooth\" }); // todo: test on other browsers, and make a polyfill if they dont work\n }\n }, [isLyricsForCurrentTrack, activeIndex, internalState]);\n\n function getClassForLine(index: number, activeIndex: number | undefined, line: LyricLine) {\n let result = (synchronizationType == SynchronizationType.None)\n ? undefined\n : isLyricsForCurrentTrack\n ? (isLineActive(positionMs, line.fromMs, line.toMs) ? \"active\" : (index <= (activeIndex ?? 0) ? \"past\" : undefined))\n : undefined;\n if (!line?.text) {\n result = result ? (`${result} spacer`) : \"spacer\";\n }\n return result;\n }\n\n const onToggleLyrics = useCallback(() => toggleLyrics(\"MaxiPlayer\"), [])\n\n // todo: when clicking a lyric, have a constant to seek to a fraction of a second after it? or to round up or something\n // todo: guard against momentarily highlighting a line after seeking; only activate it if there's more than a threshold of milliseconds left in it\n // todo: test scroll on other browsers, and make a polyfill if they dont work\n\n return (\n <div className=\"lyrics gil\" ref={pageRef}>\n <div className=\"buttons\">\n <Button design={ButtonDesign.LightBig} className=\"close\" icon={IconName.Close} onClick={onToggleLyrics} />\n </div>\n <div className=\"gradient\">\n <div />\n </div>\n <div className=\"column\">\n {\n !loading && lines &&\n <div className={`lines${(!isLyricsForCurrentTrack || synchronizationType == SynchronizationType.None) ? \" nosync\" : \"\"}`}>\n {\n lines.map((line, index) => (\n <p id={(isLyricsForCurrentTrack && (index === activeIndex || (index == 0 && activeIndex == -2))) ? \"activelyric\" : undefined} className={getClassForLine(index, activeIndex, line)} onClick={onClick}>{line.text || <Fragment />}</p>\n ))\n }\n </div>\n }\n </div>\n {\n !loading && lines && (author || publisher || provider) &&\n <div className=\"column credits\">\n {\n author &&\n <div>{translate(\"LyricsWriter\")?.replace(\"${Writer}\", author)}</div>\n }\n {\n publisher &&\n <div>{translate(\"LyricsPublisher\")?.replace(\"${Writer}\", publisher)}</div>\n }\n {\n provider &&\n <div>{provider}</div>\n }\n </div>\n }\n {\n !loading && !lines &&\n <div className=\"centered\">\n <p>♪</p>\n {translate(\"SearchNoResult\") /* this is strictly not the right string, but its for a case that should never happen */}\n </div>\n }\n {\n loading &&\n <div className=\"centered\">\n <PageLoadSpinner />\n </div>\n }\n </div>\n );\n}\n\nfunction isLineActive(position: number | undefined, from: number | undefined, to: number | undefined) {\n if (position === undefined || from === undefined || to === undefined) return false;\n return position >= from && position < to;\n}\n\nfunction findActiveIndex(positionMs: number, lines: Array<LyricLine> | null) {\n if (!lines) return -1;\n let result = lines.findIndex(line => isLineActive(positionMs, line.fromMs, line.toMs));\n if (result == -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const last = (lines as any).findLast?.((n: LyricLine) => (n.fromMs ?? 0) > 0 && ((n.fromMs ?? 0) < positionMs)) as LyricLine | undefined;\n if (last) {\n if (positionMs > (last.fromMs || 0))\n result = lines.indexOf(last);\n }\n }\n if (result == -1) {\n const firstIndex = lines.findIndex?.((n: LyricLine) => (n.fromMs ?? 0) > positionMs);\n if (firstIndex !== -1) {\n result = -2; // special \"first\" value\n }\n }\n return result;\n}\n","export * from \"./Lyrics\";\nexport * from \"./toggleLyrics\";\nexport * from \"./useLyricsState\";\n","import { getLyricsState } from \"./useLyricsState\";\nimport { dispatch } from \"global\";\nimport type { DisplayedLyricsAction } from \"global/actions\";\nimport { SET_DESKTOP_LYRICS_VISIBLE } from \"global/actions\";\n\nexport async function toggleLyrics(startingPoint: DisplayedLyricsAction[\"payload\"][\"startingPoint\"]) {\n const { isLyricsEnabled, isLyricsAvailable, isLyricsOpen, currentQueueLyricsId, currentQueueTrackId } = await getLyricsState();\n const open = isLyricsEnabled && isLyricsAvailable && !isLyricsOpen && !!currentQueueLyricsId && !!currentQueueTrackId;\n\n dispatch({\n type: SET_DESKTOP_LYRICS_VISIBLE,\n payload: !open\n ? { open: false }\n : {\n open,\n startingPoint,\n lyricsId: currentQueueLyricsId,\n trackId: currentQueueTrackId\n }\n });\n}\n","import { useEffect, useState } from \"preact/hooks\";\nimport { getTrackLyrics, getTrackLyricsPagination } from \"services/backend\";\nimport type { SynchronizationType, TrackLyricsPageQuery } from \"generated/graphql-types\";\n\nexport type LyricLine = {\n fromMs?: number;\n toMs?: number;\n text: string;\n}\n\nexport type LyricsResult = {\n lyricsId: string | null;\n lines: LyricLine[] | null;\n loading: boolean;\n author: string | null;\n publisher: string | null;\n provider: string | null;\n synchronizationType: SynchronizationType | null;\n}\n\ntype GqlLyricLine = NonNullable<NonNullable<NonNullable<TrackLyricsPageQuery[\"catalog\"][\"track\"]>[\"lyrics\"]>[\"lrc\"][\"items\"]>[0];\nfunction mapLyric(line: GqlLyricLine) {\n return ({\n fromMs: (line.startInMs ?? 0) / 10,\n toMs: ((line.startInMs ?? 0) + (line.durationInMs ?? 0)) / 10,\n text: line.line\n });\n}\n\nexport function useLyrics(id: string | undefined): LyricsResult {\n const [internalState] = useState({\n id: undefined as string | undefined\n });\n const [result, setResult] = useState<LyricsResult>({\n lyricsId: null,\n loading: false,\n lines: [],\n author: null,\n publisher: null,\n provider: null,\n synchronizationType: null\n })\n\n useEffect(() => {\n internalState.id = id;\n setResult({\n lyricsId: id ?? null,\n loading: true,\n lines: null,\n author: null,\n publisher: null,\n provider: null,\n synchronizationType: null\n })\n if (!id) return;\n\n // load the first few lines to get a quick result\n getTrackLyrics({ id, first: 100 })\n .then(result => {\n if (internalState.id === id && result.success && result.model) {\n const lines = result.model?.lrc.items?.map(mapLyric) ?? null;\n const firstResult = {\n lyricsId: result.model.id,\n loading: result.loading || !lines,\n lines,\n author: result.model.credits?.writer ?? null,\n publisher: result.model.credits?.publisher ?? null,\n provider: result.model.credits?.provider ?? null,\n synchronizationType: result.model.synchronizationType ?? null\n };\n setResult(firstResult)\n\n // then load and appent any remaining lines\n if (result.model?.lrc.pageInfo.hasNextPage && result.model.lrc.pageInfo.endCursor) {\n getTrackLyricsPagination({ id, first: 1000, after: result.model.lrc.pageInfo.endCursor })\n .then(result => {\n if (internalState.id === id && result.success) {\n const lines = result.model?.lrc.items?.map(mapLyric) ?? null;\n if (lines && lines.length > 0) {\n setResult({\n ...firstResult,\n lines: [...(firstResult.lines ?? []), ...lines]\n })\n }\n }\n });\n }\n }\n });\n\n }, [id, internalState])\n\n return result\n}\n\n","import { useSelector } from \"react-redux\";\nimport { Feature, isFeatureEnabled, store } from \"global/config\";\nimport { getTrackLyricsId, useTrackLyricsId } from \"services/backend\";\nimport { useLoginState } from \"services/user\";\nimport type { RootModel } from \"models/app\";\nimport { LoginState } from \"models/app\";\nimport { AudioInputType } from \"models/app/player\";\nimport { getQueueCurrentLaneFromState, useCurrentLanePrimaryResourceFromState } from \"components/shared/hooks\";\nimport { useDesktopLyricsOpen } from \"components/shared/hooks/useDesktopLyricsOpen\";\n\nexport function useLyricsState() {\n const isPlayQueue = useSelector((root: RootModel) => root.player.input) === AudioInputType.PlayQueue;\n const currentQueueTrackId = useCurrentLanePrimaryResourceFromState()?.resource?.id;\n const currentQueueLyricsId = useTrackLyricsId({ id: currentQueueTrackId ?? \"0\" })?.model;\n const isLyricsEnabled = (useLoginState() === LoginState.LoggedIn) && isFeatureEnabled(Feature.Lyrics);\n const isLyricsAvailable = isPlayQueue && !!currentQueueLyricsId;\n const isLyricsOpen = useDesktopLyricsOpen();\n return {\n isLyricsEnabled,\n isLyricsAvailable,\n isLyricsOpen,\n isPlayQueue,\n currentQueueLyricsId,\n currentQueueTrackId\n }\n}\n\nexport async function getLyricsState() {\n const state = store.getState();\n const isPlayQueue = state.player.input === AudioInputType.PlayQueue;\n const currentQueueTrackId = getQueueCurrentLaneFromState()?.track?.id;\n const currentQueueLyricsId = (await getTrackLyricsId({ id: currentQueueTrackId ?? \"0\" }))?.model;\n const isLyricsEnabled = (state.user.state === LoginState.LoggedIn) && isFeatureEnabled(Feature.Lyrics);\n const isLyricsAvailable = isPlayQueue && !!currentQueueLyricsId;\n const isLyricsOpen = state.ui.layout.lyricsOpen;\n return {\n isLyricsEnabled,\n isLyricsAvailable,\n isLyricsOpen,\n isPlayQueue,\n currentQueueLyricsId,\n currentQueueTrackId\n }\n}\n","import { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { showCreatePlaylistModal, showCustomCreatePlaylistModal } from \"../modal/modals/CreatePlaylistModal\";\nimport { useTranslations } from \"global/config\";\nimport { addPlayableToPlaylist } from \"services/playlist\";\nimport { getLinkFromResource } from \"services/resource\";\nimport type { DraggablePlayableModel } from \"models/app\";\nimport { ButtonDesign, Button } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { DropZone } from \"components/molecules/dropZone\";\n\nexport const CreatePlaylistButton = ({ minimal }: { minimal: boolean }) => {\n const translations = useTranslations();\n const [isHovering, setIsHovering] = useState(false);\n\n const onDrop = useCallback(async (model: DraggablePlayableModel) => {\n const title = getLinkFromResource(model.playable)?.text ?? model.title;\n const result = await showCustomCreatePlaylistModal(null, null, title);\n if (result.playlistId) {\n addPlayableToPlaylist(result.playlistId, model.playable);\n }\n }, []);\n\n return (\n <section className=\"myMusicPlaylistsAction\">\n <Button\n className={isHovering ? \"--hover-true\" : \"\"}\n icon={minimal ? IconName.AddToPlaylist : IconName.Plus16}\n design={minimal ? ButtonDesign.SideBarLinkBigMinimal : ButtonDesign.SecondarySmall}\n onClick={showCreatePlaylistModal}>\n {translations.CreatePlaylist}\n <DropZone onDropFn={onDrop} onHoverChange={setIsHovering} customClass=\"--drop-fill --drop-invisible --drop-round\" />\n </Button>\n </section>\n );\n};\n","import { h } from \"preact\";\nimport { Section } from \"./Section\";\nimport { TestLocator } from \"global/constants\";\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkAndPreviewContext } from \"components/shared/hooks\";\nimport { ButtonDesign, Button } from \"components/atoms/controls/button\";\n\nexport const Main = ({ context, minimal }: { context: SectionContextModel; minimal: boolean }) => {\n const design = minimal ? ButtonDesign.SideBarLinkBigMinimal : ButtonDesign.SideBarLinkBig;\n\n return (\n <Section className=\"main\">\n <Button link={useLinkAndPreviewContext(ContentType.FrontPage, null, context, null)} useText useIcon design={design} testLocator={TestLocator.NavigationHomeButton} />\n <Button link={useLinkAndPreviewContext(ContentType.Search, null, context, null)} useText useIcon design={design} testLocator={TestLocator.NavigationSearchButton} />\n <Button link={useLinkAndPreviewContext(ContentType.Radio, null, context, null)} useText useIcon design={design} testLocator={TestLocator.NavigationRadioButton} />\n </Section>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { Section } from \"./Section\";\nimport { dispatch } from \"global\";\nimport { PLAYER_TOGGLE_FAVORITE } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { TestLocator } from \"global/constants\";\nimport type { FavoritePreviewModel } from \"services/favorites\";\nimport { getQueueTrackPlayable } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport { isFavorite } from \"generated/graphql-types\";\nimport type { DraggablePlayableModel } from \"models/app\";\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { useLinkAndPreviewContext } from \"components/shared/hooks\";\nimport { ButtonDesign, Button } from \"components/atoms/controls/button\";\nimport { DropZone } from \"components/molecules/dropZone\";\n\nexport const MyMusic = ({ section, minimal }: { section: SectionContextModel; minimal: boolean }) => {\n const addFavorites = useCallback(\n (playable: FavoritePreviewModel) => {\n dispatch({ type: PLAYER_TOGGLE_FAVORITE, payload: { section, playables: [playable], operation: isFavorite ? \"remove\" : \"add\" } });\n },\n [section]\n );\n const design = minimal ? ButtonDesign.SideBarLinkBigMinimal : ButtonDesign.SideBarLinkBig;\n const translations = useTranslations();\n\n const allowDropToPlaylists = useCallback((item: DraggablePlayableModel) => {\n return (\n item.playable.contentType == ContentType.Playlist &&\n item.context.section.type !== ContentType.MyMusicPlaylists &&\n item.context.section.type !== ContentType.SideBar &&\n !item.playable.owner\n );\n }, []);\n\n const onDropToPlaylists = useCallback(\n async (model: DraggablePlayableModel) => {\n if (model.playable.contentType == ContentType.Playlist) {\n addFavorites(model.playable);\n }\n },\n [addFavorites]\n );\n\n const allowDropToArtists = useCallback((item: DraggablePlayableModel) => {\n return item.playable.contentType == ContentType.Artist && item.context.section.type !== ContentType.MyMusicArtists;\n }, []);\n\n const onDropToArtists = useCallback(\n async (model: DraggablePlayableModel) => {\n if (model.playable.contentType == ContentType.Artist) {\n addFavorites(model.playable);\n }\n },\n [addFavorites]\n );\n\n const allowDropToAlbums = useCallback((item: DraggablePlayableModel) => {\n return item.playable.contentType == ContentType.Album && item.context.section.type !== ContentType.MyMusicAlbums;\n }, []);\n\n const onDropToAlbums = useCallback(\n async (model: DraggablePlayableModel) => {\n if (model.playable.contentType == ContentType.Album) {\n addFavorites(model.playable);\n }\n },\n [addFavorites]\n );\n\n const allowDropToTracks = useCallback((item: DraggablePlayableModel) => {\n return (\n (item.playable.contentType == ContentType.QueueTrack || item.playable.contentType == ContentType.TrackPlayable) &&\n item.context.section.type !== ContentType.MyMusicTracks\n );\n }, []);\n\n const onDropToTracks = useCallback(\n async (model: DraggablePlayableModel) => {\n switch (model.playable.contentType) {\n case ContentType.QueueTrack:\n {\n const track = getQueueTrackPlayable(model.playable);\n if (track) addFavorites(track);\n }\n break;\n case ContentType.TrackPlayable:\n addFavorites(model.playable);\n break;\n }\n },\n [addFavorites]\n );\n\n return (\n <Section className=\"myMusic\" top={minimal ? undefined : { title: translations.NavBarMyMusic }}>\n <div>\n <DropZone onDropFn={onDropToPlaylists} allowDrop={allowDropToPlaylists} customClass=\"--drop-fill\" />\n <Button\n link={useLinkAndPreviewContext(ContentType.MyMusicPlaylists, null, section, null)}\n useText\n useIcon\n design={design}\n testLocator={TestLocator.NavigationPlaylistsButton}\n />\n </div>\n <div>\n <DropZone onDropFn={onDropToArtists} allowDrop={allowDropToArtists} customClass=\"--drop-fill\" />\n <Button\n link={useLinkAndPreviewContext(ContentType.MyMusicArtists, null, section, null)}\n useText\n useIcon\n design={design}\n testLocator={TestLocator.NavigationArtistsButton}\n />\n </div>\n <div>\n <DropZone onDropFn={onDropToAlbums} allowDrop={allowDropToAlbums} customClass=\"--drop-fill\" />\n <Button\n link={useLinkAndPreviewContext(ContentType.MyMusicAlbums, null, section, null)}\n useText\n useIcon\n design={design}\n testLocator={TestLocator.NavigationAlbumsButton}\n />\n </div>\n <div>\n <DropZone onDropFn={onDropToTracks} allowDrop={allowDropToTracks} customClass=\"--drop-fill\" />\n <Button\n link={useLinkAndPreviewContext(ContentType.MyMusicTracks, null, section, null)}\n useText\n useIcon\n design={design}\n testLocator={TestLocator.NavigationTracksButton}\n />\n </div>\n </Section>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { Section } from \"./Section\";\nimport { MyPlaylistsSortingContextMenu, ResourceContextMenu } from \"../contextMenu/menus\";\nimport { store } from \"global\";\nimport { useTranslations } from \"global/config\";\nimport { sidebarConfig, TestLocator } from \"global/constants\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { addPlayableToPlaylist, useUserPlaylists } from \"services/playlist\";\nimport { getNextUUID } from \"services/utils\";\nimport type { DraggablePlayableModel, DragProps, RootModel } from \"models/app\";\nimport { createDraggablePlayableModel } from \"models/app\";\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { PlaylistPreviewModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { useContextMenu, useLinkAndPreviewContext, usePreviewContext, useRefUpdate } from \"components/shared/hooks\";\nimport { ButtonDesign, Button } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { DropZone } from \"components/molecules/dropZone\";\n\nexport const MyMusicPlaylists = ({ context }: { context: SectionContextModel }) => {\n const { buttonRef, sort, sorting } = useMyPlaylistsSortingButtonWithMenu(\"sidebarPlaylistsSorting\");\n const playlists = useUserPlaylists(sorting);\n const dragProps: DragProps = useMemo(() => ({ dragSourceId: getNextUUID() }), []);\n const translations = useTranslations();\n\n return !playlists || playlists.length == 0 ? null : (\n <Section\n className=\"myMusicPlaylists\"\n top={{\n title: translations.Playlists,\n button: <Button icon={IconName.Meatballs} onClick={sort} ref={buttonRef} inline={{ right: true }} />\n }}>\n {playlists?.slice(0, sidebarConfig.playlistShortcutLimit).map((playlist, index) => (\n <PlaylistSidebarButton key={playlist.id} playlist={playlist} context={context} dragProps={dragProps} index={index} />\n ))}\n </Section>\n );\n};\n\nconst useMyPlaylistsSortingButtonWithMenu = (target: \"playlistsSorting\" | \"sidebarPlaylistsSorting\") => {\n const buttonRef = useRefUpdate<HTMLButtonElement>();\n const sortingMenuHook = useContextMenu(<MyPlaylistsSortingContextMenu target={target} />);\n const sorting = useSelector((root: RootModel) => root.ui[target]);\n const sort = () => {\n if (!buttonRef.current) {\n log.warn({ code: \"web-220427-1114\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n sortingMenuHook.open(buttonRef.current);\n };\n return { buttonRef, sort, sorting };\n};\n\nconst PlaylistSidebarButton = ({ playlist, context, dragProps, index }: { playlist: PlaylistPreviewModel; context: SectionContextModel; dragProps: DragProps; index: number }) => {\n const previewContext = usePreviewContext(ContentType.SideBar, playlist, context, index);\n const draggableItem = useCallback(() => createDraggablePlayableModel(playlist, dragProps.dragSourceId, previewContext), [playlist, dragProps.dragSourceId, previewContext]);\n const menu = useContextMenu(ResourceContextMenu({ resource: playlist, context: previewContext, resourceType: playlist.contentType }), true);\n\n const allowDrop = useCallback(\n (item: DraggablePlayableModel) => {\n const source = store.getState().ui.userDraggingItem;\n return item.playable.contentType !== ContentType.Playlist || source?.playable?.id != playlist.id;\n },\n [playlist]\n );\n const onDrop = useCallback(\n (model: DraggablePlayableModel) => {\n addPlayableToPlaylist(playlist.id, model.playable);\n },\n [playlist]\n );\n\n return (\n <div>\n <DropZone onDropFn={onDrop} allowDrop={allowDrop} customClass=\"--drop-fill\" />\n <Button\n key={playlist.id}\n design={ButtonDesign.SideBarLinkMedium}\n link={useLinkAndPreviewContext(ContentType.Playlist, playlist, context, null)}\n draggableItem={draggableItem}\n onContextMenu={menu.openByMouse}\n testLocator={TestLocator.NavigationPlaylistButton}>\n {playlist.title}\n </Button>\n </div>\n );\n};\n","import type { ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\n\ninterface Props {\n top?: {\n title: string;\n button?: ComponentChildren;\n };\n children: ComponentChildren;\n className: string;\n}\n\nexport const Section = ({ className, top, children }: Props) => {\n return (\n <section className={`section KHo ${className}`}>\n {top && (\n <div className=\"top\">\n <h1>{top.title}</h1>\n {top.button && top.button}\n </div>\n )}\n <nav className=\"links\">{children}</nav>\n </section>\n );\n};\n","import { h } from \"preact\";\nimport \"./SideBar.scss\";\nimport { CreatePlaylistButton } from \"./CreatePlaylistButton\";\nimport { Main } from \"./Main\";\nimport { MyMusic } from \"./MyMusic\";\nimport { MyMusicPlaylists } from \"./MyMusicPlaylists\";\nimport { ScrollerWithFade } from \"../scrollerWithFade\";\nimport { useDisplayLoggedIn } from \"services/user\";\nimport { ContentType } from \"models/ModelType\";\nimport { useSectionContext } from \"components/shared/hooks\";\nimport { Logo } from \"components/atoms/logo\";\n\ninterface Props {\n className?: string;\n minimal: boolean;\n}\n\nexport const SideBar = ({ className, minimal }: Props) => {\n const section = useSectionContext(ContentType.SideBar, null, null, null, null);\n const loggedIn = useDisplayLoggedIn();\n\n return (\n <nav tabIndex={-1} className={`sideBar d7c ${className} --minimal-${minimal}`}>\n <Logo />\n <ScrollerWithFade disableFade={minimal}>\n <Main context={section} minimal={minimal} />\n {minimal && <hr />}\n <MyMusic section={section} minimal={minimal} />\n {loggedIn && minimal && <hr />}\n {loggedIn && !minimal && <MyMusicPlaylists context={section} />}\n </ScrollerWithFade>\n\n {loggedIn && <CreatePlaylistButton minimal={minimal} />}\n </nav>\n );\n};\n","export * from \"./SideBar\";\n","import { h } from \"preact\";\nimport { forwardRef } from \"preact/compat\";\nimport { useSelector } from \"react-redux\";\nimport \"./Modal.scss\";\nimport { dispatch, messageBus, store } from \"global\";\nimport { MODAL_CLOSE, MODAL_OPEN } from \"global/actions\";\nimport type { ModalCloseAction } from \"global/actions\";\nimport { log } from \"services/logger/initLoggerService\";\nimport type { RootModel } from \"models/app\";\nimport { ModalOpenResult } from \"models/view/AppModalModel\";\n\ninterface Props {\n className?: string;\n}\n\nexport const AppModal = forwardRef<HTMLDialogElement, Props>(({ className }, ref) => {\n const modal = useSelector((root: RootModel) => root.modal.open);\n const open = modal != null;\n\n return (\n <dialog tabIndex={-1} className={`appModal DtI ${className ?? \"\"} --open-${open}`} ref={ref}>\n {modal}\n <div className=\"background\" />\n </dialog>\n );\n});\n\nexport async function openModal(modal: h.JSX.Element) {\n const { result } = await openModal2(modal);\n return result;\n}\n\nexport async function openModal2(modal: h.JSX.Element) {\n if (isModalOpen()) await dismissModal(\"AppModal.openModal\");\n\n return new Promise<ModalCloseAction[\"payload\"]>((resolve) => {\n messageBus.subscribeOne(\"MODAL_CLOSE\", (msg) => {\n resolve(msg.payload);\n });\n dispatch({ type: MODAL_OPEN, payload: { modal } });\n });\n}\n\nexport async function submitModal(from: string, data: string | null = null) {\n closeModal(ModalOpenResult.Submit, from, data);\n}\n\nexport async function dismissModal(from: string, data: string | null = null) {\n closeModal(ModalOpenResult.Dismiss, from, data);\n}\n\nasync function closeModal(result: ModalOpenResult, from: string, data: string | null) {\n if (!isModalOpen()) {\n log.error({ code: \"web-210722-1411\", msg: \"no modal open\", data: { from } });\n return;\n }\n dispatch({ type: MODAL_CLOSE, payload: { result, data } });\n}\n\nexport function isModalOpen() {\n return store.getState().modal.open;\n}\n","import { submitModal, dismissModal } from \".\";\nimport type { TranslationKey } from \"global/config\";\nimport { ButtonDesign } from \"components/atoms/controls/button\";\n\nexport interface ModalButton {\n design: ButtonDesign.PrimarySmall | ButtonDesign.TextBrandMedium;\n title: TranslationKey;\n action?: (() => (void)) | (() => Promise<boolean>);\n}\n\nexport const modalButtonTryAgain = (customAction?: () => Promise<boolean>): ModalButton => ({\n title: \"TryAgain\",\n action: () => submit(customAction),\n design: ButtonDesign.PrimarySmall\n});\nexport const modalButtonSubmitAdd = (data: string): ModalButton => ({\n title: \"Add\",\n action: () => submit(undefined, data),\n design: ButtonDesign.PrimarySmall\n});\nexport const modalButtonSubmitAddAll = (data: string): ModalButton => ({\n title: \"Button_AddAll\",\n action: () => submit(undefined, data),\n design: ButtonDesign.TextBrandMedium\n});\nexport const modalButtonSubmitAddMissing = (data: string): ModalButton => ({\n title: \"Button_AddMissing\",\n action: () => submit(undefined, data),\n design: ButtonDesign.PrimarySmall\n});\nexport const modalButtonSubmitOK = (customAction?: () => Promise<boolean>): ModalButton => ({\n title: \"Button_Ok\",\n action: () => submit(customAction),\n design: ButtonDesign.PrimarySmall\n});\nexport const modalButtonSubmitMaintenance = (customAction?: () => Promise<boolean>): ModalButton => ({\n title: \"MaintenanceBannerPopupClose\",\n action: () => submit(customAction),\n design: ButtonDesign.PrimarySmall\n});\nexport const modalButtonSubmitClose = (customAction?: () => Promise<boolean>): ModalButton => ({\n title: \"GlobalCloseName\",\n action: () => submit(customAction),\n design: ButtonDesign.PrimarySmall\n});\nexport const modalButtonSubmitSend = (customAction?: () => Promise<boolean>): ModalButton => ({\n title: \"GlobalSubmitName\",\n action: () => submit(customAction),\n design: ButtonDesign.PrimarySmall\n});\nexport const modalButtonSubmitContinue = (customAction?: () => Promise<boolean>): ModalButton => ({\n title: \"Continue\",\n action: () => submit(customAction),\n design: ButtonDesign.PrimarySmall\n});\nexport const modalButtonSubmitContinueAnyways = (customAction?: () => Promise<boolean>): ModalButton => ({\n title: \"ModalButtonContinueAnywaysText\",\n action: () => submit(customAction),\n design: ButtonDesign.PrimarySmall\n});\nexport const modalButtonSubmitGetStarted = (customAction?: () => Promise<boolean>): ModalButton => ({\n title: \"GlobalGetStartedAction\",\n action: () => submit(customAction),\n design: ButtonDesign.PrimarySmall\n});\n\nexport const modalButtonDismissCancel = (customAction?: () => Promise<boolean>): ModalButton => ({\n title: \"Cancel\",\n action: () => dismiss(customAction),\n design: ButtonDesign.TextBrandMedium\n});\nexport const modalButtonEditPlaylistSave = (customAction?: () => Promise<boolean>): ModalButton => ({\n title: \"EditPlaylistSave\",\n action: () => submit(customAction),\n design: ButtonDesign.PrimarySmall\n});\n\nconst submit = async (customAction?: () => Promise<boolean>, data: string | null = null) => {\n if (!customAction || (await customAction()) === true) submitModal(\"Buttons.submit\", data);\n};\nconst dismiss = async (customAction?: () => Promise<boolean>, data: string | null = null) => {\n if (!customAction || (await customAction()) === true) dismissModal(\"Buttons.dismiss\", data);\n};\n","import type { ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\nimport type { ModalButton } from \".\";\nimport { dismissModal } from \".\";\nimport \"./Modal.scss\";\nimport { dispatch } from \"global\";\nimport { PAGE_CLICK } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { KeyboardKeyName, useAppMediaSize, usePageKey } from \"components/shared/hooks\";\nimport { Button } from \"components/atoms/controls/button\";\nimport { FormState } from \"components/atoms/controls/form/FormState\";\nimport { IconName } from \"components/atoms/icon\";\n\nexport interface Props {\n buttons?: ModalButton[];\n canClose?: boolean;\n hasXCloseButton?: boolean;\n children?: ComponentChildren;\n className?: string;\n onRequestClose?: () => Promise<boolean>;\n text?: string;\n title?: string;\n formState?: FormState;\n bottom?: ComponentChildren;\n}\n\nexport const Modal = ({\n formState: state = FormState.Default,\n buttons,\n canClose = true,\n hasXCloseButton = false,\n children,\n className,\n onRequestClose,\n text,\n title,\n bottom\n}: Props) => {\n const size = useAppMediaSize();\n const translations = useTranslations();\n\n const stopPropagation = (ev: MouseEvent) => {\n ev.stopPropagation();\n dispatch({ type: PAGE_CLICK, payload: { ev } });\n };\n\n const close = async () => {\n if (!onRequestClose || (await onRequestClose())) dismissModal(\"Modal.close\");\n };\n\n const backgroundClick = (ev: MouseEvent) => {\n stopPropagation(ev);\n if (canClose) close();\n };\n\n usePageKey((ev) => {\n if (!canClose) return;\n if (ev.key === KeyboardKeyName.Escape) {\n ev.stopPropagation();\n ev.preventDefault();\n close();\n }\n });\n\n return (\n <div className={`modal LQo --size-${size} --hasXCloseButton-${hasXCloseButton}`} onClick={backgroundClick}>\n <div className=\"scroll\">\n <div className=\"outer\">\n <div className={`content`} onClick={stopPropagation}>\n <div className={`inner ${className || \"\"}`}>\n {hasXCloseButton && <Button className=\"close\" icon={IconName.Close} onClick={close} />}\n {title && <h1 className=\"title\">{title}</h1>}\n {text && <div className=\"text\"> {text}</div>}\n {children}\n {buttons && (\n <div className=\"buttons\">\n {buttons.map((button) => (\n <div key={button.title} className=\"wrapper\">\n <Button disabled={state === FormState.Submiting} design={button.design} onClick={button.action}>\n {translations[button.title] ?? button.title}\n </Button>\n </div>\n ))}\n </div>\n )}\n {bottom && <div className=\"bottom\">{bottom}</div>}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n","export * from \"./AppModal\";\nexport * from \"./Modal\";\nexport * from \"./Buttons\";\n","import { h } from \"preact\";\nimport { Modal, modalButtonDismissCancel, modalButtonSubmitAdd, modalButtonSubmitAddAll, modalButtonSubmitAddMissing, openModal2 } from \"..\";\nimport { useTranslations } from \"global/config\";\nimport { DuplicatesHandling } from \"generated/graphql-types\";\n\nexport async function showAddDuplicatesModal(count: number, isCollection: boolean, isContainedCollection: boolean) {\n return openModal2(<AddDuplicatesModal count={count} isCollection={isCollection} isContainedCollection={isContainedCollection} />);\n}\n\nfunction AddDuplicatesModal(props: { count: number, isCollection: boolean, isContainedCollection: boolean }) {\n const translations = useTranslations();\n const text =\n props.isContainedCollection\n ? translations[\"MyMusicDuplicateExplanationTextAllMultipleTracks\"]\n : !props.isCollection\n ? translations[\"MyMusicDuplicateExplanationTextOneTrack\"]\n : translations[\"MyMusicDuplicateExplanationTextMultipleTracks\"].replace(\"${DuplicateTracks}\", props.count.toString());\n const buttons = !props.isCollection || props.isContainedCollection\n ? [modalButtonDismissCancel(), modalButtonSubmitAdd(DuplicatesHandling.AllowDuplicates)]\n : [modalButtonDismissCancel(), modalButtonSubmitAddAll(DuplicatesHandling.AllowDuplicates), modalButtonSubmitAddMissing(DuplicatesHandling.SkipDuplicates)];\n return (\n <Modal\n title={translations.MyMusicDuplicateTrackPrompTitle}\n text={text}\n buttons={buttons}\n />\n );\n}\n","import { h } from \"preact\";\nimport { Modal, modalButtonSubmitContinueAnyways, openModal } from \"..\";\nimport { useTranslations } from \"global/config\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\n\nexport async function showBrowserCompatibilityModal() {\n return openModal(<BrowserCompatibilityModal />);\n}\n\nexport function BrowserCompatibilityModal() {\n const submit = async () => {\n return true;\n };\n const translations = useTranslations();\n\n return (\n <Modal buttons={[modalButtonSubmitContinueAnyways(submit)]} onRequestClose={submit} title={translations.MessagesBrowserCompatibilityModalTitleWeb}>\n <div className=\"text\">\n <p>{translations.MessagesBrowserCompatibilityModalText1Web}</p>\n <p>{translations.MessagesBrowserCompatibilityModalText2Web}</p>\n <p>\n <Button design={ButtonDesign.TextBrandInline} externalUrl={translations.SettingsHelpUrl}>\n {translations.MessagesBrowserCompatibilityModalHelpButtonTextWeb}\n </Button>\n </p>\n </div>\n </Modal>\n );\n}\n\nexport async function showBrowserTooOldModal() {\n return openModal(<BrowserTooOldModal />);\n}\n\nexport function BrowserTooOldModal() {\n const submit = async () => {\n return true;\n };\n const translations = useTranslations();\n return (\n <Modal buttons={[modalButtonSubmitContinueAnyways(submit)]} onRequestClose={submit} title={translations.MessagesBrowserTooOldModalTitleWeb}>\n <div className=\"text\">\n <p>{translations.MessagesBrowserTooOldModalText1Web}</p>\n <p>{translations.MessagesBrowserTooOldModalText2Web}</p>\n <p>\n <Button design={ButtonDesign.TextBrandInline} externalUrl={translations.SettingsHelpUrl}>\n {translations.MessagesBrowserTooOldModalHelpButtonTextWeb}\n </Button>\n </p>\n </div>\n </Modal>\n );\n}\n","import { h } from \"preact\";\nimport { Modal, modalButtonSubmitOK, openModal } from \"..\";\nimport { WebAppBrand } from \"shared/models\";\nimport { environment } from \"services/environment\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\n\nexport async function showChromecastNotAvailableOnPWA() {\n return openModal(<ChromecastNotAvailableOnPWA />);\n}\n\nexport function ChromecastNotAvailableOnPWA() {\n const productName = `${environment.webAppBrand} Musik`;\n const url = environment.webAppBrand === WebAppBrand.YouSee ? \"https://musik.yousee.dk\" : \"https://musik.telmore.dk\";\n const urlName = environment.webAppBrand === WebAppBrand.YouSee ? \"musik.yousee.dk\" : \"musik.telmore.dk\";\n\n return (\n <Modal buttons={[modalButtonSubmitOK()]} className=\"chromecastNotAvailableOnPWA\" title={\"Chromecast ikke tilgængelig\"}>\n <p>På nuværende tidspunkt er Chromecast ikke tilgængelig på {productName} desktop-app.</p>\n <p>\n Du kan benytte Chromecast på \n <Button design={ButtonDesign.TextBrandInline} externalUrl={url}>\n {urlName}\n </Button>\n </p>\n <p>Beklager ulejligheden! Vi arbejder på at løse problemet.</p>\n </Modal>\n );\n}\n","import { h } from \"preact\";\nimport { Modal, modalButtonDismissCancel, modalButtonSubmitContinue, openModal } from \"..\";\nimport { useTranslations } from \"global/config\";\n\nexport async function showClearQueueModal() {\n return openModal(<ClearQueueModal />);\n}\n\nexport function ClearQueueModal() {\n const translations = useTranslations();\n return <Modal title={translations.QueueClearPrompTitle} text={translations.QueueClearPrompSubtitle} buttons={[modalButtonDismissCancel(), modalButtonSubmitContinue()]} />;\n}\n","import type { RefObject } from \"preact\";\nimport { createRef, h } from \"preact\";\nimport { useState, useCallback, useRef } from \"preact/hooks\";\nimport { Modal, modalButtonDismissCancel, modalButtonEditPlaylistSave, openModal, submitModal } from \"..\";\nimport { dispatch } from \"global\";\nimport { PLAYLIST_CREATED } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { catalog } from \"global/constants/catalog\";\nimport { mutateCreatePlaylist } from \"services/backend\";\nimport { PlaylistVisibility } from \"generated/graphql-types\";\nimport { FormState } from \"components/atoms/controls/form\";\nimport { TextInput, TextInputState } from \"components/atoms/controls/textInput\";\nimport { openToast } from \"components/organisms/toast\";\nimport { PlaylistCreatedToast, PlaylistNotCreatedToast } from \"components/organisms/toast/toasts\";\n\nexport function showCreatePlaylistModal() {\n return showCustomCreatePlaylistModal(null, null, null);\n}\n\nexport async function showCustomCreatePlaylistModal(title: string | null, subtitle: string | null, initialName: string | null) {\n const playlistIdRef = createRef<string | null>();\n const modalResult = await openModal(<CreatePlaylistModal title={title} subtitle={subtitle} resultRef={playlistIdRef} initialName={initialName} />);\n return {\n result: modalResult,\n playlistId: playlistIdRef.current\n };\n}\n\ninterface Props {\n title: string | null;\n subtitle: string | null;\n resultRef: RefObject<string | null>;\n initialName: string | null;\n}\n\nexport function CreatePlaylistModal({ title, subtitle, resultRef, initialName }: Props) {\n const ref = useRef<HTMLInputElement>(null);\n const translations = useTranslations();\n const [name, setName] = useState(initialName ?? \"\");\n const [formState, setFormState] = useState(FormState.Default);\n const [errorMessage, setErrorMessage] = useState(\"\");\n\n const doCreatePlaylist = useCallback(async () => {\n if (name.trim().length === 0) {\n setErrorMessage(translations.CreatePlaylistAlertText);\n ref.current?.focus();\n return false;\n }\n\n setFormState(FormState.Submiting);\n setErrorMessage(\"\");\n try {\n const newId = await mutateCreatePlaylist({\n input: {\n title: name.trim(),\n description: \"\",\n visibility: PlaylistVisibility.Public\n }\n });\n\n if (newId) {\n dispatch({\n type: PLAYLIST_CREATED,\n payload: {\n playlistId: newId\n }\n });\n openToast(PlaylistCreatedToast());\n\n resultRef.current = newId;\n\n return true;\n }\n } catch {\n /**/\n }\n\n setFormState(FormState.Default);\n openToast(PlaylistNotCreatedToast());\n return false;\n }, [name, resultRef, translations.CreatePlaylistAlertText]);\n\n const onKeyDown = useCallback(\n async (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n if (await doCreatePlaylist()) {\n submitModal(\"CreatePlaylistModal.onKeyDown\");\n }\n }\n },\n [doCreatePlaylist]\n );\n\n const onChange = useCallback((e: string) => {\n setName(e);\n if (e.trim()) {\n setErrorMessage(\"\");\n }\n }, []);\n\n return (\n <Modal\n formState={formState}\n title={title || translations.CreatePlaylistTitle}\n text={subtitle || translations.CreatePlaylistSubtitle}\n buttons={[modalButtonDismissCancel(), modalButtonEditPlaylistSave(doCreatePlaylist)]}>\n <p onKeyDown={onKeyDown}>\n <TextInput\n type=\"text\"\n maxLength={catalog.playlistTitleMaxLength}\n ref={ref}\n value={name}\n placeholder={translations.TypePlaylistName}\n autoComplete=\"off\"\n state={errorMessage ? TextInputState.Error : TextInputState.Default}\n message={errorMessage}\n onChange={onChange}\n autoFocus\n onFocus={() => {\n /**/\n }}\n />\n </p>\n </Modal>\n );\n}\n","import { h } from \"preact\";\nimport { Modal, modalButtonDismissCancel, modalButtonSubmitContinue, openModal } from \"..\";\nimport { useTranslations } from \"global/config\";\n\nexport async function showDeletePlaylistModal() {\n return openModal(<DeletePlaylistModal />);\n}\n\nexport function DeletePlaylistModal() {\n const translations = useTranslations();\n return (\n <Modal\n title={translations.MyMusicDeletePlaylistTitle}\n text={translations.MyMusicDeletePlaylistSubtitle}\n buttons={[modalButtonDismissCancel(), modalButtonSubmitContinue()]}\n />\n );\n}\n","import { h } from \"preact\";\nimport { Modal, modalButtonDismissCancel, modalButtonSubmitContinue, openModal } from \"..\";\nimport { translate, translateWithReplacement, useTranslations } from \"global/config\";\nimport { UserProfileModel } from \"models/app\";\n\nexport async function showDeleteProfileModal(profile: UserProfileModel) {\n return openModal(<DeleteProfileModal profile={profile} />);\n}\n\nexport function DeleteProfileModal(props: Readonly<{ profile: UserProfileModel }>) {\n return <Modal\n title={translate(\"DeleteProfileTitle\")}\n text={translateWithReplacement(\"DeleteProfileSubtitle\", \"profileName\", props.profile.title)}\n buttons={[modalButtonDismissCancel(), modalButtonSubmitContinue()]}\n />;\n}\n","import { h } from \"preact\";\nimport { Modal, modalButtonSubmitOK, openModal } from \"..\";\nimport { useTranslations } from \"global/config\";\n\nexport async function showErrorModal() {\n return openModal(<ErrorModal />);\n}\n\nexport async function showErrorModal2(title: string, subtitle: string) {\n return openModal(<Modal title={title} text={subtitle} buttons={[modalButtonSubmitOK()]} />);\n}\n\nexport function ErrorModal() {\n const translations = useTranslations();\n return <Modal title={translations.FeedbackFailedTitle} text={translations.DialogBoxErrorText} buttons={[modalButtonSubmitOK()]} />;\n}\n","import { h } from \"preact\";\nimport { Modal, modalButtonTryAgain, openModal } from \"..\";\nimport { modalButtonDismissCancel } from \"../Buttons\";\nimport { useTranslations } from \"global/config\";\n\nexport async function showErrorTryAgainModal() {\n return openModal(<ErrorTryAgainModal />);\n}\n\nexport function ErrorTryAgainModal() {\n const translations = useTranslations();\n return <Modal title={translations.FeedbackFailedTitle} text={translations.FeedbackFailedSubtitle} buttons={[modalButtonDismissCancel(), modalButtonTryAgain()]} />;\n}\n","import { h } from \"preact\";\nimport { useRef, useState } from \"preact/hooks\";\nimport \"./InAppFeedbackModal.scss\";\nimport { Modal, modalButtonSubmitSend, openModal } from \"..\";\nimport { useTranslations } from \"global/config\";\nimport { FormState } from \"components/atoms/controls/form\";\nimport { InAppFeedback } from \"components/organisms/inAppFeedback\";\nimport { useHasPrivacyLabel, InAppFeedbackPrivacyLabel } from \"components/organisms/inAppFeedback/InAppFeedbackPrivacyLabel\";\n\nexport async function showInAppFeedbackModal() {\n return openModal(<InAppFeedbackModal />);\n}\n\nexport function InAppFeedbackModal() {\n const submitFn = useRef<() => Promise<boolean>>(null);\n const dismissFn = useRef<() => Promise<boolean>>(null);\n const translations = useTranslations();\n\n const submit = async () => {\n if (submitFn.current) return submitFn.current();\n else return true;\n };\n\n const dismiss = async () => {\n if (dismissFn.current) return dismissFn.current();\n else return false;\n };\n\n const [formState, setFormState] = useState(FormState.Default);\n const hasPrivacyLabel = useHasPrivacyLabel();\n return (\n <Modal\n buttons={[modalButtonSubmitSend(submit)]}\n className=\"inAppFeedbackModal\"\n formState={formState}\n hasXCloseButton\n onRequestClose={dismiss}\n title={translations.SettingsFeedbackTitle}\n bottom={hasPrivacyLabel && <InAppFeedbackPrivacyLabel />}>\n <InAppFeedback onFromStateChange={setFormState} submit={submitFn} dismiss={dismissFn} />\n </Modal>\n );\n}\n","import { h } from \"preact\";\nimport { Modal, modalButtonSubmitClose, openModal } from \"..\";\nimport { useTranslations } from \"global/config\";\n\nexport async function showInAppFeedbackSubmitModal() {\n return openModal(<InAppFeedbackSubmitModal />);\n}\n\nexport function InAppFeedbackSubmitModal() {\n const translations = useTranslations();\n return <Modal title={translations.FeedbackSuccessModalTitleWeb} text={translations.FeedbackSuccessModalTextWeb} buttons={[modalButtonSubmitClose()]} />;\n}\n","import { h } from \"preact\";\nimport type { ModalButton } from \"..\";\nimport { Modal, dismissModal, modalButtonSubmitOK, openModal } from \"..\";\nimport { dispatch } from \"global\";\nimport { USER_LOGIN_ERROR } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { ButtonDesign } from \"components/atoms/controls/button\";\nimport { showLoginUi } from \"components/organisms/login\";\nimport { useInviteFlowHelpUrl } from \"services/backend\";\n\nexport function showLoginErrorModal(errorcode: number, hasBeenPoked?: boolean) {\n dispatch({\n type: USER_LOGIN_ERROR,\n payload: {\n error: errorcode\n }\n });\n return openModal(errorcode === 3 ? <NoMusicRightsModal hasBeenPoked={hasBeenPoked} /> : <GeneralLoginErrorModal />);\n}\n\nfunction GeneralLoginErrorModal() {\n const translations = useTranslations();\n return <Modal hasXCloseButton title={translations.LoginErrorHeader} text={translations.LoginErrorTextSomethingWentWrong} buttons={[modalButtonSubmitOK()]} />;\n}\n\nfunction NoMusicRightsPokedBeforeModal() {\n const translations = useTranslations();\n const { model: inviteFlowReadMoreLink } = useInviteFlowHelpUrl({});\n const onDismissal = () => {\n dismissModal(\"InviteFlowModal\");\n };\n\n const noMusicRightsButtons: ModalButton[] = [\n {\n title: \"GlobalCloseName\",\n action: onDismissal,\n design: ButtonDesign.TextBrandMedium\n },\n {\n title: \"SentryCutOffNoMusicRightsReadMoreOption\",\n action: () => {\n window.open(inviteFlowReadMoreLink as string, \"_blank\");\n },\n design: ButtonDesign.PrimarySmall\n }\n ];\n return <Modal title={translations.SentryCutOffNoMusicRightsTitle} text={translations.SentryCutOffNoMusicRightsSubtitle} buttons={noMusicRightsButtons} />;\n}\n\nfunction NoMusicRightsModal({ hasBeenPoked }: { hasBeenPoked?: boolean }) {\n const noMusicRightsButtons: ModalButton[] = [\n {\n title: \"LoginWithAnotherLogin\",\n action: () => {\n dismissModal(\"LoginWithAnotherLogin\");\n showLoginUi();\n },\n design: ButtonDesign.TextBrandMedium\n }\n ];\n const translations = useTranslations();\n return hasBeenPoked ? (\n <NoMusicRightsPokedBeforeModal />\n ) : (\n <Modal hasXCloseButton title={translations.LoginNoMusicRights} text={translations.LoginNoMusicRightsSubTitle} buttons={noMusicRightsButtons} />\n );\n}\n","import { h } from \"preact\";\nimport { useSelector } from \"react-redux\";\nimport { Modal, modalButtonSubmitMaintenance, openModal } from \"..\";\nimport type { RootModel } from \"models/app\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\n\nexport async function showMaintenanceModal() {\n return openModal(<MaintenanceModal />);\n}\n\nconst MaintenanceModal = () => {\n const AppMaintenanceLinkTitle = useSelector((root: RootModel) => root.notifications.maintenanceBannerData?.AppMaintenanceLinkTitle);\n const AppMaintenanceLinkUrl = useSelector((root: RootModel) => root.notifications.maintenanceBannerData?.AppMaintenanceLinkUrl);\n const AppMaintenancePopupText = useSelector((root: RootModel) => root.notifications.maintenanceBannerData?.AppMaintenancePopupText);\n const AppMaintenancePopupTitle = useSelector((root: RootModel) => root.notifications.maintenanceBannerData?.AppMaintenancePopupTitle);\n const submit = async () => true;\n const showButton = AppMaintenanceLinkUrl != null && AppMaintenanceLinkUrl.trim().length > 0;\n\n return (\n <Modal buttons={[modalButtonSubmitMaintenance(submit)]} onRequestClose={submit} title={AppMaintenancePopupTitle}>\n <div className=\"text\">\n <p>{AppMaintenancePopupText}</p>\n {showButton && (\n <p>\n <Button design={ButtonDesign.TextBrandInline} externalUrl={AppMaintenanceLinkUrl}>\n {AppMaintenanceLinkTitle}\n </Button>\n </p>\n )}\n </div>\n </Modal>\n );\n};\n","import { dismissModal, Modal, openModal } from \"components/organisms/modal\";\nimport { ButtonDesign } from \"components/atoms/controls/button\";\nimport { h } from \"preact\";\nimport { useTranslations } from \"global/config\";\nimport { useInviteFlowHelpUrl } from \"services/backend\";\nimport { getCookie, setCookie } from \"services/cookies\";\nimport { NOTIFICATION_BANNER_TOGGLE, SENTRY_CUTOFF_SHOWN } from \"global/actions\";\nimport { dispatch } from \"global\";\nimport { BannerWarning } from \"models/app\";\n\nexport const INVITE_NEEDED_MODAL_PROMPTED = \"inviteNeededPrompted\";\nexport const showInviteFlowModal = () => {\n const gracePeriod = 1000 * 60 * 60 * 24 * 3;\n const lastInvite = getCookie(INVITE_NEEDED_MODAL_PROMPTED);\n const lastInviteDate = new Date(lastInvite ?? \"\");\n\n dispatch({ type: NOTIFICATION_BANNER_TOGGLE, payload: { warning: BannerWarning.SentryCutoff, show: true } });\n\n if (new Date().getTime() > gracePeriod + lastInviteDate.getTime() || !lastInvite) {\n setCookie(INVITE_NEEDED_MODAL_PROMPTED, new Date().toString());\n return openModal(<InviteFlowModal />);\n }\n return null;\n};\n\nconst InviteFlowModal = () => {\n const translations = useTranslations();\n const { model: inviteFlowReadMoreLink } = useInviteFlowHelpUrl({});\n\n return (\n <Modal\n buttons={[\n {\n title: \"SentryCutOffRemindLaterOption\",\n action: () => {\n dispatch({\n type: SENTRY_CUTOFF_SHOWN,\n payload: {\n action: \"SentryCutOffRemindMeLaterAction\"\n }\n });\n dismissModal(\"InviteFlowModal\");\n },\n design: ButtonDesign.TextBrandMedium\n },\n {\n title: \"SentryCutOffReadMoreOption\",\n action: () => {\n window.open(inviteFlowReadMoreLink as string, \"_blank\");\n dispatch({\n type: SENTRY_CUTOFF_SHOWN,\n payload: {\n action: \"SentryCutOffReadMoreAction\"\n }\n });\n dismissModal(\"InviteFlowModal\");\n },\n design: ButtonDesign.PrimarySmall\n }\n ]}\n title={translations[\"SentryCutOffTitle\"]}>\n <div className=\"text\">\n <p>{translations[\"SentryCutOffSubtitle\"]}</p>\n </div>\n </Modal>\n );\n};\n\nexport default InviteFlowModal;\n","import { h } from \"preact\";\nimport { Modal, modalButtonSubmitClose, openModal } from \"..\";\nimport { dispatch } from \"global\";\nimport { NOTIFICATION_PWA_INSTALL_MESSAGE_WAITING } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\n\nexport async function showPwaInstallMessageModal() {\n return openModal(<PwaInstallMessageModal />);\n}\n\nexport function PwaInstallMessageModal() {\n const translations = useTranslations();\n const submit = async () => {\n dispatch({ type: NOTIFICATION_PWA_INSTALL_MESSAGE_WAITING, payload: { waiting: false } });\n return true;\n };\n\n return (\n <Modal buttons={[modalButtonSubmitClose(submit)]} className=\"pwaInstallMessageModal\" onRequestClose={submit} title={translations.MessagesPwaInstallModalTitleWeb}>\n <p>{translations.MessagesPwaInstallModalTextWeb}</p>\n </Modal>\n );\n}\n","import { h } from \"preact\";\nimport { useState, useCallback, useRef } from \"preact/hooks\";\nimport { dismissModal, Modal, modalButtonDismissCancel, modalButtonEditPlaylistSave, openModal } from \"..\";\nimport { dispatch } from \"global\";\nimport { PLAYLIST_MODIFIED } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { catalog } from \"global/constants/catalog\";\nimport { mutateModifyPlaylist } from \"services/backend\";\nimport type { PlaylistPageModel, PlaylistPreviewModel } from \"models/domain\";\nimport { FormState } from \"components/atoms/controls/form\";\nimport { TextInput, TextInputState } from \"components/atoms/controls/textInput\";\nimport { openToast } from \"components/organisms/toast\";\nimport { PlaylistNotSavedToast, PlaylistSavedToast } from \"components/organisms/toast/toasts\";\n\nexport async function showRenamePlaylistModal(playlist: PlaylistPreviewModel | PlaylistPageModel) {\n return openModal(<RenamePlaylistModal playlist={playlist} />);\n}\n\ninterface Props {\n playlist: PlaylistPreviewModel | PlaylistPageModel;\n}\n\nexport function RenamePlaylistModal(props: Props) {\n const originalTitle = props.playlist.title;\n const translations = useTranslations();\n const ref = useRef<HTMLInputElement>(null);\n const [name, setName] = useState(originalTitle);\n const [formState, setFormState] = useState(FormState.Default);\n const [errorMessage, setErrorMessage] = useState(\"\");\n\n const doRenamePlaylist = useCallback(async () => {\n if (name.trim().length === 0) {\n setErrorMessage(translations.CreatePlaylistAlertText);\n ref.current?.focus();\n return false;\n }\n\n if (name === originalTitle) {\n return true;\n }\n\n setFormState(FormState.Submiting);\n setErrorMessage(\"\");\n try {\n const id = await mutateModifyPlaylist({\n id: props.playlist.id,\n input: {\n title: name\n }\n });\n\n if (id) {\n dispatch({\n type: PLAYLIST_MODIFIED,\n payload: {\n playlistId: id,\n playlist: {\n title: name\n }\n }\n });\n openToast(PlaylistSavedToast());\n return true;\n }\n } catch {\n /**/\n }\n\n setFormState(FormState.Default);\n openToast(PlaylistNotSavedToast());\n return false;\n }, [name, props.playlist, originalTitle, translations.CreatePlaylistAlertText]);\n\n const onKeyDown = useCallback(\n async (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n if (await doRenamePlaylist()) {\n dismissModal(\"RenamePlaylistModal.onKeyDown\");\n }\n }\n },\n [doRenamePlaylist]\n );\n\n const onChange = useCallback((e: string) => {\n setName(e);\n if (e.trim()) {\n setErrorMessage(\"\");\n }\n }, []);\n\n return (\n <Modal\n formState={formState}\n title={translations.MyMusicRenamePlaylistTitle}\n text={translations.MyMusicRenamePlaylistSubtitle}\n buttons={[modalButtonDismissCancel(), modalButtonEditPlaylistSave(doRenamePlaylist)]}>\n <p onKeyDown={onKeyDown}>\n <TextInput\n type=\"text\"\n maxLength={catalog.playlistTitleMaxLength}\n ref={ref}\n value={name}\n placeholder={translations.MyMusicRenamePlaylistHint}\n autoComplete=\"off\"\n state={errorMessage ? TextInputState.Error : TextInputState.Default}\n message={errorMessage}\n onChange={onChange}\n autoFocus\n onFocus={() => {\n /**/\n }}\n />\n </p>\n </Modal>\n );\n}\n","import { dismissModal, Modal, openModal } from \"components/organisms/modal\";\nimport { ButtonDesign } from \"components/atoms/controls/button\";\nimport { h } from \"preact\";\nimport { useTranslations } from \"global/config\";\n\nexport const showYourYearModal = () => {\n return openModal(<YourYearModal />);\n};\n\nconst YourYearModal = () => {\n\n const translations = useTranslations();\n return (\n <Modal buttons={[\n {\n title: \"YourYearBannerPopupClose\",\n action: () => dismissModal('YourYearModal'),\n design: ButtonDesign.PrimarySmall\n }\n ]} title={translations['YourYearBannerPopupTitle']}>\n <div className=\"text\">\n <p>{translations['YourYearBannerPopupSubTitle']}</p>\n </div>\n </Modal>\n );\n};\n\nexport default YourYearModal;","export * from \"./AddDuplicatesModal\";\nexport * from \"./BrowserCompatibilityModal\";\nexport * from \"./ChromecastNotAvailableOnPWA\";\nexport * from \"./ClearQueueModal\";\nexport * from \"./CreatePlaylistModal\";\nexport * from \"./DeletePlaylistModal\";\nexport * from \"./DeleteProfileModal\";\nexport * from \"./ErrorModal\";\nexport * from \"./ErrorTryAgainModal\";\nexport * from \"./InAppFeedbackModal\";\nexport * from \"./InAppFeedbackSubmitModal\";\nexport * from \"./MaintenanceModal\";\nexport * from \"./LoginErrorModals\";\nexport * from \"./PwaInstallMessageModal\";\nexport * from \"./RenamePlaylistModal\";\nexport * from \"./YourYearModal\";\n\n","import { Fragment, h } from \"preact\";\nimport { useCallback, useMemo, useRef } from \"preact/hooks\";\nimport \"./NotificationFeed.scss\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL, NOTIFICATION_FEED_NOTIFICATION_CONVERTED } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport { log, LogTag } from \"services/logger\";\nimport { useCurrentNotifications } from \"services/notificationFeed\";\nimport { getNextUUID } from \"services/utils\";\nimport type { DragProps } from \"models/app\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { NotificationConversion } from \"models/domain/NotificationModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { NavigationPageRootName } from \"models/view/navigationStack\";\nimport { useFakePageContext, useResizeObserver, useSectionContext } from \"components/shared/hooks\";\nimport { CoverSize } from \"components/atoms/cover\";\nimport { PreviewAction } from \"components/molecules/preview\";\nimport { ResourcePreviewRow } from \"components/molecules/preview/rows\";\n\ninterface Props {\n showHeadline: boolean;\n}\n\nexport const NotificationFeed = ({ showHeadline }: Props) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const translations = useTranslations();\n const width = useResizeObserver(containerRef.current)?.width ?? null;\n\n const dragProps: DragProps = useMemo(() => ({ dragSourceId: getNextUUID() }), []);\n\n const page = useFakePageContext({ type: ContentType.NotificationFeed, resource: null, root: NavigationPageRootName.NotificationFeed, done: true });\n const section = useSectionContext(ContentType.NotificationFeed, null, page, null, null);\n\n const { feed, newNotifications, lastWeeksNotifications, thisMonthsNotifications, lastMonthsNotifications, previousNotifications } = useCurrentNotifications();\n\n const hasNew = newNotifications.length != 0;\n const hasLastWeek = lastWeeksNotifications.length != 0;\n const hasThisMonth = thisMonthsNotifications.length != 0;\n const hasLastMonth = lastMonthsNotifications.length != 0;\n const hasPreviously = previousNotifications.length != 0;\n\n const onPreviewAction = useCallback(\n (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => {\n if (action === PreviewAction.Navigate) dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n\n if (!feed) return;\n const resource = preview.resource;\n if (resource?.contentType !== ContentType.Notification) return;\n\n if (action === PreviewAction.Play && conversion === null) conversion = NotificationConversion.Play;\n if (action === PreviewAction.Navigate && conversion === null) conversion = NotificationConversion.Navigate;\n if (conversion == null) return;\n\n log.info({ code: \"web-220926-1511\", msg: \"notification\", data: { converted: resource.title, conversion }, tags: [LogTag.Notifications] });\n\n dispatch({ type: NOTIFICATION_FEED_NOTIFICATION_CONVERTED, payload: { converted: resource, conversion } });\n },\n [feed]\n );\n\n // console.log(hasNew, hasLastWeek, hasThisMonth, hasLastMonth, hasPreviously)\n\n return (\n <div ref={containerRef} className={`notificationFeed R6O`}>\n {hasNew && (\n <Fragment>\n <div className=\"new\">\n <h2>{translations.NotificationFeedNewNotificationsTitle}</h2>\n {newNotifications.map((notification, i) => (\n <ResourcePreviewRow\n key={notification.id}\n resource={notification}\n context={section}\n dragProps={dragProps}\n rank={i}\n dropProps={null}\n size={CoverSize.Size64}\n width={width}\n disableLazyLoad={false}\n onAction={onPreviewAction}\n />\n ))}\n </div>\n </Fragment>\n )}\n {hasLastWeek && (\n <Fragment>\n <div className=\"lastweek\">\n <h2>{translations.NotificationFeedLastWeekTitle}</h2>\n {lastWeeksNotifications.map((notification, i) => (\n <ResourcePreviewRow\n key={notification.id}\n resource={notification}\n context={section}\n dragProps={dragProps}\n rank={i}\n dropProps={null}\n size={CoverSize.Size64}\n width={width}\n disableLazyLoad={false}\n onAction={onPreviewAction}\n />\n ))}\n </div>\n </Fragment>\n )}\n {hasThisMonth && (\n <Fragment>\n <div className=\"thismonth\">\n <h2>{translations.NotificationFeedThisMonthTitle}</h2>\n {thisMonthsNotifications.map((notification, i) => (\n <ResourcePreviewRow\n key={notification.id}\n resource={notification}\n context={section}\n dragProps={dragProps}\n rank={i}\n dropProps={null}\n size={CoverSize.Size64}\n width={width}\n disableLazyLoad={false}\n onAction={onPreviewAction}\n />\n ))}\n </div>\n </Fragment>\n )}\n {hasLastMonth && (\n <Fragment>\n <div className=\"lastmonth\">\n <h2>{translations.NotificationFeedLastMonthTitle}</h2>\n {lastMonthsNotifications.map((notification, i) => (\n <ResourcePreviewRow\n key={notification.id}\n resource={notification}\n context={section}\n dragProps={dragProps}\n rank={i}\n dropProps={null}\n size={CoverSize.Size64}\n width={width}\n disableLazyLoad={false}\n onAction={onPreviewAction}\n />\n ))}\n </div>\n </Fragment>\n )}\n {hasPreviously && (\n <Fragment>\n <div className=\"previously\">\n <h2>{translations.NotificationFeedPreviousNotificationsTitle}</h2>\n {previousNotifications.map((notification, i) => (\n <ResourcePreviewRow\n key={notification.id}\n resource={notification}\n context={section}\n dragProps={dragProps}\n rank={i}\n dropProps={null}\n size={CoverSize.Size64}\n width={width}\n disableLazyLoad={false}\n onAction={onPreviewAction}\n />\n ))}\n </div>\n </Fragment>\n )}\n </div>\n );\n};\n","export * from \"./NotificationFeed\";\n","import { h } from \"preact\";\nimport { useState } from \"preact/hooks\";\nimport \"./PlayerDesktop.scss\";\nimport { dispatch } from \"global\";\nimport { PLAYER_SEEK } from \"global/actions\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { PlayRange, RangeType } from \"components/atoms/controls/playRange\";\nimport { DesktopPlayerPrimaryControls } from \"components/molecules/playerPrimaryControl\";\nimport { DesktopPlayerSecondaryControls } from \"components/molecules/playerSecondaryControl\";\nimport { DesktopPlayerTrackControl } from \"components/molecules/playerTrackControl\";\n\ninterface Props {\n className?: string;\n showQueue: boolean;\n toggleQueue: () => void;\n}\nexport const PlayerDesktop = ({ className, showQueue, toggleQueue }: Props) => {\n const [seekPosition, setSeekPosition] = useState<number | null>(null);\n const seekChange = (percent: number) => dispatch({ type: PLAYER_SEEK, payload: { percent, context: { action: AudioContextAction.UserPlayerSeek, trace: null } } });\n\n return (\n <div tabIndex={-1} className={`playerDesktop EmA ${className ?? \"\"}`}>\n <PlayRange type={RangeType.Desktop} onChange={seekChange} onSeekPositionChange={setSeekPosition} />\n <div className=\"controls\">\n <DesktopPlayerTrackControl />\n <DesktopPlayerPrimaryControls />\n <DesktopPlayerSecondaryControls showQueue={showQueue} toggleQueue={toggleQueue} seekPosition={seekPosition} />\n </div>\n </div>\n );\n};\n","export * from \"./PlayerDesktop\";\n","import { h, Fragment } from \"preact\";\nimport { useState, useLayoutEffect, useEffect, useRef, useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./PlayerMaxi.scss\";\nimport { dispatch } from \"global\";\nimport { PLAYER_SEEK, SET_MAXIPLAYER_OPEN, TOGGLE_MAXIPLAYER_QUEUE_OPEN } from \"global/actions\";\nimport { animations } from \"global/constants\";\nimport { useMessageBus } from \"global/hooks\";\nimport type { RootModel } from \"models/app\";\nimport { MobileMaxiPlayerOpen } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { ContentType } from \"models/ModelType\";\nimport {\n useDelay,\n DelayType,\n useCurrentAudioSecondaryResourceFromState,\n useCurrentLanePrimaryResourceFromState,\n useSectionContext,\n usePreviewContext\n} from \"components/shared/hooks\";\nimport { CoverSize, ResourceCover } from \"components/atoms/cover\";\nimport { PlayableLoadSpinner } from \"components/atoms/spinner\";\nimport { MaxiPlayerTopBar } from \"components/molecules/pageTopBar/mobile/topBars\";\nimport { MaxiPlayerPrimaryControl } from \"components/molecules/playerPrimaryControl\";\nimport { MaxiPlayerSecondaryControl } from \"components/molecules/playerSecondaryControl\";\nimport { MaxiPlayerTrackControl } from \"components/molecules/playerTrackControl\";\nimport SeekBar from \"components/molecules/seekBar\";\nimport { Queue } from \"components/organisms/queue\";\n\n// todo: move this one to something similar to bottom sheet\n// todo this component should be simplified/refactored\nexport const PlayerMaxi = () => {\n // const preview = usePreviewContext(resource.contentType, resource, context, null);\n const openFromState = useSelector((root: RootModel) => root.ui.layout.mobileMaxiPlayerOpen);\n const [open, setOpen] = useState(false);\n const [showQueue, setShowQueue] = useState(false);\n const toggleQueue = useCallback(() => setShowQueue(!showQueue), [showQueue]);\n\n useLayoutEffect(() => {\n switch (openFromState) {\n case MobileMaxiPlayerOpen.Open: {\n setOpen(true);\n break;\n }\n case MobileMaxiPlayerOpen.Closed: {\n setOpen(false);\n setTimeout(() => setShowQueue(false), animations.durationLong);\n break;\n }\n }\n }, [openFromState]);\n\n useMessageBus(\"SET_DESKTOP_LYRICS_VISIBLE\", msg => {\n if (msg.payload.open) {\n dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Closed } });\n }\n });\n\n const seekChange = (percent: number) => dispatch({ type: PLAYER_SEEK, payload: { percent, context: { action: AudioContextAction.UserPlayerSeek, trace: null } } });\n const closeMaxiPlayer = useCallback(() => {\n dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Closed } });\n }, []);\n const [closedDelay, setClosedDelay] = useState(false);\n\n useEffect(() => {\n setClosedDelay(false);\n if (open) return;\n const timeOutId = window.setTimeout(() => setClosedDelay(true), animations.durationLong);\n return () => window.clearTimeout(timeOutId);\n }, [open]);\n\n const closed = closedDelay && !open;\n const openDelay = useDelay({ delay: { type: DelayType.TimeOut, msec: 0 }, reset: closed }) && open;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n\n const { resource, resourceType } = useCurrentAudioSecondaryResourceFromState();\n const { resource: imageResource, type: imageType } = useCurrentLanePrimaryResourceFromState();\n\n const sectionContext = useSectionContext(ContentType.Player, null, null, null, null);\n const context = usePreviewContext(resourceType, resource, sectionContext, null);\n const imageContext = usePreviewContext(imageType, imageResource, sectionContext, null);\n\n useMessageBus(TOGGLE_MAXIPLAYER_QUEUE_OPEN, () => {\n toggleQueue();\n });\n\n if (closed) return null;\n\n return (\n <div ref={containerRef} className={`playerMaxi OnK --show-${openDelay}`}>\n <div className=\"background\" onClick={closeMaxiPlayer} />\n <div className=\"container\">\n <div className={`player --showQueue-${showQueue}`} ref={playerRef}>\n <MaxiPlayerTopBar showQueue={showQueue} />\n <div className={`playerContainer --showQueue-${showQueue}`}>\n {!showQueue ? (\n <>\n <ResourceCover\n onClick={closeMaxiPlayer}\n size={CoverSize.Size512}\n dynamicSize\n disableLazyLoad\n rounding={undefined}\n context={imageContext ?? context}>\n <PlayableLoadSpinner />\n </ResourceCover>\n <MaxiPlayerTrackControl />\n <SeekBar onChange={seekChange} />\n </>\n ) : (\n <Queue onCurrentTrackClick={toggleQueue} queueOpen={showQueue} />\n )}\n </div>\n <MaxiPlayerPrimaryControl showQueue={showQueue} />\n <MaxiPlayerSecondaryControl showQueue={showQueue} />\n </div>\n </div>\n </div>\n );\n};\n","export * from \"./PlayerMaxi\";\n","import { h } from \"preact\";\nimport { useCallback, useEffect, useState } from \"preact/compat\";\nimport { useSelector } from \"react-redux\";\nimport \"./PlayerMini.scss\";\nimport { dispatch } from \"global\";\nimport { PLAYER_TOGGLE_PLAY, SET_DESKTOP_LYRICS_VISIBLE, SET_MAXIPLAYER_OPEN, SET_MINIPLAYER_OPEN } from \"global/actions\";\nimport { animations, TestLocator } from \"global/constants\";\nimport { useMessageBus } from \"global/hooks\";\nimport { getPlayIconMobileMini } from \"services/player/controllers/service/helpers/icons\";\nimport type { RootModel } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { MobileMaxiPlayerOpen } from \"models/app/UiModel\";\nimport { ContentType } from \"models/ModelType\";\nimport {\n useAudioProperties,\n DelayType,\n useDelay,\n useCurrentLanePrimaryResourceFromState,\n useSectionContext,\n usePreviewContext,\n useCurrentAudioSecondaryResourceFromState,\n useOnRightClickContextMenu\n} from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { PlayRange, RangeType } from \"components/atoms/controls/playRange\";\nimport { CoverRounding, CoverSize } from \"components/atoms/cover\";\nimport { PlayableLoadSpinner } from \"components/atoms/spinner\";\nimport { ResourceCard } from \"components/molecules/resource\";\n\ninterface Props {\n className?: string;\n}\n\nexport const PlayerMini = ({ className }: Props) => {\n const { resource, resourceType } = useCurrentAudioSecondaryResourceFromState();\n const { resource: imageResource, type: imageType } = useCurrentLanePrimaryResourceFromState();\n\n const sectionContext = useSectionContext(ContentType.Player, null, null, null, null);\n const context = usePreviewContext(resourceType, resource, sectionContext, null);\n const imageContext = usePreviewContext(imageType, imageResource, sectionContext, null);\n\n const [open, setOpen] = useState(true);\n\n useEffect(() => {\n setOpen(resource != null);\n }, [resource]);\n\n const { playState, canPlay, canPause } = useAudioProperties();\n\n const handlePlayerClick = useCallback(() => {\n dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Open } });\n dispatch({ type: SET_DESKTOP_LYRICS_VISIBLE, payload: { open: false } });\n }, []);\n useMessageBus(SET_MINIPLAYER_OPEN, (message) => setOpen(message.payload.open));\n const [closedDelay, setClosedDelay] = useState(false);\n\n useEffect(() => {\n setClosedDelay(false);\n if (open) return;\n const timeOutId = window.setTimeout(() => setClosedDelay(true), animations.durationLong);\n return () => window.clearTimeout(timeOutId);\n }, [open]);\n\n const closed = closedDelay && !open;\n const openDelay = useDelay({ delay: { type: DelayType.TimeOut, msec: 0 }, reset: closed }) && open;\n\n const input = useSelector((root: RootModel) => root.player.input);\n\n const playerTogglePLay = useCallback(() => dispatch({ type: PLAYER_TOGGLE_PLAY, payload: { context: { action: AudioContextAction.UserPlayerTogglePlay, trace: null } } }), []);\n\n const { onContextMenu } = useOnRightClickContextMenu(context, resource, sectionContext);\n\n if (closed) return null;\n return (\n <Button className={`playerMini Jo1 ${className ?? \"\"} --show-${openDelay} `} design={ButtonDesign.PlayableRow} onClick={handlePlayerClick} onContextMenu={onContextMenu}>\n <PlayRange type={RangeType.MobileMini} />\n <div className=\"track\">\n <ResourceCard size={CoverSize.Size64} rounding={CoverRounding.None} context={context} imageContext={imageContext} scrollingText={true} disableLazyLoad>\n <PlayableLoadSpinner />\n </ResourceCard>\n <Button\n className={\"play\"}\n disabled={!canPlay && !canPause}\n onClick={playerTogglePLay}\n icon={getPlayIconMobileMini(playState, input)}\n testLocator={TestLocator.PlayerPlayPauseButton}\n />\n </div>\n </Button>\n );\n};\n","export * from \"./PlayerMini\";\n","import { h } from \"preact\";\nimport { useSelector } from \"react-redux\";\nimport \"./Queue.scss\";\nimport { LiveRadioQueue } from \"./liveRadioQueue\";\nimport { TrackQueue } from \"./trackQueue\";\nimport { useLoginState } from \"services/user\";\nimport { LoginState, type RootModel } from \"models/app\";\nimport { AudioInputType } from \"models/app/player\";\n\ninterface Props {\n onCurrentTrackClick?: () => void;\n onCurrentCoverClick?: () => void;\n queueOpen: boolean;\n disableFade?: boolean;\n}\n\nexport const Queue = (props: Props) => {\n const isInputLiveRadio = useSelector((root: RootModel) => root.player.input) === AudioInputType.LiveRadio;\n const loginStateIsKnown = useLoginState() !== LoginState.Unknown;\n if (!loginStateIsKnown) return null;\n if (isInputLiveRadio) return <LiveRadioQueue disableFade={props.disableFade} />;\n return <TrackQueue {...props} />;\n};\n","export * from \"./Queue\";\n","import { h } from \"preact\";\nimport { log, DefaultLogMessage } from \"services/logger\";\nimport { ContentType } from \"models/ModelType\";\nimport { useCurrentAudioSecondaryResourceFromState, useLinkContextsFromPreview, usePreviewContext, useSectionContext } from \"components/shared/hooks\";\nimport { ItemGroup } from \"components/molecules/itemGroup/ItemGroup\";\nimport { PreviewDisplayType } from \"components/molecules/preview\";\nimport { ResourceLink, ResourceTextDesign } from \"components/molecules/resource\";\n\nexport const LiveRadioQueueTopBar = () => {\n const sectionContext = useSectionContext(ContentType.Queue, null, null, null, null);\n const { resource, resourceType } = useCurrentAudioSecondaryResourceFromState();\n\n const context = usePreviewContext(resourceType, resource, sectionContext, null);\n const linkModels = useLinkContextsFromPreview(context, PreviewDisplayType.Headline);\n\n if (linkModels.length === 0) log.error({ code: \"web-220223-1412\", msg: DefaultLogMessage.UnexpectedValue, data: { resourceType } });\n\n const links = linkModels.map((group, groupIndex) => <ResourceLink links={group} key={groupIndex} design={ResourceTextDesign.PrimaryBig} testLocatorName={groupIndex} />);\n\n return (\n <div className=\"queueActions\">\n <ItemGroup title={links[0]} scrollingText={true} />\n </div>\n );\n};\n","import { Fragment, h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { LiveRadioQueueTopBar } from \"./LiveRadioActions\";\nimport { useTranslations } from \"global/config\";\nimport { animations } from \"global/constants\";\nimport { getNextUUID } from \"services/utils\";\nimport type { DragProps, RootModel } from \"models/app\";\nimport type { TrackPlayableModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize, useRefUpdate, useSectionContext, useTrackPlayables } from \"components/shared/hooks\";\nimport { CoverSize } from \"components/atoms/cover\";\nimport { ResourcePreviewRow } from \"components/molecules/preview/rows\";\nimport { QueueListView } from \"components/organisms/recyclerView\";\nimport { ScrollerWithFade } from \"components/organisms/scrollerWithFade\";\n\ninterface Props {\n disableFade?: boolean;\n}\n\nexport const LiveRadioQueue = ({ disableFade }: Props) => {\n const radio = useSelector((root: RootModel) => root.liveRadio.currentRadio?.liveRadio ?? null);\n const radioPreview = radio;\n const recentlyPlayed = useMemo(() => radio?.tracks?.recentlyPlayedTracks?.items ?? null, [radio]);\n const sectionContext = useSectionContext(ContentType.Queue, null, null, null, ResourceDisplayType.List);\n\n const dragProps: DragProps = useMemo(() => ({ dragSourceId: getNextUUID() }), []);\n const scrollRef = useRefUpdate<HTMLDivElement>();\n\n const isMobile = useAppMediaSize() === MediaSize.Mobile;\n const playables = useTrackPlayables(recentlyPlayed?.map((item) => item.track) ?? null, radio);\n const translations = useTranslations();\n\n const mapper = useCallback(\n (track: TrackPlayableModel, index: number) => (\n <ResourcePreviewRow\n dragProps={dragProps}\n key={track.id}\n dropProps={null}\n resource={track}\n context={sectionContext}\n rank={index}\n size={CoverSize.Size48}\n width={null}\n disableLazyLoad={false}\n />\n ),\n [dragProps, sectionContext]\n );\n\n return (\n <div className={`queue LYy --animate-${animations.animateQueue}`}>\n {!isMobile && (\n <Fragment>\n <LiveRadioQueueTopBar />\n <hr />\n </Fragment>\n )}\n {radioPreview && (\n <Fragment>\n <section className=\"currentLanePreview\">\n <ResourcePreviewRow\n dragProps={dragProps}\n dropProps={null}\n resource={radioPreview}\n context={sectionContext}\n rank={0}\n size={CoverSize.Size64}\n width={null}\n disableLazyLoad={true}\n />\n </section>\n <hr />\n </Fragment>\n )}\n <ScrollerWithFade tabIndex={-1} ref={scrollRef} disableFade={disableFade}>\n <section className={\"recentlyPlayed\"}>\n <div className=\"top\">\n <h1 className=\"headline\">{playables ? translations.LiveRadioTracksHistoryHeader : translations.LiveRadioTracksHistoryEmpty}</h1>\n </div>\n {playables && <QueueListView resources={playables} mapper={mapper} />}\n </section>\n </ScrollerWithFade>\n </div>\n );\n};\n","export * from \"./LiveRadioQueue\";\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { isDraggableCurrentLane } from \"./isDraggableCurrentLane\";\nimport type { LaneProps } from \"./LaneProps\";\nimport { useTranslations } from \"global/config\";\nimport type { DraggablePlayableModel } from \"models/app\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport { DropZone } from \"components/molecules/dropZone\";\nimport { QueueTrackRow } from \"components/molecules/preview/rows\";\nimport { QueueListView } from \"components/organisms/recyclerView\";\n\ninterface Props extends Omit<LaneProps, \"dragSourceId\"> {\n disableHeaderDrop: boolean;\n}\n\nexport const CurrentLane = ({ items, dragProps, sectionContext, onDrop, disableHeaderDrop, scrollOnTrackClickFn }: Props) => {\n const translations = useTranslations();\n const allowDrop = useCallback((item: DraggablePlayableModel) => !isDraggableCurrentLane(item), []);\n\n const mapper = useCallback(\n (track: QueueTrackModel) => (\n <QueueTrackRow\n dragProps={dragProps}\n dropProps={null}\n key={track.queueId}\n queueTrack={track}\n sectionContext={sectionContext}\n scrollOnTrackClickFn={scrollOnTrackClickFn}\n />\n ),\n [dragProps, scrollOnTrackClickFn, sectionContext]\n );\n\n return (\n <section className={\"currentLane\"}>\n <div className=\"top\">\n {!disableHeaderDrop && <DropZone allowDrop={allowDrop} customClass=\"first\" onDropFn={(item) => onDrop(item, QueueLane.Memory, true)} />}\n <h1 className=\"headline\">{translations.QueueCurrentTitle}</h1>\n </div>\n <QueueListView resources={items} mapper={mapper} />\n <div className=\"bottom\" />\n </section>\n );\n};\n","import { h } from \"preact\";\nimport type { DragProps } from \"models/app\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport { QueueTrackRow } from \"components/molecules/preview/rows\";\n\ninterface Props {\n dragProps: DragProps;\n currentLane: QueueTrackModel;\n sectionContext: SectionContextModel;\n onCurrentTrackClick?: () => void;\n onCurrentCoverClick?: () => void;\n}\n\nexport function CurrentLanePreview({ dragProps, currentLane, sectionContext, onCurrentTrackClick, onCurrentCoverClick }: Props) {\n return (\n <section className=\"currentLanePreview\">\n <QueueTrackRow\n dragProps={dragProps}\n dropProps={null}\n queueTrack={currentLane}\n sectionContext={sectionContext}\n onCurrentTrackClick={onCurrentTrackClick}\n onCurrentCoverClick={onCurrentCoverClick}\n />\n </section>\n );\n}\n","import { h } from \"preact\";\nimport \"./EmptyQueue.scss\";\nimport { useTranslations } from \"global/config\";\nimport type { DraggableItemModel } from \"models/app\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport { DropZone } from \"components/molecules/dropZone\";\n\ninterface Props {\n onDrop: (item: DraggableItemModel, lane: QueueLane, end: boolean, queueTrack?: QueueTrackModel) => Promise<void>;\n}\nexport function EmptyQueue({ onDrop }: Props) {\n const translations = useTranslations();\n return (\n <div className=\"empty-queue wke\">\n <div className=\"text\">\n <p className=\"title\">{translations.WebEmptyQueueTitle}</p>\n <p className=\"subtitle\">{translations.WebEmptyQueueSubtext}</p>\n </div>\n <DropZone onDropFn={(item) => onDrop(item, QueueLane.Flow, true)} />\n </div>\n );\n}\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { isDraggableCurrentLane } from \"./isDraggableCurrentLane\";\nimport type { LaneProps } from \"./LaneProps\";\nimport { useTranslations } from \"global/config\";\nimport { getLinkFromResource } from \"services/resource\";\nimport type { DraggablePlayableModel } from \"models/app\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport { useQueueLaneTrackParentFromState } from \"components/shared/hooks\";\nimport { DropZone } from \"components/molecules/dropZone\";\nimport { QueueTrackRow } from \"components/molecules/preview/rows\";\nimport { QueueListView } from \"components/organisms/recyclerView\";\n\ninterface Props extends LaneProps {\n isPriorityLaneEmpty: boolean;\n}\nexport const FlowLane = ({ items, dragProps, sectionContext, dragSourceId, onDrop, isPriorityLaneEmpty, scrollOnTrackClickFn }: Props) => {\n const trackParent = useQueueLaneTrackParentFromState(items[0]?.parentId ?? null);\n const flowLaneTitle = getLinkFromResource(trackParent, sectionContext)?.text;\n const translations = useTranslations();\n const allowDrop = useCallback((item: DraggablePlayableModel) => !isDraggableCurrentLane(item), []);\n\n const mapper = useCallback(\n (track: QueueTrackModel) => (\n <QueueTrackRow\n allowDrop={allowDrop}\n scrollOnTrackClickFn={scrollOnTrackClickFn}\n dragProps={dragProps}\n dropProps={{ dragSourceId, onDrop: (item) => onDrop(item, track.lane, false, track) }}\n key={track.queueId}\n queueTrack={track}\n sectionContext={sectionContext}\n />\n ),\n [allowDrop, dragProps, dragSourceId, onDrop, scrollOnTrackClickFn, sectionContext]\n );\n\n return (\n <section className={\"flowLane\"}>\n <div className=\"top\">\n {isPriorityLaneEmpty && <DropZone allowDrop={allowDrop} customClass=\"first\" onDropFn={(item) => onDrop(item, QueueLane.Priority, true)} />}\n {flowLaneTitle && <h1 className=\"headline\">{`${translations.QueueNextFrom} ${flowLaneTitle}`}</h1>}\n <DropZone allowDrop={allowDrop} customClass=\"second\" onDropFn={(item) => onDrop(item, QueueLane.Flow, false)} />\n </div>\n <QueueListView resources={items} mapper={mapper} />\n <div className=\"bottom\">\n <DropZone allowDrop={allowDrop} onDropFn={(item) => onDrop(item, QueueLane.Flow, true)} />\n </div>\n </section>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { isDraggableCurrentLane } from \"./isDraggableCurrentLane\";\nimport type { LaneProps } from \"./LaneProps\";\nimport { useTranslations } from \"global/config\";\nimport type { DraggablePlayableModel } from \"models/app\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport { DropZone } from \"components/molecules/dropZone\";\nimport { QueueTrackRow } from \"components/molecules/preview/rows\";\nimport { QueueListView } from \"components/organisms/recyclerView\";\n\ntype Props = LaneProps;\n\nexport const MemoryLane = ({ items, dragProps, sectionContext, onDrop, dragSourceId, scrollOnTrackClickFn }: Props) => {\n const translations = useTranslations();\n const allowDrop = useCallback((item: DraggablePlayableModel) => !isDraggableCurrentLane(item), []);\n\n const mapper = useCallback(\n (track: QueueTrackModel) => (\n <QueueTrackRow\n allowDrop={allowDrop}\n dragProps={dragProps}\n dropProps={{ dragSourceId, onDrop: (item) => onDrop(item, track.lane, false, track) }}\n key={track.queueId}\n queueTrack={track}\n sectionContext={sectionContext}\n scrollOnTrackClickFn={scrollOnTrackClickFn}\n />\n ),\n [allowDrop, dragProps, dragSourceId, onDrop, scrollOnTrackClickFn, sectionContext]\n );\n\n return (\n <section className={\"memoryLane\"}>\n <div className=\"top\">\n <h1 className=\"headline\">{translations.QueueHistoryPageTitleMobile}</h1>\n <DropZone customClass=\"second\" allowDrop={allowDrop} onDropFn={(item) => onDrop(item, QueueLane.Flow, false)} />\n </div>\n <QueueListView resources={items} mapper={mapper} />\n <div className=\"bottom\">\n <DropZone allowDrop={allowDrop} onDropFn={(item) => onDrop(item, QueueLane.Memory, true)} />\n </div>\n </section>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { isDraggableCurrentLane } from \"./isDraggableCurrentLane\";\nimport type { LaneProps } from \"./LaneProps\";\nimport { dispatch } from \"global\";\nimport { PLAYQUEUE_ENDLESSPLAY_TOGGLE } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { EndlessPlaySwitchTestLocator } from \"global/constants\";\nimport type { DraggablePlayableModel } from \"models/app\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport { useIsEndlessPlayOnFromState } from \"components/shared/hooks\";\nimport { Switch } from \"components/atoms/controls/switch\";\nimport { DropZone } from \"components/molecules/dropZone\";\nimport { QueueTrackRow } from \"components/molecules/preview/rows\";\nimport { QueueListView } from \"components/organisms/recyclerView\";\n\ninterface Props extends Omit<LaneProps, \"dragSourceId\"> {\n expandDropZone: boolean;\n}\nexport const PreviewLane = ({ dragProps, sectionContext, onDrop, expandDropZone, items, scrollOnTrackClickFn }: Props) => {\n const isEndlessPlayOn = useIsEndlessPlayOnFromState();\n const handleToggleEndlessPlay = useCallback(() => dispatch({ type: PLAYQUEUE_ENDLESSPLAY_TOGGLE, payload: { on: !isEndlessPlayOn } }), [isEndlessPlayOn]);\n const testLocator = useMemo(() => EndlessPlaySwitchTestLocator(isEndlessPlayOn), [isEndlessPlayOn]);\n const translations = useTranslations();\n const allowDrop = useCallback((item: DraggablePlayableModel) => !isDraggableCurrentLane(item), []);\n\n const mapper = useCallback(\n (track: QueueTrackModel) => (\n <QueueTrackRow\n scrollOnTrackClickFn={scrollOnTrackClickFn}\n dragProps={dragProps}\n dropProps={null}\n key={track.queueId}\n queueTrack={track}\n sectionContext={sectionContext}\n disabled={!isEndlessPlayOn}\n />\n ),\n [dragProps, isEndlessPlayOn, scrollOnTrackClickFn, sectionContext]\n );\n return (\n <section className={\"previewLane\"}>\n <div className=\"top\">\n <DropZone allowDrop={allowDrop} customClass={`--size-${expandDropZone ? \"big\" : \"small\"}`} onDropFn={(item) => onDrop(item, QueueLane.Flow, true)} />\n <h1 className=\"headline\">{translations.SettingsEndlessPlayTitle}</h1>\n <Switch checked={isEndlessPlayOn} onClick={handleToggleEndlessPlay} testLocator={testLocator} />\n </div>\n <QueueListView resources={items} mapper={mapper} />\n </section>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { isDraggableCurrentLane } from \"./isDraggableCurrentLane\";\nimport type { LaneProps } from \"./LaneProps\";\nimport { useTranslations } from \"global/config\";\nimport type { DraggablePlayableModel } from \"models/app\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport { DropZone } from \"components/molecules/dropZone\";\nimport { QueueTrackRow } from \"components/molecules/preview/rows\";\nimport { QueueListView } from \"components/organisms/recyclerView\";\n\ninterface Props extends LaneProps {\n historyOpen: boolean;\n}\nexport const PriorityLane = ({ items, dragProps, sectionContext, dragSourceId, onDrop, historyOpen, scrollOnTrackClickFn }: Props) => {\n const translations = useTranslations();\n const allowDrop = useCallback((item: DraggablePlayableModel) => !isDraggableCurrentLane(item), []);\n\n const mapper = useCallback(\n (track: QueueTrackModel) => (\n <QueueTrackRow\n scrollOnTrackClickFn={scrollOnTrackClickFn}\n dragProps={dragProps}\n dropProps={{ dragSourceId, onDrop: (item) => onDrop(item, track.lane, false, track) }}\n key={track.queueId}\n queueTrack={track}\n sectionContext={sectionContext}\n allowDrop={allowDrop}\n />\n ),\n [allowDrop, dragProps, dragSourceId, onDrop, scrollOnTrackClickFn, sectionContext]\n );\n\n return (\n <section className={`queueLane --size-${historyOpen ? \"big\" : \"small\"}`}>\n <div className=\"top\">\n <h1 className=\"headline\">{translations.QueuePriorityLaneTitle}</h1>\n <DropZone customClass=\"second\" allowDrop={allowDrop} onDropFn={(item) => onDrop(item, QueueLane.Priority, false)} />\n </div>\n <QueueListView resources={items} mapper={mapper} />\n <div className=\"bottom\">\n <DropZone allowDrop={allowDrop} onDropFn={(item) => onDrop(item, QueueLane.Priority, true)} />\n </div>\n </section>\n );\n};\n","import { h } from \"preact\";\nimport { useMemo, useCallback, useEffect } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { CurrentLane } from \"./CurrentLane\";\nimport { CurrentLanePreview } from \"./CurrentLanePreview\";\nimport { EmptyQueue } from \"./EmptyQueue\";\nimport { FlowLane } from \"./FlowLane\";\nimport { isDraggableCurrentLane } from \"./isDraggableCurrentLane\";\nimport { MemoryLane } from \"./MemoryLane\";\nimport { PreviewLane } from \"./PreviewLane\";\nimport { PriorityLane } from \"./PriorityLane\";\nimport { TrackQueueActions } from \"./TrackQueueActions\";\nimport { dispatch } from \"global\";\nimport { PLAYQUEUE_DROP, PLAYQUEUE_HISTORY_TOGGLE } from \"global/actions\";\nimport { animations } from \"global/constants\";\nimport { getNextUUID } from \"services/utils\";\nimport type { DragProps, DraggableItemModel, RootModel } from \"models/app\";\nimport { createAndStartUserPlayTraceModel, TraceName } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { QueueTrackModel, QueueLane } from \"models/app/player/input\";\nimport { ContentType } from \"models/ModelType\";\nimport { useSectionContext, useRefUpdate, useQueueLanes, useEndlessPlayFromState } from \"components/shared/hooks\";\nimport { ScrollerWithFade } from \"components/organisms/scrollerWithFade\";\n\ninterface Props {\n onCurrentTrackClick?: () => void;\n onCurrentCoverClick?: () => void;\n disableFade?: boolean;\n}\n\nexport const TrackQueue = ({ onCurrentTrackClick, onCurrentCoverClick, disableFade }: Props) => {\n const { isQueueEmpty, memory, current, priority, isPriorityLaneEmpty, flow, isFlowLaneEmpty, isMemoryLaneEmpty, playQueue } = useQueueLanes();\n const { endlessPlay, isEndlessPlayEmpty } = useEndlessPlayFromState();\n const { historyOpen } = useSelector((root: RootModel) => root.queue);\n const sectionContext = useSectionContext(ContentType.Queue, null, null, null, null);\n\n const dragProps: DragProps = useMemo(() => ({ dragSourceId: getNextUUID() }), []);\n const toggleHistory = useCallback(() => dispatch({ type: PLAYQUEUE_HISTORY_TOGGLE }), []);\n const { dragSourceId } = dragProps;\n\n const scrollRef = useRefUpdate<HTMLDivElement>();\n\n const historyScrollLength = useCallback((length: number) => {\n const itemsToShow = 2.5;\n const headerHeight = 56;\n const queueTrackHeight = 64;\n if (length < itemsToShow) return 0;\n const scrollLength = (length - itemsToShow) * queueTrackHeight + headerHeight;\n return scrollLength;\n }, []);\n\n useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTop = historyOpen ? historyScrollLength(memory.length) : 0;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [historyOpen]);\n\n const onDrop = useCallback(\n async (item: DraggableItemModel, lane: QueueLane, end: boolean, queueTrack?: QueueTrackModel) => {\n if (isDraggableCurrentLane(item)) return;\n const trace = await createAndStartUserPlayTraceModel(TraceName.ClickToSound);\n const action = item.dragSourceId === dragSourceId ? \"move\" : \"add\";\n dispatch({\n type: PLAYQUEUE_DROP,\n payload: {\n playable: item.playable,\n queueTrack,\n lane,\n atEnd: end,\n context: { action: AudioContextAction.UserPreviewDragDrop, trace },\n action,\n playableContext: item.context\n }\n });\n },\n [dragSourceId]\n );\n const scrollOnTrackClickFn = useCallback(\n (id: string) => {\n if (!scrollRef.current) return;\n const queueIndex = playQueue.findIndex((item) => item.compareableTrackId === id);\n const scrollTo = historyOpen ? historyScrollLength(queueIndex) : 0;\n scrollRef.current.scrollTo({ top: scrollTo, behavior: \"smooth\" });\n },\n [scrollRef, playQueue, historyOpen, historyScrollLength]\n );\n\n return (\n <div className={`queue LYy --animate-${animations.animateQueue}`}>\n <TrackQueueActions isQueueEmpty={isQueueEmpty} disableHistoryButton={isMemoryLaneEmpty && !current} historyOpen={historyOpen} historyClick={toggleHistory} />\n {current && (\n <CurrentLanePreview\n dragProps={dragProps}\n currentLane={current}\n sectionContext={sectionContext}\n onCurrentTrackClick={onCurrentTrackClick}\n onCurrentCoverClick={onCurrentCoverClick}\n />\n )}\n {isQueueEmpty ? (\n <EmptyQueue onDrop={onDrop} />\n ) : (\n <ScrollerWithFade tabIndex={-1} ref={scrollRef} disableFade={disableFade}>\n {!isMemoryLaneEmpty && historyOpen && (\n <MemoryLane\n items={memory}\n scrollRef={scrollRef}\n scrollOnTrackClickFn={scrollOnTrackClickFn}\n dragProps={dragProps}\n sectionContext={sectionContext}\n dragSourceId={dragSourceId}\n onDrop={onDrop}\n />\n )}\n {historyOpen && current && (\n <CurrentLane\n items={[current]}\n scrollRef={scrollRef}\n scrollOnTrackClickFn={scrollOnTrackClickFn}\n disableHeaderDrop={!isMemoryLaneEmpty}\n dragProps={dragProps}\n sectionContext={sectionContext}\n onDrop={onDrop}\n />\n )}\n {!isPriorityLaneEmpty && (\n <PriorityLane\n items={priority}\n scrollRef={scrollRef}\n scrollOnTrackClickFn={scrollOnTrackClickFn}\n dragProps={dragProps}\n sectionContext={sectionContext}\n dragSourceId={dragSourceId}\n onDrop={onDrop}\n historyOpen={historyOpen}\n />\n )}\n {!isFlowLaneEmpty && (\n <FlowLane\n items={flow}\n scrollRef={scrollRef}\n scrollOnTrackClickFn={scrollOnTrackClickFn}\n dragProps={dragProps}\n sectionContext={sectionContext}\n dragSourceId={dragSourceId}\n onDrop={onDrop}\n isPriorityLaneEmpty={isPriorityLaneEmpty}\n />\n )}\n {!isEndlessPlayEmpty && (\n <PreviewLane\n items={endlessPlay}\n scrollRef={scrollRef}\n scrollOnTrackClickFn={scrollOnTrackClickFn}\n dragProps={dragProps}\n sectionContext={sectionContext}\n onDrop={onDrop}\n expandDropZone={isPriorityLaneEmpty && isFlowLaneEmpty}\n />\n )}\n </ScrollerWithFade>\n )}\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { dispatch } from \"global\";\nimport {\n ANALYTICS_PLAYQUEUE_CLEAR_QUEUE,\n ANALYTICS_PLAYQUEUE_SAVE_TO_PLAYLIST,\n PLAYQUEUE_CLEAR,\n SET_DESKTOP_QUEUE_OPEN,\n SET_MAXIPLAYER_OPEN,\n SET_MINIPLAYER_OPEN\n} from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { animations, TestLocator } from \"global/constants\";\nimport { openMenuByElement } from \"services/contextMenus\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { DesktopQueueOpen, MobileMaxiPlayerOpen } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { ModalOpenResult } from \"models/view/AppModalModel\";\nimport { MediaSize, useAppMediaSize, useRefUpdate } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { AddQueueToPlaylistContextMenu } from \"components/organisms/contextMenu/menus\";\nimport { showClearQueueModal } from \"components/organisms/modal/modals/ClearQueueModal\";\n\ninterface Props {\n historyClick: () => void;\n historyOpen: boolean;\n disableHistoryButton: boolean;\n isQueueEmpty: boolean;\n}\n\nexport const TrackQueueActions = ({ historyClick, historyOpen, disableHistoryButton, isQueueEmpty }: Props) => {\n const translations = useTranslations();\n const isMobile = useAppMediaSize() === MediaSize.Mobile;\n\n const buttonRef = useRefUpdate<HTMLButtonElement>();\n\n const showQueueMenu = () => {\n dispatch({ type: ANALYTICS_PLAYQUEUE_SAVE_TO_PLAYLIST });\n if (!buttonRef.current) {\n log.error({ code: \"web-211116-1247\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n openMenuByElement(<AddQueueToPlaylistContextMenu />, buttonRef.current, false);\n };\n\n const clearQueue = async () => {\n dispatch({ type: ANALYTICS_PLAYQUEUE_CLEAR_QUEUE });\n const result = await showClearQueueModal();\n if (result === ModalOpenResult.Submit) {\n dispatch({ type: SET_DESKTOP_QUEUE_OPEN, payload: { open: DesktopQueueOpen.Closed } });\n dispatch({ type: SET_MAXIPLAYER_OPEN, payload: { open: MobileMaxiPlayerOpen.Closed } });\n dispatch({ type: SET_MINIPLAYER_OPEN, payload: { open: false } });\n const timeOutMs = isMobile ? animations.durationLong : 0;\n setTimeout(() => dispatch({ type: PLAYQUEUE_CLEAR, payload: { context: { action: AudioContextAction.UserPlayQueueClear, trace: null } } }), timeOutMs);\n }\n };\n\n return (\n <div className=\"queueActions\">\n <Button className={\"clearQueue\"} onClick={clearQueue} disabled={isQueueEmpty} design={ButtonDesign.LightMicro} testLocator={TestLocator.QueueClearButton}>\n {translations.QueueClearButton}\n </Button>\n <Button\n className={\"history\"}\n disabled={disableHistoryButton}\n toggled={historyOpen}\n onClick={historyClick}\n design={ButtonDesign.LightMicro}\n testLocator={TestLocator.QueueHistoryButton}>\n {translations.QueueHistoryButtonTextMobile}\n </Button>\n <Button\n ref={buttonRef}\n className={\"saveQueue\"}\n disabled={isQueueEmpty}\n onClick={showQueueMenu}\n design={ButtonDesign.LightMicro}\n testLocator={TestLocator.QueueSaveButton}>\n {translations.QueueSave}\n </Button>\n </div>\n );\n};\n","export * from \"./TrackQueue\";\n","import type { DraggablePlayableModel } from \"models/app\";\nimport { QueueLane } from \"models/app/player/input\";\n\nexport const isDraggableCurrentLane = (item: DraggablePlayableModel) => {\n if (\"lane\" in item.playable) {\n if (item.playable.lane === QueueLane.Current) return true;\n }\n return false;\n};\n","import { h } from \"preact\";\nimport type { StateUpdater } from \"preact/hooks\";\nimport { getLinks, getComparableId } from \"services/resource\";\nimport type { DropProps, DragProps } from \"models/app\";\nimport type { PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport { createPreviewContext } from \"models/app/resourceContextModel\";\nimport type { NotificationConversion, ResourcePreviewModel } from \"models/domain\";\nimport { CoverSize } from \"components/atoms/cover\";\nimport type { PreviewAction } from \"components/molecules/preview\";\nimport { PreviewDisplayType } from \"components/molecules/preview\";\nimport { ResourcePreviewSquare } from \"components/molecules/preview/squares\";\n\nexport interface RowSharedProps {\n context: SectionContextModel;\n labelCount: number;\n isHighlight?: (id: string, index: number) => boolean;\n setLabelCount: StateUpdater<number>;\n getDropProps?: (model: ResourcePreviewModel, index: number) => DropProps;\n columns: number;\n onAction: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n dragProps: DragProps;\n}\n\ninterface Props {\n shared: RowSharedProps;\n rowIndex: number;\n resources: ResourcePreviewModel[] | null;\n}\nexport function GridRow({ shared, resources, rowIndex }: Props): h.JSX.Element {\n const { context, isHighlight, setLabelCount, dragProps, getDropProps, onAction, columns } = shared;\n\n const mapper = (resource: ResourcePreviewModel, i: number): h.JSX.Element => {\n const previewContext = createPreviewContext(resource.contentType, resource, context, i);\n const links = getLinks(resource.contentType, resource, previewContext.section, PreviewDisplayType.Square); // todo: temporary solution, preview context should be moved up one level and links set directly on it\n if (links.length > shared.labelCount) {\n shared.labelCount = links.length;\n setLabelCount(links.length);\n }\n\n const itemIndex = rowIndex * columns + i;\n const highlight = isHighlight?.(resource.id, itemIndex) ?? false;\n\n return (\n <ResourcePreviewSquare\n context={context}\n dragProps={dragProps}\n dropProps={getDropProps?.(resource, i) ?? null}\n dynamicSize\n highlight={highlight}\n key={getComparableId(resource)}\n onAction={onAction}\n resource={resource}\n size={CoverSize.Size320}\n rank={itemIndex}\n disableLazyLoad\n />\n );\n };\n\n return <div className=\"row\">{resources?.map(mapper)}</div>;\n}\n","import { h } from \"preact\";\nimport { useEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport \"./GridView.scss\";\nimport type { RowSharedProps } from \"./GridRow\";\nimport { GridRow } from \"./GridRow\";\nimport { getRows } from \"./useRows\";\nimport { useScrollYPosition } from \"./useScrollYPosition\";\nimport { useSplitArrayIntoChunksWithReuse } from \"services/arrayHelper\";\nimport type { DragProps, DropProps } from \"models/app\";\nimport type { PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { NotificationConversion, ResourcePreviewModel } from \"models/domain\";\nimport { useAppMediaSize, MediaSize } from \"components/shared/hooks\";\nimport type { Pagination } from \"components/shared/hooks/usePagination\";\nimport { useResizeRowsColumns } from \"components/shared/hooks/useResizeRowsColumns\";\nimport type { PreviewAction } from \"components/molecules/preview\";\n\ninterface Props {\n resources: ResourcePreviewModel[] | null;\n pagination?: Pagination<unknown> | null;\n context: SectionContextModel;\n getDropProps?: (model: ResourcePreviewModel, index: number) => DropProps;\n onAction: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n isHighlight?: (id: string, index: number) => boolean;\n dragProps: DragProps;\n}\n\nexport const GridView = ({ pagination, resources, isHighlight, context, getDropProps, onAction, dragProps }: Props) => {\n const viewRef = useRef<HTMLDivElement>(null);\n\n //TODO: Brian and Haci, calculate labelCount before rendering previews, currently rerender 10x in total\n const [labelCount, setLabelCount] = useState(1);\n const mediaSize = useAppMediaSize();\n const margin = mediaSize === MediaSize.Mobile ? 16 : 24;\n const data = useMemo(() => ({ margin, labelCount }), [labelCount, margin]);\n\n // todo: we might save a render-cycle by having useResizeRowsColumns() access a parent-element instead of needing to wait a cycle for results\n const { columns, rowHeight, rows, isReady } = useResizeRowsColumns(viewRef.current, calculateGrid, data);\n const { firstRowInView, lastRowInView } = getRows(viewRef.current, rowHeight, rows);\n\n const resourceLenght = resources?.length ?? 0;\n\n const rowChunks = useSplitArrayIntoChunksWithReuse(resources ?? [], columns);\n const parent = viewRef.current?.parentElement?.parentElement?.parentElement;\n const scrollYPosition = useScrollYPosition(parent, (n) => n - (n % rowHeight));\n\n const totalCount = pagination?.connection?.totalCount ?? resourceLenght;\n const totalRows = Math.ceil(totalCount / columns);\n\n const shared = useMemo<RowSharedProps>(\n () => ({ context, labelCount, isHighlight, setLabelCount, getDropProps, columns, onAction, dragProps }),\n [columns, context, dragProps, getDropProps, isHighlight, labelCount, onAction]\n );\n\n const topSpacerHeight = rowHeight * firstRowInView;\n const bottomSpacerHeight = (totalRows - lastRowInView) * rowHeight;\n\n const [hasAutoscrolled, setHasAutoscrolled] = useState(false);\n useEffect(() => {\n if (hasAutoscrolled || !isHighlight || !resources || columns == 1 || !parent) return;\n const index = resources.findIndex((resource, i) => isHighlight(resource.id, i));\n if (index != -1) {\n const highlightRow = Math.floor(index / columns);\n const pixelHeight = Math.max(0, (highlightRow - 2) * rowHeight);\n parent.scrollTop = pixelHeight;\n }\n else if (pagination?.more) {\n pagination?.more?.();\n }\n }, [resources, pagination, isHighlight, hasAutoscrolled, setHasAutoscrolled, columns, totalRows, rowHeight, parent])\n\n useEffect(() => {\n const requiredItemsCount = (lastRowInView + 4) * columns;\n\n if (requiredItemsCount > resourceLenght) {\n pagination?.more && pagination.more();\n }\n }, [firstRowInView, lastRowInView, columns, resourceLenght, pagination, totalCount, scrollYPosition]);\n\n\n return (\n <div className=\"gridView s2e\" style={{ \"--grid-col\": columns }} ref={viewRef}>\n <div className=\"top-spacer\" key=\"top-spacer\" style={{ height: `${topSpacerHeight}px` }} />\n {isReady && rowChunks.slice(firstRowInView, lastRowInView).map((resources, i) => (\n <GridRow key={`${columns}_${firstRowInView + i}`} shared={shared} resources={resources} rowIndex={firstRowInView + i} />\n ))}\n <div className=\"bottom-spacer\" key=\"bottom-spacer\" style={{ height: `${bottomSpacerHeight}px` }} />\n </div>\n );\n};\n\nconst calculateGrid = (containerHeight: number, containerWidth: number, data: { margin: number; labelCount?: number }) => {\n const minItemSize = 128 + data.margin;\n const maxItemSize = 256 + data.margin;\n\n const scaleFrom = 272 + data.margin;\n const scaleTo = 720 + data.margin;\n\n let scale = (containerWidth - scaleFrom) / scaleTo;\n if (scale < 0) scale = 0;\n if (scale > 1) scale = 1;\n\n const itemSize = minItemSize + scale * (maxItemSize - minItemSize);\n\n let columns = Math.floor(containerWidth / itemSize);\n columns = Math.max(1, columns);\n const rowWidth = containerWidth / columns;\n let rowHeight = rowWidth;\n\n if (data.labelCount != null) {\n if (data.labelCount >= 1) rowHeight += 28;\n if (data.labelCount >= 2) rowHeight += 20;\n if (data.labelCount >= 3) rowHeight += 20;\n }\n\n const rows = Math.ceil(window.innerHeight / rowHeight);\n return { rows, rowHeight, columns };\n};\n","import { h } from \"preact\";\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from \"preact/hooks\";\nimport \"./ListView.scss\";\nimport { getRows } from \"./useRows\";\nimport { useScrollYPosition } from \"./useScrollYPosition\";\nimport { getComparableId } from \"services/resource\";\nimport type { Multiselect } from \"services/selection\";\nimport type { DragProps, DropProps } from \"models/app\";\nimport type { PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { NotificationConversion, ResourcePreviewModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport type { Pagination } from \"components/shared/hooks/usePagination\";\nimport { CoverSize } from \"components/atoms/cover\";\nimport type { IconName } from \"components/atoms/icon\";\nimport type { PreviewAction } from \"components/molecules/preview\";\nimport { ResourcePreviewRow } from \"components/molecules/preview/rows\";\n\ntype ListDisplayTypes = ResourceDisplayType.List | ResourceDisplayType.ListLarge | ResourceDisplayType.ListMedium;\n\ninterface GenericListViewProps<T> {\n totalItems?: number;\n paginationCallback?: () => void;\n pagination?: Pagination<unknown> | null;\n display: ListDisplayTypes;\n resources: T[] | null;\n mapper: (resource: T, i: number, coverSize: CoverSize, firstRowInView: number) => h.JSX.Element;\n getParent: (element: HTMLDivElement | null) => HTMLElement | null;\n isHighlight?: (id: string, index: number) => boolean;\n}\n\nexport const GenericListView = <T extends { id: string }>({\n totalItems,\n paginationCallback,\n pagination,\n display,\n resources,\n mapper,\n getParent,\n isHighlight\n}: GenericListViewProps<T>) => {\n const viewRef = useRef<HTMLDivElement>(null);\n const { rowHeight, coverSize } = useListSizes(display);\n\n const resourcesLength = resources?.length ?? 0;\n\n // totalrows can differ from what the connection reports, if there is an enforced max or if we unexpectedly have no next page\n const paginationLength = Math.min(totalItems ?? pagination?.max ?? pagination?.connection?.totalCount ?? 0, totalItems ?? pagination?.connection?.totalCount ?? 0);\n const totalRows = (pagination?.connection && !pagination.connection.pageInfo.hasNextPage) || resourcesLength > paginationLength ? resourcesLength : paginationLength;\n\n const { firstRowInView, lastRowInView } = getRows(viewRef.current, rowHeight);\n\n const topSpacerHeight = Math.max(0, rowHeight * firstRowInView);\n const bottomSpacerHeight = Math.max(0, (totalRows - lastRowInView) * rowHeight);\n const [parent, setParent] = useState<HTMLElement | null>(null);\n\n useLayoutEffect(() => {\n const parent = getParent(viewRef.current);\n setParent(parent);\n }, [getParent, viewRef]);\n\n const scrollYPosition = useScrollYPosition(parent, (n) => n - (n % rowHeight));\n\n const [hasAutoscrolled, setHasAutoscrolled] = useState(false);\n useEffect(() => {\n if (hasAutoscrolled || !isHighlight || !resources || !parent) return;\n const index = resources.findIndex((resource, index) => isHighlight(resource.id, index));\n if (index != -1) {\n const pixelHeight = Math.max(0, (index - 1) * rowHeight);\n parent.scrollTop = pixelHeight;\n } else if (pagination?.more) {\n pagination?.more?.();\n }\n }, [resources, pagination, isHighlight, hasAutoscrolled, setHasAutoscrolled, totalRows, rowHeight, parent]);\n\n useEffect(() => {\n const requiredItemsCount = lastRowInView + 4;\n if (requiredItemsCount > resourcesLength) {\n paginationCallback?.();\n pagination?.more?.();\n }\n }, [lastRowInView, paginationCallback, pagination, resourcesLength, scrollYPosition]);\n\n return (\n <div className=\"listView pr4\" ref={viewRef} style={{ height: `${totalRows * rowHeight}px` }}>\n <div className=\"top-spacer\" style={{ height: `${topSpacerHeight}px` }} />\n {resources?.slice(firstRowInView, lastRowInView).map((resource, i) => mapper(resource, i, coverSize, firstRowInView))}\n <div className=\"bottom-spacer\" style={{ height: `${bottomSpacerHeight}px` }} />\n </div>\n );\n};\n\ninterface ResourceListViewProps {\n dragProps: DragProps;\n paginationCallback?: () => void;\n pagination?: Pagination<unknown> | null;\n display: ListDisplayTypes;\n context: SectionContextModel;\n customIcon?: IconName;\n customIconAction?: (resource: ResourcePreviewModel) => void;\n width: number | null;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n isHighlight?: (id: string) => boolean;\n totalItems?: number;\n resources: ResourcePreviewModel[] | null;\n getDropProps?: (model: ResourcePreviewModel, index: number) => DropProps;\n multiselect?: Multiselect;\n locked?: boolean;\n}\nexport const ResourceListView = ({\n context,\n customIcon,\n customIconAction,\n display,\n dragProps,\n getDropProps,\n isHighlight,\n multiselect,\n onAction,\n width,\n totalItems,\n resources,\n pagination,\n paginationCallback,\n locked\n}: ResourceListViewProps) => {\n const mapper = useCallback(\n (resource: ResourcePreviewModel, i: number, coverSize: CoverSize, firstRowInView: number) => {\n return (\n <ResourcePreviewRow\n id={resource.id}\n context={context}\n customIcon={customIcon}\n customIconAction={customIconAction}\n disableLazyLoad\n dragProps={dragProps}\n dropProps={getDropProps?.(resource, firstRowInView + i) ?? null}\n highlight={isHighlight?.(resource.id) ?? false}\n key={getComparableId(resource)}\n multiselect={multiselect}\n onAction={onAction}\n rank={firstRowInView + i}\n resource={resource}\n size={coverSize}\n width={width}\n locked={locked}\n />\n );\n },\n [context, customIcon, customIconAction, dragProps, getDropProps, isHighlight, multiselect, onAction, width, locked]\n );\n const getParent = useCallback((current: HTMLDivElement | null) => current?.parentElement?.parentElement?.parentElement ?? null, []);\n\n return (\n <GenericListView\n resources={resources || []}\n paginationCallback={paginationCallback}\n pagination={pagination}\n display={display}\n mapper={mapper}\n getParent={getParent}\n totalItems={totalItems}\n isHighlight={isHighlight}\n />\n );\n};\n\ninterface QueueListViewProps<T> {\n resources: T[];\n mapper: (track: T, index: number) => h.JSX.Element;\n}\nexport const QueueListView = <T extends { id: string }>({ resources, mapper }: QueueListViewProps<T>) => {\n const getParent = useCallback((current: HTMLDivElement | null) => current?.parentElement?.parentElement ?? null, []);\n\n return <GenericListView resources={resources} display={ResourceDisplayType.List} mapper={mapper} getParent={getParent} />;\n};\n\nfunction useListSizes(display: ListDisplayTypes) {\n switch (display) {\n case ResourceDisplayType.List:\n return { rowHeight: 64, coverSize: CoverSize.Size48 };\n case ResourceDisplayType.ListMedium:\n return { rowHeight: 80, coverSize: CoverSize.Size64 };\n case ResourceDisplayType.ListLarge:\n return { rowHeight: 104, coverSize: CoverSize.Size80 };\n }\n}\n","export * from \"./GridView\";\nexport * from \"./ListView\";\n","export function getRows(current: HTMLDivElement | null, rowHeight: number, rows?: number) {\n const rowsCount = rows ?? Math.ceil(window.innerHeight / rowHeight);\n const visibleBuffer = 2;\n const visibleRows = rowsCount + visibleBuffer * 2;\n\n const fromTop = current?.getBoundingClientRect().top ?? 0;\n const startRow = Math.floor(-fromTop / rowHeight) - visibleBuffer;\n const firstRowInView = Math.max(startRow, 0);\n const lastRowInView = firstRowInView + visibleRows;\n\n return { firstRowInView, lastRowInView };\n}\n","import { useEffect, useState } from \"preact/hooks\";\n\nexport const useScrollYPosition = (parent?: HTMLElement | null, fn?: (val: number) => number) => {\n const [scrollYPosition, setScrollYPosition] = useState(0);\n\n useEffect(() => {\n const handleScroll = () => {\n if (parent) {\n const y = fn ? fn(parent?.scrollTop) : parent?.scrollTop;\n setScrollYPosition(y);\n }\n };\n\n parent?.addEventListener(\"scroll\", handleScroll);\n\n return () => {\n parent?.removeEventListener(\"scroll\", handleScroll);\n };\n }, [fn, parent]);\n\n return scrollYPosition;\n};\n","import { h } from \"preact\";\nimport type { Ref } from \"preact/hooks\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { ResourceSectionScroller } from \"./ResourceSectionScroller\";\nimport { GridView } from \"../recyclerView/GridView\";\nimport { ResourceListView } from \"../recyclerView/ListView\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport type { Multiselect } from \"services/selection\";\nimport { getNextUUID } from \"services/utils\";\nimport type { DragProps, DropProps } from \"models/app\";\nimport type { PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport type { NotificationConversion } from \"models/domain/NotificationModel\";\nimport type { Pagination } from \"components/shared/hooks/usePagination\";\nimport type { IconName } from \"components/atoms/icon\";\nimport type { PreviewAction } from \"components/molecules/preview\";\nimport { BannerSingle, PreviewSingle } from \"components/molecules/preview/singles\";\nimport type { ScrollerNavigateCallback, ScrollerNavigatePropetiesCallback } from \"components/organisms/scroller/options\";\n\ninterface ContentProps {\n context: SectionContextModel;\n customIcon?: IconName;\n customIconAction?: (resource: ResourcePreviewModel) => void;\n displayType: ResourceDisplayType;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n onScrollerNavigatePropertiesChange: ScrollerNavigatePropetiesCallback;\n pagination: Pagination<unknown> | null;\n paginationCallback?: () => void;\n totalItems?: number;\n resources: ResourcePreviewModel[] | null;\n scrollerNavigateRef: Ref<ScrollerNavigateCallback | null>;\n width: number | null;\n getDropProps?: (model: ResourcePreviewModel, index: number) => DropProps;\n highlightId?: string;\n multiselect?: Multiselect;\n locked?: boolean;\n}\nexport const Content = ({\n context,\n customIcon,\n customIconAction,\n displayType,\n onAction: onActionProp,\n onScrollerNavigatePropertiesChange,\n pagination,\n paginationCallback,\n totalItems,\n resources,\n scrollerNavigateRef,\n width,\n getDropProps,\n highlightId,\n multiselect,\n locked\n}: ContentProps) => {\n const dragProps: DragProps = useMemo(() => ({ dragSourceId: getNextUUID() }), []);\n const onAction = useCallback(\n (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => {\n onActionProp && onActionProp(action, preview, conversion);\n },\n [onActionProp]\n );\n\n const isHighlight = useMemo(() => (!highlightId ? undefined : (id: string) => id === highlightId), [highlightId]);\n\n switch (displayType) {\n case ResourceDisplayType.Scroller:\n case ResourceDisplayType.LargeScroller: {\n return (\n <ResourceSectionScroller\n dragProps={dragProps}\n resources={resources}\n isHighlight={isHighlight}\n context={context}\n onAction={onAction}\n getDropProps={getDropProps}\n displayType={displayType}\n section={context}\n navigateRef={scrollerNavigateRef}\n onNavigatePropertiesChange={onScrollerNavigatePropertiesChange}\n />\n );\n }\n case ResourceDisplayType.List:\n case ResourceDisplayType.ListMedium:\n case ResourceDisplayType.ListLarge: {\n return (\n <ResourceListView\n dragProps={dragProps}\n resources={resources}\n isHighlight={isHighlight}\n context={context}\n onAction={onAction}\n pagination={pagination}\n paginationCallback={paginationCallback}\n totalItems={totalItems}\n display={displayType}\n getDropProps={getDropProps}\n width={width}\n multiselect={multiselect}\n customIconAction={customIconAction}\n customIcon={customIcon}\n locked={locked}\n />\n );\n }\n case ResourceDisplayType.Grid: {\n return <GridView dragProps={dragProps} resources={resources} isHighlight={isHighlight} context={context} onAction={onAction} pagination={pagination} />;\n }\n case ResourceDisplayType.Single: {\n const resource = resources ? resources[0] : null;\n\n if (!resource) return null;\n if (resources?.length !== 1) log.error({ code: \"web-210208-1213\", msg: \"single resources length !== 1\" });\n\n return (\n <PreviewSingle highlight={isHighlight?.(resource.id) ?? false} resourceType={resource.contentType} section={context}>\n {resource}\n </PreviewSingle>\n );\n }\n case ResourceDisplayType.LargeSingle:\n log.info({ code: \"web-220216-1405\", msg: DefaultLogMessage.NotImplemented, data: { displayType } });\n return null;\n case ResourceDisplayType.PromoSingle: {\n const resource = resources ? resources[0] : null;\n if (!resource) return null;\n if (resource.contentType !== \"BannerLayoutItemContent\") return null;\n return (\n <BannerSingle highlight={isHighlight?.(resource.id) ?? false} resourceType={resource.contentType} section={context}>\n {resource}\n </BannerSingle>\n );\n }\n case ResourceDisplayType.Top:\n case ResourceDisplayType.Unknown:\n case ResourceDisplayType.Deeplink:\n log.error({ code: \"web-220216-1402\", msg: DefaultLogMessage.NotImplemented, data: { displayType } });\n return null;\n }\n};\n","import type { ComponentChild } from \"preact\";\nimport { Fragment, h } from \"preact\";\nimport { useMemo, useRef, useState } from \"preact/hooks\";\nimport \"./ResourceSection.scss\";\nimport { Content } from \"./Content\";\nimport { useSkeletonItems } from \"./useSkeletonItems\";\nimport { useTranslations } from \"global/config\";\nimport { ResourceSectionTestLocator, TestLocator } from \"global/constants\";\nimport { getLinkFromContext } from \"services/resource\";\nimport type { Multiselect } from \"services/selection\";\nimport type { DropProps } from \"models/app\";\nimport type { PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourceModel, ResourcePreviewModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport type { NotificationConversion } from \"models/domain/NotificationModel\";\nimport { useLinkAndPreviewContext, useResizeObserver, useSectionIsHidden } from \"components/shared/hooks\";\nimport type { Pagination } from \"components/shared/hooks/usePagination\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { PreviewAction } from \"components/molecules/preview\";\nimport type { ScrollerNavigateCallback, ScrollerNavigatePropeties } from \"components/organisms/scroller/options\";\n\ninterface Props {\n context: SectionContextModel;\n showTitle?: boolean;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n totalItems?: number;\n resources: ResourcePreviewModel[] | null;\n showAll?: ResourceModel | null;\n buttons?: ComponentChild;\n customIcon?: IconName;\n customIconAction?: (resource: ResourcePreviewModel) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pagination?: Pagination<any>;\n paginationCallback?: () => void;\n skeletonItems?: true;\n getDropProps?: (model: ResourcePreviewModel, index: number) => DropProps;\n highlightedId?: string;\n multiselect?: Multiselect;\n locked?: boolean;\n}\n\nexport const ResourceSection = ({\n showTitle,\n totalItems,\n resources,\n context,\n showAll,\n onAction,\n buttons,\n customIcon,\n customIconAction,\n pagination,\n paginationCallback,\n skeletonItems,\n getDropProps,\n highlightedId,\n multiselect,\n locked\n}: Props) => {\n const navigateScrollerRef = useRef<ScrollerNavigateCallback>(null);\n const [navigateProperties, setNavigateProperties] = useState<ScrollerNavigatePropeties | null>(null);\n\n const isHidden = resources != null && resources.length === 0;\n useSectionIsHidden(context, isHidden);\n\n const translations = useTranslations();\n const ref = useRef<HTMLDivElement>(null);\n const width = useResizeObserver(ref.current)?.width ?? null;\n\n const displayType = context.displayType;\n const disableUi = displayType === ResourceDisplayType.PromoSingle || displayType === ResourceDisplayType.LargeSingle;\n\n const title = useMemo(() => (showTitle ? getLinkFromContext(context)?.text : null), [showTitle, context]);\n const showTop = displayType !== ResourceDisplayType.Single && displayType !== ResourceDisplayType.LargeSingle && (showTitle == true || showAll != null || buttons != null);\n const showAllLink = useLinkAndPreviewContext(context.type, context.resource, context, 0);\n\n resources = useSkeletonItems({ skeletonItems, displayType, resources, section: context });\n\n if (!displayType || isHidden) return null;\n\n return (\n <section ref={ref} className=\"resourceSection BUz\" data-cy={ResourceSectionTestLocator(context)}>\n {showTop && (\n <div className=\"top\">\n {!disableUi && <h1>{title ?? \"\"}</h1>}\n <div className=\"menu\">\n {buttons}\n {showAll && !disableUi && (\n <Button\n className=\"showAll\"\n design={ButtonDesign.TextBrandSmall}\n onClick={() => {\n onAction && showAllLink.preview && onAction(PreviewAction.Navigate, showAllLink.preview, null);\n }}\n link={showAllLink}\n testLocator={TestLocator.ResourceSectionShowAllButton}>\n {translations.ShowAll}\n </Button>\n )}\n {navigateProperties != null && !disableUi && (\n <Fragment>\n <Button\n design={ButtonDesign.LightSmall}\n icon={IconName.ArrowLeft16}\n onClick={() => {\n navigateScrollerRef?.current && navigateScrollerRef.current(-1);\n }}\n disabled={!navigateProperties.left}\n testLocator={TestLocator.ResourceSectionBackwardButton}\n />\n <Button\n design={ButtonDesign.LightSmall}\n icon={IconName.ArrowRight16}\n onClick={() => {\n navigateScrollerRef?.current && navigateScrollerRef.current(1);\n }}\n disabled={!navigateProperties.right}\n testLocator={TestLocator.ResourceSectionForwardButton}\n />\n </Fragment>\n )}\n </div>\n </div>\n )}\n <Content\n multiselect={multiselect}\n context={context}\n customIcon={customIcon}\n customIconAction={customIconAction}\n displayType={displayType}\n onAction={onAction}\n onScrollerNavigatePropertiesChange={setNavigateProperties}\n pagination={pagination ?? null}\n paginationCallback={paginationCallback}\n totalItems={totalItems}\n resources={resources}\n scrollerNavigateRef={navigateScrollerRef}\n width={width}\n getDropProps={getDropProps}\n highlightId={highlightedId}\n locked={locked}\n />\n </section>\n );\n};\n","import { h } from \"preact\";\nimport type { Ref } from \"preact/hooks\";\nimport { getComparableId } from \"services/resource\";\nimport type { DragProps, DropProps } from \"models/app\";\nimport type { PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport type { NotificationConversion } from \"models/domain/NotificationModel\";\nimport { MediaSize, useAppMediaSize, useSectionScrollRestoration } from \"components/shared/hooks\";\nimport { CoverSize } from \"components/atoms/cover\";\nimport type { PreviewAction } from \"components/molecules/preview\";\nimport { ResourcePreviewSquare } from \"components/molecules/preview/squares/ResourcePreviewSquare\";\nimport Scroller from \"components/organisms/scroller\";\nimport type { ScrollerNavigateCallback, ScrollerNavigatePropetiesCallback } from \"components/organisms/scroller/options\";\nimport { ScrollerAlign, ScrollerEffect, ScrollerPurpose, ScrollerSize } from \"components/organisms/scroller/options\";\n\ntype DisplayType = ResourceDisplayType.Scroller | ResourceDisplayType.LargeScroller;\n\ninterface Props {\n section: SectionContextModel;\n navigateRef: Ref<ScrollerNavigateCallback | null>;\n onNavigatePropertiesChange: ScrollerNavigatePropetiesCallback;\n context: SectionContextModel;\n dragProps: DragProps;\n getDropProps?: (model: ResourcePreviewModel, index: number) => DropProps;\n onAction: (action: PreviewAction, preview: PreviewContextModel, notificationAction: NotificationConversion | null) => void;\n isHighlight?: (id: string) => boolean;\n displayType: DisplayType;\n resources: ResourcePreviewModel[] | null;\n}\n\nconst getSizes = (displayType: DisplayType, isMobile: boolean) => {\n switch (displayType) {\n case ResourceDisplayType.Scroller: {\n return {\n scrollerSize: isMobile ? ScrollerSize.Medium : ScrollerSize.MediumLarge,\n coverSize: isMobile ? CoverSize.Size144 : CoverSize.Size208\n };\n }\n case ResourceDisplayType.LargeScroller: {\n return { scrollerSize: ScrollerSize.Large, coverSize: CoverSize.Size256 };\n }\n }\n};\nexport const ResourceSectionScroller = ({\n resources,\n onAction,\n section,\n navigateRef,\n onNavigatePropertiesChange,\n context,\n getDropProps,\n dragProps,\n isHighlight,\n displayType\n}: Props) => {\n const restoration = useSectionScrollRestoration({ section });\n const mediaSize = useAppMediaSize();\n const { scrollerSize, coverSize } = getSizes(displayType, mediaSize === MediaSize.Mobile);\n\n return (\n <Scroller\n size={scrollerSize}\n restoration={restoration}\n align={ScrollerAlign.Left}\n purpose={ScrollerPurpose.Scroll}\n effect={ScrollerEffect.None}\n navigateRef={navigateRef}\n onNavigatePropertiesChange={onNavigatePropertiesChange}>\n {resources?.map((resource, i) => (\n <ResourcePreviewSquare\n context={context}\n dragProps={dragProps}\n dropProps={getDropProps?.(resource, i) ?? null}\n key={getComparableId(resource)}\n onAction={onAction}\n resource={resource}\n size={coverSize}\n rank={i}\n highlight={isHighlight?.(resource.id) ?? false}\n disableLazyLoad\n />\n ))}\n </Scroller>\n );\n};\n","export * from \"./ResourceSection\";\n","import { useMemo } from \"preact/hooks\";\nimport { getResourceDisplayCount } from \"services/resource\";\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel, ResourceDisplayType } from \"models/domain\";\nimport { createSkeletonPreviewModels } from \"models/domain/SkeletonModel\";\n\ninterface Props {\n skeletonItems?: true;\n displayType: ResourceDisplayType | null;\n resources: ResourcePreviewModel[] | null;\n section: SectionContextModel;\n}\nexport function useSkeletonItems({ skeletonItems, displayType, resources, section }: Props) {\n return useMemo(() => {\n if (!skeletonItems || resources != null || displayType == null) return resources;\n const estimatedCount = getResourceDisplayCount(displayType);\n\n return createSkeletonPreviewModels(section.type, section.resource, estimatedCount);\n }, [skeletonItems, displayType, resources, section]);\n}\n","import { h } from \"preact\";\nimport type { ComponentChildren } from \"preact\";\nimport { forwardRef } from \"preact/compat\";\nimport \"./ScrollerWithFade.scss\";\n\ninterface Props {\n children: ComponentChildren;\n tabIndex?: number;\n disableFade?: boolean;\n}\nexport const ScrollerWithFade = forwardRef<HTMLDivElement, Props>(({ children, tabIndex, disableFade }, ref) => {\n return (\n <div className=\"scroll e2d\" ref={ref} tabIndex={tabIndex}>\n {children}\n {!disableFade && <div className=\"fadeOut\" />}\n </div>\n );\n});\n","export * from \"./ScrollerWithFade\";\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { ComponentChild, h } from \"preact\";\nimport \"./Scroller.scss\";\nimport type { MutableRef } from \"preact/hooks\";\nimport useScroller from \"./hooks/useScroller\";\nimport { getAjustedItemSize, getItemSize } from \"./hooks/useScroller/index\";\nimport { ScrollerAlign, ScrollerSize, ScrollerSnap, ScrollerPurpose, ScrollerEffect, ScrollerNavigateCallback, ScrollerNavigatePropetiesCallback } from \"./options\";\nimport { ScrollRestorationRef } from \"components/shared/hooks\";\n\nexport interface ScrollerProps {\n children?: ComponentChild[];\n size: ScrollerSize | number;\n align?: ScrollerAlign;\n scrollSnap?: ScrollerSnap;\n purpose?: ScrollerPurpose;\n effect?: ScrollerEffect;\n onSelectedChange?: (index: number) => void;\n index?: number;\n navigateRef?: MutableRef<ScrollerNavigateCallback | null>;\n onNavigatePropertiesChange?: ScrollerNavigatePropetiesCallback;\n restoration: ScrollRestorationRef;\n}\n\nexport const Scroller = (props: ScrollerProps) => {\n const { restoration, children, scrollSnap, align = ScrollerAlign.Center, size } = props;\n\n const padding = align === ScrollerAlign.Center ? `calc(50% - (${getItemSize(size)}px/2))` : \"\";\n const olStyle = { paddingLeft: padding, paddingRight: padding };\n\n const { scrollIndexDecimal, containerRef, contentRef, scrollSnapFix, adjustSize, adjustTransform, selectedIndex, scrollIndex, scrollState, gap } = useScroller(props);\n\n return (\n <div\n className={`scroller aKT --size-${size} --align-${align} --scrollSnap-${scrollSnap} ${\n scrollSnap ? `--scrollSnapType-${scrollSnap.type} --scrollSnapStop-${scrollSnap.stop}` : \"\"\n } --scrollSnapFix-${scrollSnapFix} --scrollState-${scrollState} --gap-${gap}`}>\n <div\n ref={(r) => {\n containerRef.current = r;\n restoration.scrollRef.current = r;\n }}\n className=\"scroll\">\n <ol\n style={olStyle}\n ref={(r) => {\n contentRef.current = r;\n restoration.contentRef.current = r;\n }}>\n {children &&\n children.map((item, itemIndex) => {\n const itemAjust1 = getAjustedItemSize(scrollIndexDecimal, itemIndex, adjustSize) / adjustSize;\n const itemAjust2 = getAjustedItemSize(scrollIndexDecimal, itemIndex, adjustTransform) / adjustTransform;\n const width = getItemSize(size) * itemAjust1;\n const scale = itemAjust2;\n return (\n <li\n key={itemIndex}\n className={`${itemIndex === scrollIndex ? \"active\" : \"\"} ${itemIndex === selectedIndex ? \"selected\" : \"\"}`}\n style={{ width: `${width}px` }}>\n <div className=\"scale\" style={{ transform: `scale(${scale})` }}>\n {item}\n </div>\n </li>\n );\n })}\n </ol>\n </div>\n </div>\n );\n};\n","import { useCallback, useEffect, useState } from \"preact/hooks\";\nimport { ScrollerPurpose, ScrollerState, ScrollerAlign, ScrollerSnapType, ScrollerSnapStop, ScrollerEffect, ScrollerNavigateCallback } from \"../options\";\nimport { ScrollerProps } from \"../Scroller\";\nimport { getMaxIndex } from \"./useScroller/getMaxIndex\";\nimport { getEffectAjust, useUserScroll, useScrollIndex, useScrollTo } from \"./useScroller/index\";\nimport { useScrollerNavigateProperties } from \"./useScroller/useScrollerNavigateProperties\";\nimport { useScrollZone } from \"./useScroller/useScrollZone\";\nimport { useRefUpdate } from \"components/shared/hooks\";\nimport { useAppMediaSize, MediaSize } from \"components/shared/hooks/useAppMediaSize\";\nimport { ScrollAxis } from \"components/shared/hooks/useScrollPosition\";\nimport { useScrollState } from \"components/shared/hooks/useScrollState\";\n\nconst useScroller = ({\n children,\n size,\n onSelectedChange,\n align = ScrollerAlign.Center,\n purpose = ScrollerPurpose.Selection,\n scrollSnap = {\n type: ScrollerSnapType.Mandatory,\n stop: ScrollerSnapStop.Normal\n },\n effect = ScrollerEffect.ActiveGrow,\n index = 0,\n navigateRef,\n onNavigatePropertiesChange\n}: ScrollerProps) => {\n const appSize = useAppMediaSize();\n\n const [state, setState] = useState<ScrollerState>(ScrollerState.ComponentLoad);\n\n const adjustTransform = getEffectAjust(effect);\n const scrollSnapFix = scrollSnap != null && effect === ScrollerEffect.ActiveGrow;\n\n const gapSize = appSize === MediaSize.Mobile ? 16 : 24;\n const adjustSize = !scrollSnapFix ? adjustTransform : 1;\n const gap = !scrollSnapFix ? gapSize : 0;\n\n const [selectedIndex, setSelectedIndex] = useState(index);\n const containerRef = useRefUpdate<HTMLElement>();\n const contentRef = useRefUpdate<HTMLElement>();\n\n const scrollState = useScrollState(containerRef.current, contentRef.current, ScrollAxis.x);\n const { zoneCount, canvasCount } = useScrollZone(containerRef?.current, contentRef?.current, size, align, adjustSize, gap);\n const maxIndex = getMaxIndex(children?.length ?? 0, canvasCount, align, purpose);\n const { inUserScroll, inTouch } = useUserScroll(containerRef.current);\n const { scrollIndex, scrollIndexDecimal } = useScrollIndex(containerRef.current, size, align, selectedIndex, adjustSize, gap);\n\n useScrollerNavigateProperties(purpose, selectedIndex, maxIndex, scrollState, onNavigatePropertiesChange);\n\n const onScrollTo = () => setState(ScrollerState.None);\n useScrollTo(containerRef.current, selectedIndex, state, false, align, size, adjustSize, gap, onScrollTo);\n\n useEffect(() => {\n if (selectedIndex === index) return;\n onSelectedChange && onSelectedChange(selectedIndex);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedIndex]);\n\n useEffect(() => {\n setState(ScrollerState.ExternalChange);\n setSelectedIndex(index);\n }, [index]);\n\n useEffect(() => {\n if (state === ScrollerState.None && inTouch) setState(ScrollerState.UserScroll);\n if (state === ScrollerState.UserScroll && !inUserScroll) setState(ScrollerState.UserScrollStop);\n }, [state, inUserScroll, inTouch]);\n\n useEffect(() => {\n if (state === ScrollerState.UserScrollStop) {\n setState(ScrollerState.None);\n setSelectedIndex(scrollIndex);\n }\n }, [state, scrollIndex]);\n\n const navigate: ScrollerNavigateCallback = useCallback(\n (add: 1 | -1) => {\n const getNewIndex = () => {\n let index = selectedIndex;\n\n index += add * zoneCount;\n index = Math.round(index / zoneCount) * zoneCount;\n\n if (index < 0) index = 0;\n if (index > maxIndex) index = maxIndex;\n return index;\n };\n\n setState(ScrollerState.ButtonClick);\n setSelectedIndex(getNewIndex());\n },\n [maxIndex, zoneCount, selectedIndex]\n );\n if (navigateRef) navigateRef.current = navigate;\n\n return {\n scrollIndexDecimal,\n containerRef,\n contentRef,\n scrollSnapFix,\n adjustSize,\n adjustTransform,\n selectedIndex,\n scrollIndex,\n scrollState,\n gap\n };\n};\nexport default useScroller;\n","import { ScrollerSize, ScrollerAlign } from \"../../options\";\nimport { getAlignOffset } from \"./getAlignOffset\";\nimport { getItemSize } from \"./getItemSize\";\n\nexport const getActiveItemIndex = (container: HTMLElement, size: ScrollerSize | number, align: ScrollerAlign, ajust: number, gap: number) => {\n const left = container.scrollLeft;\n const childSize = getItemSize(size);\n const offset = getAlignOffset(size, align);\n\n let index = (left - offset) / (childSize / ajust + gap);\n if (index < -0.5) index = -0.5;\n return index;\n};\n","import { ScrollerSize, ScrollerAlign } from \"../../options\";\nimport { getAlignOffset } from \"./getAlignOffset\";\nimport { getItemSize } from \"./getItemSize\";\n\nexport const getActiveItemScrollLeft = (index: number, size: ScrollerSize | number, align: ScrollerAlign, ajust: number, margin: number) => {\n const childSize = getItemSize(size);\n const offset = getAlignOffset(size, align);\n const left = (childSize / ajust + margin) * index + offset;\n return left;\n};\n","export const getAjustedItemSize = (activeIndex: number, itemIndex: number, adjust: number) => {\n if (adjust === 1) return 1;\n\n const offset = Math.abs(activeIndex - itemIndex);\n let add = (adjust - 1) * ((1 - offset) / 1);\n if (add < 0) add = 0;\n return 1 + add;\n};\n","import { ScrollerSize, ScrollerAlign } from \"../../options\";\n\nexport const getAlignOffset = (size: ScrollerSize | number, align: ScrollerAlign) => {\n //const childSize = getItemSize(size);\n switch (align) {\n case ScrollerAlign.Center:\n return 0;\n case ScrollerAlign.Left:\n return 0;\n }\n};\n","import { ScrollerEffect } from \"../../options\";\n\nexport const getEffectAjust = (effect: ScrollerEffect) => {\n switch (effect) {\n case ScrollerEffect.None:\n return 1;\n case ScrollerEffect.ActiveGrow:\n return 275 / 227;\n }\n};\n","import { ScrollerSize } from \"../../options\";\n\nexport const getItemSize = (size: ScrollerSize | number): number => {\n switch (size) {\n case ScrollerSize.Medium:\n return 144;\n case ScrollerSize.MediumLarge:\n return 208;\n case ScrollerSize.Large:\n return 256;\n default:\n return size;\n }\n};\n","import { ScrollerAlign, ScrollerPurpose } from \"../../options\";\n\nexport function getMaxIndex(itemCount: number, canvasCount: number, align: ScrollerAlign, purpose: ScrollerPurpose) {\n let maxIndex = itemCount === 0 ? 0 : itemCount - 1;\n if (align === ScrollerAlign.Left && purpose == ScrollerPurpose.Scroll) maxIndex = maxIndex - canvasCount + 2;\n if (maxIndex < 0) maxIndex = 0;\n return maxIndex;\n}\n","export * from \"./getActiveItemIndex\";\nexport * from \"./getActiveItemScrollLeft\";\nexport * from \"./getAjustedItemSize\";\nexport * from \"./getAlignOffset\";\nexport * from \"./getEffectAdjust\";\nexport * from \"./getItemSize\";\nexport * from \"./getMaxIndex\";\nexport * from \"./useScrollerNavigateProperties\";\nexport * from \"./useScrollIndex\";\nexport * from \"./useScrollTo\";\nexport * from \"./useScrollZone\";\nexport * from \"./useUserScroll\";","import { useEffect, useState } from \"preact/hooks\";\nimport { ScrollerSize, ScrollerAlign } from \"../../options\";\nimport { getActiveItemIndex } from \"./getActiveItemIndex\";\nimport { useScrollPosition, ScrollAxis } from \"components/shared/hooks\";\n\nexport const useScrollIndex = (element: HTMLElement | null, size: ScrollerSize | number, align: ScrollerAlign, selectedIndex: number, ajust: number, gap: number) => {\n const scrollLeft = useScrollPosition(element, ScrollAxis.x);\n\n const [scrollIndex, setScrollIndex] = useState(selectedIndex);\n const [scrollIndexDecimal, setScrollIndexDecimal] = useState(selectedIndex);\n\n useEffect(() => {\n if (!element) return;\n\n const indexDecimal = getActiveItemIndex(element, size, align, ajust, gap);\n const index = Math.round(indexDecimal);\n\n setScrollIndex(index);\n setScrollIndexDecimal(indexDecimal);\n }, [element, scrollLeft, size, align, ajust, gap]);\n\n return { scrollIndex, scrollIndexDecimal };\n};\n","import { useLayoutEffect } from \"preact/hooks\";\nimport { ScrollerAlign, ScrollerState, ScrollerSize } from \"../../options\";\nimport { getActiveItemScrollLeft } from \"./getActiveItemScrollLeft\";\n\nexport const useScrollTo = (\n container: HTMLElement | null,\n index: number,\n state: ScrollerState,\n jsSnap: boolean,\n align: ScrollerAlign,\n size: ScrollerSize | number,\n ajust: number,\n gap: number,\n onScroll: () => void\n) => {\n useLayoutEffect(() => {\n if (!container) return;\n if (\n !(\n state === ScrollerState.ButtonClick ||\n state === ScrollerState.ComponentLoad ||\n (jsSnap && state === ScrollerState.UserScrollStop) ||\n state === ScrollerState.ExternalChange\n )\n )\n return;\n\n const behavior = (() => {\n switch (document.visibilityState) {\n case \"visible\":\n return \"smooth\";\n case \"hidden\":\n return \"auto\";\n }\n })();\n\n const left = getActiveItemScrollLeft(Math.round(index), size, align, ajust, gap);\n container.scroll({ left, behavior });\n\n onScroll();\n });\n};\n","import { ScrollerSize, ScrollerAlign } from \"../../options\";\nimport { getItemSize } from \"./getItemSize\";\nimport { useResizeObserver } from \"components/shared/hooks\";\n\nexport function useScrollZone(container: HTMLElement | null, content: HTMLElement | null, size: ScrollerSize | number, align: ScrollerAlign, ajust: number, gap: number) {\n const canvasSize = useResizeObserver(container)?.width ?? 0 - getPadding(content);\n const childSize = getItemSize(size);\n const canvasCountDecimal = (canvasSize + gap) / (childSize + gap);\n const canvasCount = Math.floor(canvasCountDecimal);\n\n let zoneCount = Math.round((canvasCountDecimal * 50) / 100);\n if (zoneCount < 1) zoneCount = 1;\n else if (zoneCount > canvasCount) zoneCount = canvasCount;\n\n if (zoneCount < 1) zoneCount = 1;\n\n return { zoneCount, canvasCount };\n}\n\nfunction getPadding(element: HTMLElement | null) {\n if (!element) return 0;\n const computed = getComputedStyle(element);\n let padding = parseInt(computed.paddingLeft, 10) + parseInt(computed.paddingRight, 10);\n if (isNaN(padding)) padding = 0;\n return padding;\n}\n","import { useState, useLayoutEffect } from \"preact/hooks\";\nimport { ScrollerNavigatePropeties } from \"../..\";\nimport { ScrollerPurpose } from \"../../options\";\nimport { ScrollState } from \"components/shared/hooks\";\n\nexport const useScrollerNavigateProperties = (\n purpose: ScrollerPurpose,\n selectedIndex: number,\n maxIndex: number,\n scrollState: ScrollState,\n onNavigatePropertiesChange?: (properties: ScrollerNavigatePropeties) => void\n) => {\n const [navigationProperties, setNavigationProperties] = useState<ScrollerNavigatePropeties | null>(null);\n const left = navigationProperties?.left;\n const right = navigationProperties?.right;\n\n useLayoutEffect(() => {\n if (onNavigatePropertiesChange == undefined) return;\n\n let newLeft: boolean;\n let newRight: boolean;\n\n if (purpose === ScrollerPurpose.Scroll) {\n newLeft = scrollState === ScrollState.InBetween || scrollState === ScrollState.End;\n newRight = scrollState === ScrollState.InBetween || scrollState === ScrollState.Start;\n } else {\n newLeft = selectedIndex > 0;\n newRight = selectedIndex < maxIndex;\n }\n\n if (left === newLeft && right === newRight) return;\n\n const newNavProps: ScrollerNavigatePropeties = { left: newLeft, right: newRight };\n setNavigationProperties(newNavProps);\n onNavigatePropertiesChange(newNavProps);\n }, [onNavigatePropertiesChange, maxIndex, selectedIndex, left, right, purpose, scrollState]);\n};\n","import { useEffect, useState } from \"preact/hooks\";\nimport { useScrollPosition, ScrollAxis } from \"components/shared/hooks/useScrollPosition\";\n\nexport const useUserScroll = (element: HTMLElement | null) => {\n const scrollLeft = useScrollPosition(element, ScrollAxis.x);\n const [inMove, setInMove] = useState(false);\n const [inTouch, setInTouch] = useState(false);\n\n useEffect(() => {\n setInMove(true);\n const timeout = setTimeout(() => setInMove(false), 150);\n\n return () => {\n clearTimeout(timeout);\n setInMove(false);\n };\n }, [scrollLeft]);\n\n useEffect(() => {\n if (!element) return;\n const touchEnd = () => {\n setInTouch(false);\n element.removeEventListener(\"touchend\", touchEnd);\n };\n const touchStart = () => {\n setInTouch(true);\n element.addEventListener(\"touchend\", touchEnd, { passive: true });\n };\n const mouseUp = () => {\n setInTouch(false);\n element.removeEventListener(\"mouseup\", mouseUp);\n };\n const mouseDown = () => {\n setInTouch(true);\n element.addEventListener(\"mouseup\", mouseUp, { passive: true });\n };\n\n element.addEventListener(\"touchstart\", touchStart, { passive: true });\n element.addEventListener(\"mousedown\", mouseDown);\n\n return () => {\n touchEnd();\n mouseUp();\n element.removeEventListener(\"touchstart\", touchStart);\n element.removeEventListener(\"mousedown\", mouseDown);\n };\n }, [element]);\n\n const inUserScroll = inMove || inTouch;\n return { inUserScroll, inTouch };\n};\n","export { Scroller as default } from \"./Scroller\";\nexport * from \"./options\";","import { ScrollerProps } from \"./Scroller\";\nimport { ScrollRestorationRef } from \"components/shared/hooks\";\n\nexport enum ScrollerSize {\n Medium = \"medium\",\n MediumLarge = \"mediumLarge\",\n Large = \"large\"\n}\n\nexport enum ScrollerPurpose {\n Selection = \"selection\",\n Scroll = \"scroll\"\n}\n\nexport enum ScrollerAlign {\n Left = \"left\",\n Center = \"center\"\n}\n\nexport interface ScrollerSnap {\n type: ScrollerSnapType;\n stop: ScrollerSnapStop;\n}\n\nexport enum ScrollerSnapType {\n Proximity = \"proximity\",\n Mandatory = \"mandatory\"\n}\n\nexport enum ScrollerSnapStop {\n Normal = \"normal\",\n Always = \"always\"\n}\n\nexport enum ScrollerEffect {\n None = \"none\",\n ActiveGrow = \"activeGrow\"\n}\n\nexport enum ScrollerState {\n None = \"none\",\n ComponentLoad = \"componentLoad\",\n ExternalChange = \"externalChange\",\n ButtonClick = \"buttonClick\",\n UserScroll = \"userScroll\",\n UserScrollStop = \"userScrollStop\"\n}\n\nexport type ScrollerNavigateCallback = (direction: -1 | 1) => void;\nexport type ScrollerNavigatePropeties = { left: boolean; right: boolean };\nexport type ScrollerNavigatePropetiesCallback = (properties: ScrollerNavigatePropeties) => void;\n\nexport const maxiPlayerScrollerOptions = (\n size: ScrollerSize | number,\n restoration: ScrollRestorationRef,\n onSelectedChange: (index: number) => void,\n index?: number\n): ScrollerProps => {\n const props: ScrollerProps = {\n size,\n restoration,\n align: ScrollerAlign.Center,\n scrollSnap: { type: ScrollerSnapType.Mandatory, stop: ScrollerSnapStop.Always },\n purpose: ScrollerPurpose.Selection,\n effect: ScrollerEffect.ActiveGrow,\n onSelectedChange,\n index\n };\n return props;\n};\n","import type { ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\nimport { useCallback, useRef, useState } from \"preact/hooks\";\nimport \"./Search.scss\";\nimport { useSearch } from \"./useSearch\";\nimport { dispatch } from \"global\";\nimport { USER_ADD_SEARCH_HISTORY, USER_CLICK_SEARCH_RESULT } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { search } from \"global/constants\";\nimport { useDebouncedState } from \"services/cancellation/debounce\";\nimport { isSearchMixedResultPreviewModel } from \"services/playable\";\nimport { getSearchViewState, SearchViewState } from \"services/search/searchViewService\";\nimport type { PageContextModel, PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { useAppMediaSize } from \"components/shared/hooks\";\nimport { usePageClick } from \"components/shared/hooks/usePageClick\";\nimport { useUserRecentSearches } from \"components/shared/hooks/useSearchHistory\";\nimport { SearchTextInput } from \"components/atoms/controls/textInput/inputs\";\nimport { PreviewAction } from \"components/molecules/preview\";\nimport { SearchResultAreaSource, SearchResultArea } from \"components/molecules/searchResultArea\";\n\nexport enum SearchResultDisplay {\n Hide = \"Hide\",\n Always = \"Always\",\n WhenFocus = \"WhenFocus\"\n}\n\ninterface Props {\n onFocus?: () => void;\n onBlur?: (ev: Event) => boolean;\n resultsDisplay: SearchResultDisplay;\n context: PageContextModel;\n}\n\nexport const Search = ({ onFocus, onBlur, resultsDisplay, context }: Props) => {\n const [open, setOpen] = useState(false);\n\n const searchDebounceMs = search.searchDebounceMs;\n const [criterion, setCriterion, setCriterionInstant] = useDebouncedState(\"\", searchDebounceMs);\n\n const { result, state } = useSearch(criterion);\n\n const hasHistory = useUserRecentSearches().length > 0;\n const size = useAppMediaSize();\n const translations = useTranslations();\n\n const ref = useRef<HTMLDivElement>(null);\n\n const viewState = getSearchViewState(result, state, hasHistory);\n const showResults = resultsDisplay === SearchResultDisplay.Always || (resultsDisplay !== SearchResultDisplay.Hide && open && viewState !== SearchViewState.None);\n\n usePageClick(() => setOpen(false), ref);\n\n const onChange = useCallback(\n (value: string) => {\n if (open) {\n setCriterion(value);\n } else {\n setCriterionInstant(value);\n setOpen(true);\n }\n },\n [open, setCriterion, setCriterionInstant]\n );\n\n const onFocusFn = useCallback(() => {\n setOpen(true);\n if (onFocus) onFocus();\n }, [onFocus]);\n\n const onBlurFn = useCallback(\n (ev: Event): boolean => {\n if (onBlur) {\n const ok = onBlur(ev);\n if (!ok) return ok;\n }\n return true;\n },\n [onBlur]\n );\n\n const onAction = useCallback(\n (action: PreviewAction, source: SearchResultAreaSource, preview: PreviewContextModel) => {\n if (action === PreviewAction.Navigate) setOpen(false);\n if (!isSearchMixedResultPreviewModel(preview.resource)) return;\n dispatch({ type: USER_CLICK_SEARCH_RESULT, payload: { source, preview, criterion } });\n if (source === SearchResultAreaSource.History) return;\n dispatch({ type: USER_ADD_SEARCH_HISTORY, payload: { item: preview.resource } });\n },\n [criterion]\n );\n\n return [\n <div ref={ref} key={1} className={`search y1s`}>\n <SearchTextInput value=\"\" placeholder={translations.Search} onChange={onChange} onFocus={onFocusFn} onBlur={onBlurFn} />\n {showResults && (\n <SearchDropDown>\n <SearchResultArea context={context} state={viewState} search={result ?? null} onAction={onAction} size={size} />\n </SearchDropDown>\n )}\n </div>,\n <div key={2} className={`searchBackground --show-${showResults}`} onContextMenu={() => setOpen(false)} />\n ];\n};\n\nconst SearchDropDown = ({ children }: { children: ComponentChildren }) => {\n return <div className=\"searchDropDown\">{children}</div>;\n};\n","export * from \"./Search\";\nexport * from \"./useSearch\";","import { useState } from \"preact/hooks\";\nimport { search } from \"global/constants\";\nimport { getLimitedSearchResultMain, getLimitedSearchResultPlaylists } from \"services/backend\";\nimport { useCancellingEffect } from \"services/cancellation/useCancellingEffect\";\nimport { log } from \"services/logger\";\nimport { isEmptyResult } from \"services/search\";\nimport type { SearchResultModel } from \"models/domain/SearchResultModel\";\nimport { mergeSearchResultModel } from \"models/domain/SearchResultModel\";\nimport { SearchState } from \"models/view\";\n\nexport function useSearch(criterion: string) {\n const [state, setState] = useState<SearchState>(SearchState.None);\n const [result, setResult] = useState<SearchResultModel | null>(null);\n\n criterion = criterion.trim();\n\n useCancellingEffect(\n async (cancellationToken) => {\n if (!criterion) {\n setResult(null);\n setState(SearchState.None);\n return;\n }\n\n const results = {\n main: null as SearchResultModel | null,\n playlists: null as SearchResultModel | null\n };\n\n try {\n const promise1 = getLimitedSearchResultMain({ criterion }).then((result) => {\n results.main = result.model;\n });\n const promise2 = getLimitedSearchResultPlaylists({ criterion }).then((result) => {\n results.playlists = result.model;\n });\n\n // we give the main search a chance to return first, since its on top\n await Promise.any([promise1, delayTask(search.initialDelayBeforeSpinnerMs)]);\n if (cancellationToken.isCancelled) return;\n\n if (results.main && !isEmptyResult(results.main)) {\n setResult(results.main);\n setState(SearchState.Success);\n } else {\n // but we go to a loading-state if we didnt get a quick result\n setState(SearchState.Fetching);\n\n // and resume the wait for the main search for a longer duration\n await Promise.any([promise1, delayTask(search.mainSearchPriorityMs)]);\n if (cancellationToken.isCancelled) return;\n\n if (results.main && !isEmptyResult(results.main)) {\n setResult(results.main);\n setState(SearchState.Success);\n }\n }\n\n // then we wait for either result\n await Promise.any([promise1, promise2]);\n if (cancellationToken.isCancelled) return;\n setResult(mergeSearchResultModel(results.main, results.playlists));\n const hasEitherResults = !!results.main || !!results.playlists;\n setState(hasEitherResults ? SearchState.Success : SearchState.Failed);\n\n // then we wait for both results\n await Promise.all([promise1, promise2]);\n if (cancellationToken.isCancelled) return;\n setResult(mergeSearchResultModel(results.main, results.playlists));\n const hasBothResults = !!results.main && !!results.playlists;\n setState(hasBothResults ? SearchState.Success : SearchState.Failed);\n } catch (e) {\n log.error({ code: \"web-220303-1530\", msg: \"Error during search\", error: e });\n if (cancellationToken.isCancelled) return;\n setResult(null);\n setState(SearchState.Failed);\n }\n },\n [criterion]\n );\n\n return !criterion ? { result: null, state: SearchState.None } : { result, state };\n}\n\nconst delayTask = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));\n","import { h } from \"preact\";\nimport { forwardRef, useEffect, useState } from \"preact/compat\";\nimport \"./Toast.scss\";\nimport type { OpenToastModel } from \"./toasts\";\nimport { dispatch, messageBus } from \"global\";\nimport { TOAST_CLOSE, TOAST_OPEN } from \"global/actions\";\nimport { animations } from \"global/constants\";\n\nexport enum ToastDuration {\n Short,\n Long\n}\n\nfunction getDurationMs(duration: ToastDuration) {\n switch (duration) {\n case ToastDuration.Short:\n return animations.toastDurationShort;\n case ToastDuration.Long:\n return animations.toastDurationLong;\n }\n}\n\ninterface Props {\n className?: string;\n}\n\nexport const AppToast = forwardRef<HTMLDialogElement, Props>(({ className }, ref) => {\n const [toast, setToast] = useState<h.JSX.Element | null>(null);\n const open = toast != null;\n\n useEffect(() => {\n let timeout: number | null;\n\n const unsubscribe1 = messageBus.subscribeEvery(TOAST_OPEN, (action) => {\n const { toast: newToast, duration } = action.payload.toast;\n\n if (timeout != null) clearTimeout(timeout);\n setToast(newToast);\n\n timeout = window.setTimeout(() => {\n if (timeout != null) clearTimeout(timeout);\n setToast(null);\n }, getDurationMs(duration));\n });\n\n const unsubscribe2 = messageBus.subscribeEvery(TOAST_CLOSE, (action) => {\n if (timeout != null) clearTimeout(timeout);\n setToast(null);\n });\n\n return () => {\n unsubscribe1();\n unsubscribe2();\n if (timeout != null) clearTimeout(timeout);\n setToast(null);\n };\n }, []);\n\n return (\n <dialog className={`appToast dtn ${className ?? \"\"} --open-${open}`} ref={ref}>\n {toast}\n </dialog>\n );\n});\n\nexport function openToast(toast: OpenToastModel) {\n dispatch({ type: TOAST_OPEN, payload: { toast } });\n}\n\nexport function closeToast() {\n dispatch({ type: TOAST_CLOSE });\n}\n","import { h } from \"preact\";\nimport \"./Toast.scss\";\nimport { closeToast } from \"./AppToast\";\nimport { translate } from \"global/config\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { Icon, IconName } from \"components/atoms/icon\";\n\nexport enum ToastState {\n Success,\n Fail\n}\n\nexport interface Props {\n state: ToastState;\n children: string;\n onCancel?: () => void;\n cancelText?: string;\n}\n\nexport const Toast = ({ state, children, onCancel, cancelText }: Props) => {\n const iconName = (() => {\n switch (state) {\n case ToastState.Fail:\n return IconName.Error;\n case ToastState.Success:\n return IconName.Checkmark;\n }\n })();\n\n const onCancelFn =\n onCancel &&\n (() => {\n closeToast();\n onCancel();\n });\n\n return (\n <div className={`toast J25`}>\n <div>\n <Icon icon={iconName} />\n <div className=\"text\">{children}</div>\n {onCancelFn && (\n <Button design={ButtonDesign.LightMicro} onClick={onCancelFn}>\n {cancelText ?? translate(\"ToastUndo\")}\n </Button>\n )}\n </div>\n </div>\n );\n};\n","export * from \"./AppToast\";\nexport * from \"./Toast\";\n","import { h } from \"preact\";\nimport { ToastDuration } from \"../AppToast\";\nimport { Toast, ToastState } from \"../Toast\";\nimport { translate, translateWithReplacement } from \"global/config\";\nimport type { NuuApps } from \"generated/localization\";\nimport { ContentType } from \"models/ModelType\";\n\nexport interface OpenToastModel {\n toast: h.JSX.Element;\n duration: ToastDuration;\n}\n\nexport const AddMusicToQueueSuccessToast = () => ({ toast: <Toast state={ToastState.Success}>{translate(\"ToastAddedToQueue\")}</Toast>, duration: ToastDuration.Short });\nexport const AddMusicToQueueFailToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastNotAddedToQueue\")}</Toast>, duration: ToastDuration.Short });\n\nexport const AddMusicToPlaylistSuccessToast = () => ({ toast: <Toast state={ToastState.Success}>{translate(\"ToastAddedToPlaylist\")}</Toast>, duration: ToastDuration.Short });\nexport const AddMusicToPlaylistFailToast = () => ({ toast: () => <Toast state={ToastState.Fail}>{translate(\"ToastNotAddedToPlaylist\")}</Toast>, duration: ToastDuration.Short });\n\nexport const RemoveTrackFromPlaylistSuccessToast = (onCancel: () => void) => ({\n toast: (\n <Toast state={ToastState.Success} onCancel={onCancel}>\n {translate(\"ToastTrackRemoved\")}\n </Toast>\n ),\n duration: ToastDuration.Short\n});\nexport const RemoveTrackFromPlaylistFailToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastTrackNotRemoved\")}</Toast>, duration: ToastDuration.Short });\n\nexport const AddMusicToMyMusicSuccessToast = () => ({ toast: <Toast state={ToastState.Success}>{translate(\"ToastAddedToMyMusic\")}</Toast>, duration: ToastDuration.Short });\nexport const AddMusicToMyMusicFailToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastNotAddedToMyMusic\")}</Toast>, duration: ToastDuration.Long });\nexport const AddMusicToMyMusicLimitExceededToast = (type: ContentType) => {\n let key: keyof NuuApps | undefined;\n switch (type) {\n case ContentType.Album:\n key = \"ToastNotAddedTooManyFavoriteAlbum\";\n break;\n case ContentType.Artist:\n key = \"ToastNotAddedTooManyFavoriteArtist\";\n break;\n case ContentType.PlayableContext:\n key = \"ToastNotAddedTooManyFavoritePlaylists\";\n break;\n case ContentType.Track:\n case ContentType.TrackPlayable:\n default:\n key = \"ToastNotAddedTooManyFavorites\";\n break;\n }\n return ({ toast: <Toast state={ToastState.Fail}>{translate(key)}</Toast>, duration: ToastDuration.Long });\n}\n\nexport const RemoveMusicFromMyMusicSuccessToast = (onCancel?: () => void) => ({\n toast: (\n <Toast state={ToastState.Success} onCancel={onCancel}>\n {translate(\"ToastRemovedFromMyMusic\")}\n </Toast>\n ),\n duration: ToastDuration.Short\n});\n\nexport const ProfileChangedToast = (name: string) => ({ toast: <Toast state={ToastState.Success}>{translateWithReplacement(\"ToastProfileChanged\", \"currentProfile\", name)}</Toast>, duration: ToastDuration.Short });\n\nexport const RemoveMusicFromMyMusicFailToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastNotRemovedFromMyMusic\")}</Toast>, duration: ToastDuration.Long });\n\nexport const PlaybackFailToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ErrorPlaybackFailed\")}</Toast>, duration: ToastDuration.Long });\n\nexport const PlaylistDeletedToast = () => ({ toast: <Toast state={ToastState.Success}>{translate(\"ToastPlaylistDeleted\")}</Toast>, duration: ToastDuration.Short });\n\nexport const PlaylistNotDeletedToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastPlaylistNotDeleted\")}</Toast>, duration: ToastDuration.Long });\n\nexport const PlaylistCreatedToast = () => ({ toast: <Toast state={ToastState.Success}>{translate(\"ToastCreatePlaylist\")}</Toast>, duration: ToastDuration.Short });\n\nexport const PlaylistNotCreatedToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastPlaylistNotCreated\")}</Toast>, duration: ToastDuration.Long });\n\nexport const PlaylistSavedToast = () => ({ toast: <Toast state={ToastState.Success}>{translate(\"ToastPlaylistSaved\")}</Toast>, duration: ToastDuration.Short });\n\nexport const PlaylistNotSavedToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastPlaylistNotSaved\")}</Toast>, duration: ToastDuration.Long });\n\nexport const PlaylistMadePublicToast = () => ({ toast: <Toast state={ToastState.Success}>{translate(\"ToastPlaylistMadePublic\")}</Toast>, duration: ToastDuration.Short });\n\nexport const PlaylistMadePrivateToast = () => ({ toast: <Toast state={ToastState.Success}>{translate(\"ToastPlaylistMadePrivate\")}</Toast>, duration: ToastDuration.Short });\n\nexport const PlaylistErrorStateChangeToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ErrorPlaylistStateChange\")}</Toast>, duration: ToastDuration.Long });\n\nexport const LoadMorePageContentFailToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastLoadMorePageContentFail\")}</Toast>, duration: ToastDuration.Long });\n\nexport const TrackRemovedToast = (trackCount: number, onCancel?: () => void) => ({\n toast: (\n <Toast state={ToastState.Success} onCancel={onCancel} cancelText={translate(\"RegretTrackDeletion\")}>\n {translateWithReplacement(trackCount > 1 ? \"ToastTracksRemoved\" : \"ToastTrackRemoved\", \"Count\", trackCount.toString())}\n </Toast>\n ),\n duration: onCancel ? ToastDuration.Long : ToastDuration.Short\n});\n\nexport const TrackNotRemovedToast = (trackCount: number) => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastTrackNotRemoved\")}</Toast>, duration: ToastDuration.Long });\n\nexport const AddedToPlaylistToast = (trackCount: number, onCancel?: () => void) => ({\n toast: (\n <Toast state={ToastState.Success} onCancel={onCancel}>\n {translateWithReplacement(trackCount != 1 ? \"ToastTracksAddedToPlaylist\" : \"ToastAddedToPlaylist\", \"Count\", trackCount.toString())}\n </Toast>\n ),\n duration: onCancel ? ToastDuration.Long : ToastDuration.Short\n});\n\nexport const NotAddedToPlaylistToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastNotAddedToPlaylist\")}</Toast>, duration: ToastDuration.Long });\n\nexport const ShareUrlCopySuccessToast = () => ({ toast: <Toast state={ToastState.Success}>{translate(\"ToastShareCopyUrlSuccess\")}</Toast>, duration: ToastDuration.Short });\nexport const ShareUrlCopyFailedToast = () => ({ toast: <Toast state={ToastState.Fail}>{translate(\"ToastShareCopyUrlFail\")}</Toast>, duration: ToastDuration.Short });\n\nexport const CopyIdSuccessToast = () => ({ toast: <Toast state={ToastState.Success}>{\"id kopieret\"}</Toast>, duration: ToastDuration.Short });\nexport const CopyIdFailedToast = () => ({ toast: <Toast state={ToastState.Fail}>{\"id kunne ikke kopieres\"}</Toast>, duration: ToastDuration.Short });\n","export * from \"./Toasts\";\n","import { h } from \"preact\";\nimport { useCallback, useEffect, useMemo, useState } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport {\n getAlbumTracksPagination,\n getAlbumHeaderSection,\n getAlbumTracksSection,\n getAlbumArtistAlbumsSection,\n getAlbumArtistAlbumsByTrackSection,\n getAlbumHeaderSectionByTrack,\n getAlbumTracksSectionByTrack\n} from \"services/backend\";\nimport type { CombinedQueryParams, QueryParams } from \"services/backend/backendService\";\nimport { QueryError, useCombinedQuery } from \"services/backend/backendService\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { AlbumPageModel, PlayableContentType, PlayableModel, TrackPlayableModel, TrackPreviewModel } from \"models/domain\";\nimport {\n createEmptyAlbumPageModel,\n fillAlbumPageModelWithAlbumArtistAlbumsSectionData,\n fillAlbumPageModelWithBasicSection,\n fillAlbumPageModelWithTracksSection,\n ResourceDisplayType\n} from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { usePageContext, useSectionContext, useTrackPlayables, useAutoPlay } from \"components/shared/hooks\";\nimport { usePagination } from \"components/shared/hooks/usePagination\";\nimport { Line } from \"components/atoms/line\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\nimport { ProductPageTemplate } from \"components/templates/productPage\";\nimport { FooterText } from \"components/templates/productPage/FooterText\";\n\ninterface Props {\n albumId: string | null;\n trackId: string | null;\n}\n\nexport const AlbumPage = ({ albumId, trackId }: Props) => {\n const combined: CombinedQueryParams<AlbumPageModel> | null = useMemo(() => {\n if (albumId == null && trackId == null) {\n log.error({ code: \"web-211027-2251\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n\n return {\n model: createEmptyAlbumPageModel(),\n params: albumId != null ? getCombinedQueryParams(albumId) : getCombinedQueryParamsByTrack(trackId as string)\n };\n }, [albumId, trackId]);\n\n const { query } = useCombinedQuery(combined);\n if (query.model?.availableInSubscription === false) {\n query.model = null;\n query.error = QueryError.NotAvailableInSubscriptionError;\n }\n\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string) => product && getAlbumTracksPagination({ first, after, id: product.id }, product), [product]);\n\n const page = usePageContext({ type: ContentType.Album, resource: product, root: null, done: query.success });\n\n const top = useSectionContext(ContentType.Album, product, page, 0, ResourceDisplayType.Top);\n const tracks = useSectionContext(ContentType.Album, product, page, 1, ResourceDisplayType.List);\n const albums = useSectionContext(ContentType.AlbumArtistAlbums, product?.artistAlbums ?? null, page, 2, ResourceDisplayType.LargeScroller);\n\n const pagination = usePagination<TrackPreviewModel>({ resource: product, connection: product?.tracks ?? null, fetchFn });\n const playables = useTrackPlayables(pagination.connection?.items ?? null, product);\n const showLabel = product == null || product.label.name != null;\n\n const { type, playable } = useAlbumPageAutoPlay({ albumId, trackId, tracks: playables, album: product });\n useAutoPlay({ page, type, resource: playable, loading: query.loading });\n\n return (\n <ProductPageTemplate\n // onScroll={handleScroll}\n key={albumId}\n query={query}\n type={ContentType.Album}\n section={top}\n isUserOwned={false}\n scrollRef={pagination.scrollRef}>\n <ResourceSection resources={playables} pagination={pagination} context={tracks} highlightedId={trackId ?? undefined} />\n <ResourceSection showTitle resources={product?.artistAlbums?.albums?.items ?? null} context={albums} showAll={product?.artistAlbums} />\n {showLabel && <Line />}\n {showLabel && <FooterText>{product?.label.name}</FooterText>}\n </ProductPageTemplate>\n );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getCombinedQueryParams(albumId: string): QueryParams<AlbumPageModel, any>[] {\n return [\n { fetch: () => getAlbumHeaderSection({ id: albumId }), map: fillAlbumPageModelWithBasicSection, essential: true },\n { fetch: () => getAlbumTracksSection({ id: albumId, first: getPaginationInit() }), map: fillAlbumPageModelWithTracksSection, essential: true },\n { fetch: () => getAlbumArtistAlbumsSection({ id: albumId }), map: fillAlbumPageModelWithAlbumArtistAlbumsSectionData }\n ];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getCombinedQueryParamsByTrack(trackId: string): QueryParams<AlbumPageModel, any>[] {\n return [\n { fetch: () => getAlbumHeaderSectionByTrack({ id: trackId }), map: fillAlbumPageModelWithBasicSection, essential: true },\n { fetch: () => getAlbumTracksSectionByTrack({ id: trackId, first: getPaginationInit() }), map: fillAlbumPageModelWithTracksSection, essential: true },\n { fetch: () => getAlbumArtistAlbumsByTrackSection({ id: trackId }), map: fillAlbumPageModelWithAlbumArtistAlbumsSectionData }\n ];\n}\n\ninterface AlbumPageAutoPlayProps {\n trackId: string | null;\n albumId: string | null;\n tracks: TrackPlayableModel[] | null;\n album: AlbumPageModel | null;\n}\n\nfunction useAlbumPageAutoPlay({ albumId, trackId, tracks, album }: AlbumPageAutoPlayProps) {\n const [playable, setPlayable] = useState<PlayableModel | null>(null);\n const [type, setType] = useState<PlayableContentType>(ContentType.Album);\n\n useEffect(() => {\n if (trackId != null) {\n const track = tracks ? tracks.find((track) => track.track.id === trackId) ?? null : null;\n setType(ContentType.TrackPlayable);\n setPlayable(track);\n } else if (albumId != null) {\n setType(ContentType.Album);\n setPlayable(album);\n }\n }, [trackId, albumId, tracks, album]);\n\n return { type, playable };\n}\n","import { h } from \"preact\";\nimport \"./AppPromptPage.scss\";\nimport { useTranslations } from \"global/config\";\nimport { DownloadAppButton } from \"components/atoms/downloadAppButton\";\nimport { Logo } from \"components/atoms/logo\";\n\nexport const AppPromptPage = () => {\n const translations = useTranslations();\n return (\n <div className={`AppPromptPage jDl`}>\n <Logo />\n <div className=\"content\">\n <div className=\"text\">{translations.AppStoreWebTitle}</div>\n <DownloadAppButton />\n </div>\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useMemo } from \"preact/hooks\";\nimport {\n fillArtistPage_appearsOn,\n fillArtistPage_artistAlbums,\n fillArtistPage_artistSingles,\n fillArtistPage_artistTracks,\n fillArtistPage_headerSection,\n fillArtistPage_similarArtists\n} from \"services/backend\";\nimport type { CombinedQueryParams } from \"services/backend/backendService\";\nimport { useCombinedQuery } from \"services/backend/backendService\";\nimport type { ArtistPageModel } from \"models/domain\";\nimport {\n fillArtistPageModel_appearsOn,\n createEmptyArtistPageModel,\n fillArtistPageModel_artistAlbums,\n fillArtistPageModel_artistSingles,\n fillArtistPageModel_artistTracks,\n fillArtistPageModel_basicSectionAndRadio,\n fillArtistPageModel_similarArtists,\n ResourceDisplayType\n} from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { useAutoPlay, usePageContext, useSectionContext, useTrackPlayables } from \"components/shared/hooks\";\nimport { Line } from \"components/atoms/line\";\nimport { ArtistRadioPreviewSingle } from \"components/molecules/preview/singles\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\nimport { ProductPageTemplate } from \"components/templates/productPage\";\n\ninterface Props {\n artistId: string;\n}\n\nexport const ArtistPage = ({ artistId }: Props) => {\n const combined: CombinedQueryParams<ArtistPageModel> = useMemo(() => {\n return {\n model: createEmptyArtistPageModel(artistId),\n params: [\n { fetch: () => fillArtistPage_headerSection({ id: artistId }), map: fillArtistPageModel_basicSectionAndRadio, essential: true },\n { fetch: () => fillArtistPage_artistTracks({ id: artistId }), map: fillArtistPageModel_artistTracks, essential: true },\n { fetch: () => fillArtistPage_artistAlbums({ id: artistId }), map: fillArtistPageModel_artistAlbums },\n { fetch: () => fillArtistPage_artistSingles({ id: artistId }), map: fillArtistPageModel_artistSingles },\n { fetch: () => fillArtistPage_similarArtists({ id: artistId }), map: fillArtistPageModel_similarArtists },\n { fetch: () => fillArtistPage_appearsOn({ id: artistId }), map: fillArtistPageModel_appearsOn }\n ]\n };\n }, [artistId]);\n\n const { query } = useCombinedQuery(combined);\n const artist = query.model;\n\n const page = usePageContext({ type: ContentType.Artist, resource: artist, root: null, done: query.success });\n\n const top = useSectionContext(ContentType.ArtistTracks, artist?.tracksSection ?? null, page, 0, ResourceDisplayType.Single);\n const tracks = useSectionContext(ContentType.ArtistTracks, artist?.tracksSection ?? null, page, 1, ResourceDisplayType.List);\n const albums = useSectionContext(ContentType.ArtistAlbums, artist?.albums ?? null, page, 2, ResourceDisplayType.Scroller);\n const singles = useSectionContext(ContentType.ArtistSingles, artist?.singles ?? null, page, 3, ResourceDisplayType.Scroller);\n const radio = useSectionContext(ContentType.ArtistRadio, artist?.artistRadio ?? null, page, 4, ResourceDisplayType.Scroller);\n const artists = useSectionContext(ContentType.ArtistSimilarArtists, artist?.similarArtists ?? null, page, 5, ResourceDisplayType.Scroller);\n const appearsOn = useSectionContext(ContentType.ArtistAppearsOn, artist?.appearsOn ?? null, page, 6, ResourceDisplayType.Scroller);\n\n const trackPlayables = useTrackPlayables(artist?.tracksSection?.tracks?.items ?? null, artist);\n\n useAutoPlay({ page, type: ContentType.ArtistTracks, resource: artist?.tracksSection ?? null });\n\n return (\n <ProductPageTemplate key={artistId} query={query} type={ContentType.Artist} section={top} isUserOwned={false}>\n <ResourceSection showTitle resources={trackPlayables} context={tracks} showAll={artist?.tracksSection} />\n <ResourceSection showTitle resources={artist?.albums?.albums?.items ?? null} context={albums} showAll={artist?.albums} />\n <ResourceSection showTitle resources={artist?.singles?.albums?.items ?? null} context={singles} showAll={artist?.singles} />\n <ResourceSection showTitle resources={artist?.appearsOn?.albums?.items ?? null} context={appearsOn} showAll={artist?.appearsOn} />\n <ArtistRadioPreviewSingle section={radio}>{artist?.artistRadio ?? null}</ArtistRadioPreviewSingle>\n <Line />\n <ResourceSection showTitle resources={artist?.similarArtists?.artists?.items ?? null} context={artists} showAll={artist?.similarArtists} />\n </ProductPageTemplate>\n );\n};\n","import { h } from \"preact\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport { useArtistRadioPage } from \"services/backend\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { useAutoPlay, usePageContext, useSectionContext, useTrackPlayables } from \"components/shared/hooks\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\nimport { ProductPageTemplate } from \"components/templates/productPage\";\n\ninterface Props {\n artistId: string;\n}\n\nexport const ArtistRadioPage = ({ artistId }: Props) => {\n const query = useArtistRadioPage({ id: artistId, first: pageContent.artistRadioPageItemsLimit });\n const product = query.model;\n\n const page = usePageContext({ type: ContentType.ArtistRadio, resource: product, root: null, done: query.success });\n const top = useSectionContext(ContentType.ArtistRadio, product, page, 0, ResourceDisplayType.Top);\n const tracks = useSectionContext(ContentType.ArtistRadio, product, page, 1, ResourceDisplayType.List);\n\n const playables = useTrackPlayables(product?.tracks?.items ?? null, product);\n\n useAutoPlay({ page, type: ContentType.ArtistRadio, resource: product ?? null });\n\n return (\n <ProductPageTemplate key={artistId} query={query} type={ContentType.ArtistRadio} section={top} isUserOwned={false}>\n <ResourceSection resources={playables} context={tracks} />\n </ProductPageTemplate>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getChartItems, useChartPage } from \"services/backend\";\nimport type { AlbumPreviewModel, TrackPreviewModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport type { ChartPageModel } from \"models/domain/ChartModel\";\nimport { getChartModelItems } from \"models/domain/ChartModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize, useAutoPlay, usePageContext, useResourcesFromUnions, useSectionContext } from \"components/shared/hooks\";\nimport { usePagination } from \"components/shared/hooks/usePagination\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\nimport { ProductPageTemplate } from \"components/templates/productPage\";\n\ninterface Props {\n chartId: string;\n}\n\nexport const ChartPage = ({ chartId }: Props) => {\n const query = useChartPage({ id: chartId, first: getPaginationInit() });\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string, index: number) => getChartItems({ first, after, id: chartId }, index), [chartId]);\n\n const type = product?.contentType ?? ContentType.Chart;\n const displayType = useDisplayType(type);\n\n const page = usePageContext({ type, resource: product, root: null, done: query.success });\n const top = useSectionContext(type, product, page, 0, ResourceDisplayType.Top);\n const content = useSectionContext(type, product, page, 1, displayType);\n\n const pagination = usePagination<AlbumPreviewModel | TrackPreviewModel>({ resource: product, connection: product ? getChartModelItems(product) : null, fetchFn });\n const items = useResourcesFromUnions(pagination.connection?.items ?? null, product);\n\n useAutoPlay({ page, type, resource: product });\n\n return (\n <ProductPageTemplate query={query} type={type} section={top} isUserOwned={false} scrollRef={pagination.scrollRef}>\n <ResourceSection pagination={pagination} resources={items ?? null} context={content} />\n </ProductPageTemplate>\n );\n};\n\ntype ChartPageType = ChartPageModel[\"contentType\"] | ContentType.Chart;\n\nfunction useDisplayType(type: ChartPageType) {\n const appSize = useAppMediaSize();\n\n const displayType = useMemo(() => {\n switch (type) {\n case ContentType.AlbumChart: {\n if (appSize === MediaSize.Mobile) return ResourceDisplayType.ListLarge;\n else return ResourceDisplayType.List;\n }\n case ContentType.TrackChart:\n return ResourceDisplayType.List;\n case ContentType.Chart:\n return null;\n }\n }, [type, appSize]);\n\n return displayType;\n}\n","import { h } from \"preact\";\nimport { useEffect } from \"preact/hooks\";\nimport { useTranslations } from \"global/config\";\nimport { QueryError } from \"services/backend/backendService\";\nimport { log } from \"services/logger\";\nimport type { PageContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { PageLoadError, PageLoadErrorType } from \"models/app/ViewPageError\";\nimport { ErrorPageType, PageLoadAppErrorType } from \"models/app/ViewPageError\";\nimport { ContentType } from \"models/ModelType\";\nimport { useErrorPageContext, useLinkAndPreviewContext, useSectionContext } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { MessagePageTemplate } from \"components/templates/messagePage\";\n\ninterface Props {\n page: PageContextModel | null;\n error: PageLoadError;\n refetch?: () => void;\n}\n\nexport const ErrorPage = (props: Props): h.JSX.Element => {\n useEffect(\n () =>\n log.error({\n code: \"web-211016-1200\",\n msg: \"page load error\",\n data: { url: window.location.href }\n }),\n []\n );\n\n const { page, error } = props;\n\n useErrorPageContext({ page, error });\n const section = useSectionContext(ContentType.PageLoadError, null, props.page, null, null);\n const errorPageType = getErrorPageType(error.type);\n\n switch (errorPageType) {\n case ErrorPageType.ContentNotFoundErrorPage:\n return <ContentNotFoundPage section={section} />;\n case ErrorPageType.NoConnectionErrorPage:\n return <NoConnectionErrorPage {...props} section={section} />;\n case ErrorPageType.BackendDownErrorPage:\n return <BackendDownErrorPage />;\n case ErrorPageType.DefaultErrorPage:\n return <DefaultErrorPage {...props} section={section} />;\n }\n};\n\nexport function getErrorPageType(type: PageLoadErrorType): ErrorPageType {\n switch (type) {\n case PageLoadAppErrorType.UrlSchemaNotRecognizedError:\n case QueryError.ContentNotFoundError:\n case QueryError.NotAvailableInSubscriptionError:\n return ErrorPageType.ContentNotFoundErrorPage;\n case QueryError.BrowserOfflineError:\n return ErrorPageType.NoConnectionErrorPage;\n case QueryError.NetworkServerDownError:\n return ErrorPageType.BackendDownErrorPage;\n case QueryError.NetworkClientError:\n case QueryError.NetworkServerError:\n case QueryError.NetworkUnknownError:\n case QueryError.MapError:\n case QueryError.MultipleErrors:\n case QueryError.UnknownError:\n return ErrorPageType.DefaultErrorPage;\n }\n type;\n}\n\ninterface PageProps {\n section: SectionContextModel;\n refetch?: () => void;\n}\n\nconst RefetchButton = ({ refetch }: { refetch?: () => void }) => {\n const translations = useTranslations();\n return (\n <Button onClick={refetch} design={ButtonDesign.SecondarySmall}>\n {translations.TryAgain}\n </Button>\n );\n};\nconst NoConnectionErrorPage = ({ refetch }: PageProps) => {\n const translations = useTranslations();\n return <MessagePageTemplate className=\"NoConnectionErrorPage\" title={translations.ErrorStatePageNoConnectionTitle} buttons={<RefetchButton refetch={refetch} />} />;\n};\n\nconst BackendDownErrorPage = () => {\n const translations = useTranslations();\n return <MessagePageTemplate className=\"BackendDownErrorPage\" title={translations.ErrorStatePageBackendDownTitle} text={translations.ErrorStatePageBackendDownText} />;\n};\n\nconst DefaultErrorPage = ({ refetch }: PageProps) => {\n const translations = useTranslations();\n return <MessagePageTemplate className=\"DefaultErrorPage\" title={translations.ErrorStatePageDefaultTitle} buttons={<RefetchButton refetch={refetch} />} />;\n};\n\nconst ContentNotFoundPage = ({ section }: PageProps) => {\n useEffect(() => log.error({ code: \"web-211012-2023\", msg: \"page not found (404)\", data: { url: window.location.href } }), []);\n\n const frontPageLink = useLinkAndPreviewContext(ContentType.FrontPage, null, section, null);\n const translations = useTranslations();\n const buttons = (\n <Button link={frontPageLink} design={ButtonDesign.SecondarySmall}>\n {translations.GlobalGoToFrontPageAction}\n </Button>\n );\n\n return <MessagePageTemplate className=\"NotFoundPage\" title={translations.ErrorStatePageNotFoundTitle} buttons={buttons} />;\n};\n","import { h } from \"preact\";\nimport { ErrorPage } from \"./ErrorPage\";\nimport type { PageLoadError } from \"models/app/ViewPageError\";\nimport { PageLoadAppErrorType } from \"models/app/ViewPageError\";\nimport { ContentType } from \"models/ModelType\";\nimport { usePageContext } from \"components/shared/hooks\";\n\nexport const NotFoundPage = () => {\n const page = usePageContext({ type: ContentType.NotFound, resource: null, root: null, done: false });\n\n const error: PageLoadError = {\n type: PageLoadAppErrorType.UrlSchemaNotRecognizedError,\n message: `url schema not recognized, url:${window.location.href}`\n };\n\n return <ErrorPage page={page} error={error} />;\n};\n","import { h } from \"preact\";\nimport { LayoutPage } from \"..\";\nimport { environment } from \"services/environment\";\nimport { ContentType } from \"models/ModelType\";\nimport { NavigationPageRootName } from \"models/view/navigationStack\";\n\nexport const FrontPage = () => {\n const pageId = environment.apiFrontPageId;\n return <LayoutPage key={pageId} pageId={pageId} type={ContentType.FrontPage} root={NavigationPageRootName.FrontPage} />;\n};\n","export * from \"./albumPage/AlbumPage\";\nexport * from \"./appPromptPage/AppPromptPage\";\nexport * from \"./artistRadioPage/ArtistRadioPage\";\nexport * from \"./frontPage/FrontPage\";\nexport * from \"./layoutPage/LayoutPage\";\nexport * from \"./myMusic/albums/MyMusicAlbumsPage\";\nexport * from \"./myMusic/artists/MyMusicArtistsPage\";\nexport * from \"./myMusic/playlists/MyMusicPlaylistsPage\";\nexport * from \"./myMusic/tracks/MyMusicTracksPage\";\nexport * from \"./playlistPage/PlaylistPage\";\nexport * from \"./profilesPage/ProfilesPage\";\nexport * from \"./profilesPage/EditProfilePage\";\nexport * from \"./searchPage/SearchPage\";\nexport * from \"./trackRadioPage/TrackRadioPage\";\n","import { h } from \"preact\";\nimport { useEffect, useMemo, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./LayoutPage.scss\";\nimport { useLocalization } from \"components/app/hooks\";\nimport { getLayoutItemPage, useLayoutPageSkeleton } from \"services/backend\";\nimport type { CombinedQueryParams } from \"services/backend/backendService\";\nimport { useCombinedQuery, useCombinedQueryResult } from \"services/backend/backendService\";\nimport { getResourceDisplayCount } from \"services/resource\";\nimport type { RootModel } from \"models/app\";\nimport type { LocationContentType } from \"models/domain\";\nimport type { LayoutItemSectionModel, LayoutPageModel } from \"models/domain/layoutPage\";\nimport { fillLayoutPageWithItemSection } from \"models/domain/layoutPage\";\nimport { ContentType } from \"models/ModelType\";\nimport { NavigationPageRootName } from \"models/view/navigationStack\";\nimport { useAppMediaSize, usePageContext, usePageLoadState, usePageScrollRestoration, useTabIsActive } from \"components/shared/hooks\";\nimport { LayoutPageGroup } from \"components/organisms/layoutPage\";\n\ninterface Props {\n pageId: string;\n type: LocationContentType;\n root: NavigationPageRootName;\n}\n\nexport const LayoutPage = ({ pageId, type, root }: Props) => {\n const personalized = root === NavigationPageRootName.FrontPage;\n\n const query = usePageQuery(pageId, personalized);\n const product = query?.model ?? null;\n\n const page = usePageContext({ type: type ?? ContentType.LayoutPage, resource: product, root, done: query?.success === true });\n const restoration = usePageScrollRestoration({ page });\n const size = useAppMediaSize();\n\n const { error, spinner } = usePageLoadState(page, query);\n if (error) return error;\n if (spinner) return spinner;\n\n return (\n <div\n tabIndex={-1}\n className={`layoutPage Ta2 --size-${size}`}\n ref={(ref) => {\n restoration.scrollRef.current = ref;\n }}>\n <div\n className=\"content\"\n ref={(ref) => {\n restoration.contentRef.current = ref;\n }}>\n {product?.groups && product.groups.items.map((group) => <LayoutPageGroup key={group.id} group={group} context={page} />)}\n </div>\n </div>\n );\n};\n\nconst usePageQuery = (pageId: string, personalized?: boolean) => {\n const [reloadGuard, setReloadGuard] = useState(\"\");\n const userId = useSelector((root: RootModel) => root.user.id);\n const local = useLocalization();\n const pageQuery = useLayoutPageSkeleton({ pageId });\n\n const page = pageQuery.model;\n const pageLoading = pageQuery.loading || pageQuery.refetching || pageQuery.model == null;\n const pageError = pageQuery.error;\n\n useEffect(() => {\n const guard = `${userId}${personalized}${local}`;\n setReloadGuard(guard);\n if (!reloadGuard || reloadGuard == guard) return;\n if (!personalized) return;\n pageQuery.refetch(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [userId, personalized, local, reloadGuard]);\n\n const sectionParams: CombinedQueryParams<LayoutPageModel> | null = useMemo(() => {\n if (page == null || pageLoading || pageError) return null;\n\n if (page?.groups?.items == null) {\n return {\n model: page,\n params: []\n };\n }\n\n const items = page.groups.items\n .map((group) => group.items?.items)\n .flat()\n .filter((item) => item != null) as LayoutItemSectionModel[];\n\n const params = items.map((item) => ({\n fetch: () => getLayoutItemPage({ pageId: page.id, itemId: item.id, first: getResourceDisplayCount(item.displayType), after: null }, item.displayType),\n map: fillLayoutPageWithItemSection,\n next: item.refreshFrequency != null ? item.refreshFrequency * 1000 : undefined\n }));\n\n return {\n model: page,\n params\n };\n }, [page, pageLoading, pageError]);\n\n const { query: sectionsQuery, setAutoUpdate } = useCombinedQuery<LayoutPageModel>(sectionParams);\n\n const tabActive = useTabIsActive();\n useEffect(() => setAutoUpdate(tabActive), [setAutoUpdate, tabActive]);\n\n const combinedParams = useMemo(() => [pageQuery, sectionsQuery], [pageQuery, sectionsQuery]);\n const combined = useCombinedQueryResult(sectionsQuery.model, combinedParams);\n\n const anyOK = pageQuery.error == null && sectionsQuery.queries.some((query) => query.error == null);\n\n combined.loading = pageQuery.loading;\n combined.error = anyOK ? null : pageQuery.error ?? combined.error;\n combined.errorReason = [pageQuery, combined]\n .filter((n) => !!n.error)\n .map((x) => x.errorReason)\n .join(\", \");\n\n return combined;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getLiveRadioCategoryLiveRadiosPagination, useLiveRadioCategoryPage } from \"services/backend/backend\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n liveRadioCategoryId: string;\n}\n\nexport const LiveRadioCategoryPage = ({ liveRadioCategoryId }: Props) => {\n const query = useLiveRadioCategoryPage({ id: liveRadioCategoryId, first: getPaginationInit() });\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string) => getLiveRadioCategoryLiveRadiosPagination({ first, after, id: liveRadioCategoryId }), [liveRadioCategoryId]);\n\n return <ShowAllPageTemplate query={query} type={ContentType.LiveRadioCategory} items={product?.radios ?? null} fetchFn={fetchFn} display={ResourceDisplayType.Grid} />;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getLiveRadioCategoryByLiveRadioLiveRadiosPagination, useLiveRadioCategoryPageByLiveRadio } from \"services/backend/backend\";\nimport type { LiveRadioPreviewModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport type { AlternateAutoPlayFn } from \"components/templates/showAllPage\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n liveRadioId: string;\n}\n\nexport const LiveRadioPage = ({ liveRadioId }: Props) => {\n const query = useLiveRadioCategoryPageByLiveRadio({ id: liveRadioId, first: getPaginationInit() });\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string) => getLiveRadioCategoryByLiveRadioLiveRadiosPagination({ first, after, id: liveRadioId }), [liveRadioId]);\n\n const getAutoPlayRadio: AlternateAutoPlayFn<LiveRadioPreviewModel> = useCallback(\n (items) => {\n const radio = items?.items.find((radio) => radio.id === liveRadioId) ?? null;\n return { type: ContentType.LiveRadio, resource: radio };\n },\n [liveRadioId]\n );\n\n return (\n <ShowAllPageTemplate\n query={query}\n type={ContentType.LiveRadioCategory}\n items={product?.radios ?? null}\n fetchFn={fetchFn}\n display={ResourceDisplayType.Grid}\n alternateAutoPlayFn={getAutoPlayRadio}\n highlightedId={liveRadioId}\n />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getMixRadioCategoryPagination, useMixRadioCategoryPage } from \"services/backend/backend\";\nimport type { MixRadioPreviewModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport type { AlternateAutoPlayFn } from \"components/templates/showAllPage\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n mixRadioCategoryId: string;\n mixRadioId?: string;\n}\n\nexport const MixRadioCategoryPage = ({ mixRadioCategoryId, mixRadioId }: Props) => {\n const query = useMixRadioCategoryPage({ id: mixRadioCategoryId, first: getPaginationInit() });\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string) => getMixRadioCategoryPagination({ first, after, id: mixRadioCategoryId }), [mixRadioCategoryId]);\n\n const getAutoPlayRadio: AlternateAutoPlayFn<MixRadioPreviewModel> = useCallback(\n (items) => {\n const radio = items?.items.find((radio) => radio.id === mixRadioId) ?? null;\n return { type: ContentType.MixRadio, resource: radio };\n },\n [mixRadioId]\n );\n return (\n <ShowAllPageTemplate\n query={query}\n type={ContentType.MixRadioCategory}\n items={product?.radios ?? null}\n fetchFn={fetchFn}\n display={ResourceDisplayType.Grid}\n alternateAutoPlayFn={getAutoPlayRadio}\n />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useMixRadiosPage } from \"services/backend/backend\";\nimport type { MixRadioPreviewModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport type { AlternateAutoPlayFn } from \"components/templates/showAllPage\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n mixRadioId?: string;\n}\n\nexport const MixRadiosPage = ({ mixRadioId }: Props) => {\n const query = useMixRadiosPage({}, mixRadioId);\n const product = query.model;\n\n const getAutoPlayRadio: AlternateAutoPlayFn<MixRadioPreviewModel> = useCallback(\n (items) => {\n const radio = items?.items.find((radio) => radio.id === mixRadioId) ?? null;\n return { type: ContentType.MixRadio, resource: radio };\n },\n [mixRadioId]\n );\n\n return (\n <ShowAllPageTemplate\n query={query}\n type={ContentType.MixRadios}\n items={product?.radios ?? null}\n display={ResourceDisplayType.Grid}\n alternateAutoPlayFn={getAutoPlayRadio}\n highlightedId={mixRadioId}\n />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { FAVORITES_UPDATED, USER_LOGGED_IN } from \"global/actions\";\nimport { messageBus, useTranslations } from \"global/config\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { useMessageBus } from \"global/hooks\";\nimport { getFavoriteAlbums, useFavoriteAlbumsPage } from \"services/backend\";\nimport { useDisplayLoggedIn } from \"services/user\";\nimport type { RootModel } from \"models/app\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize, useCoalesced } from \"components/shared/hooks\";\nimport { MyMusicAlbumsSortingContextMenu } from \"components/organisms/contextMenu/menus\";\nimport { MyMusicPageTemplate } from \"components/templates/myMusicPage\";\n\nexport const MyMusicAlbumsPage = () => {\n const appSize = useAppMediaSize();\n const displayType = appSize === MediaSize.Mobile ? ResourceDisplayType.ListLarge : ResourceDisplayType.Grid;\n const translations = useTranslations();\n\n const orderBy = useSelector((root: RootModel) => root.ui.albumsSorting);\n const [criterion, setCriterion] = useState<string | null>(null);\n\n const skip = !useDisplayLoggedIn();\n const query = useFavoriteAlbumsPage({ first: getPaginationInit(), after: null, orderBy, criterion }, skip);\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string | null) => (product ? getFavoriteAlbums({ first, after, criterion, orderBy }) : null), [criterion, orderBy, product]);\n\n const albums = useCoalesced(product?.albums ?? null);\n\n messageBus.subscribeEvery(USER_LOGGED_IN, (msg) => {\n if (!msg.payload.isNewUser) return;\n query.refetch(false);\n });\n\n useMessageBus(FAVORITES_UPDATED, (message) => {\n if (message?.payload?.changes.playables.find((n) => n.contentType === ContentType.Album)) {\n // todo: consider editing-inplace as an optimization if this was an item being removed\n query.refetch(false);\n }\n });\n\n return (\n <MyMusicPageTemplate\n criterion={criterion}\n onFilterChanged={setCriterion}\n placeholderTitle={translations.MyMusicAlbumPlaceholderTitle}\n placeholderSubtitle={translations.MyMusicAlbumPlaceholderSubtitle}\n placeholderFilter={translations.FilterAlbums}\n placeholderFilterNoResult={translations.FilterNoAlbumsFound}\n placeholderFilterNoResultSubtitle={translations.SearchNoResultHint}\n query={query}\n resources={albums}\n productType={ContentType.MyMusicAlbums}\n resourcesFetchFn={fetchFn}\n displayType={displayType}\n sortingMenu={<MyMusicAlbumsSortingContextMenu />}\n />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { FAVORITES_UPDATED, USER_LOGGED_IN } from \"global/actions\";\nimport { messageBus, useTranslations } from \"global/config\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { useMessageBus } from \"global/hooks\";\nimport { getFavoriteArtists, useFavoriteArtistsPage } from \"services/backend\";\nimport { useDisplayLoggedIn } from \"services/user\";\nimport type { RootModel } from \"models/app\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize, useCoalesced } from \"components/shared/hooks\";\nimport { MyMusicArtistsSortingContextMenu } from \"components/organisms/contextMenu/menus\";\nimport { MyMusicPageTemplate } from \"components/templates/myMusicPage\";\n\nexport const MyMusicArtistsPage = () => {\n const appSize = useAppMediaSize();\n const displayType = appSize === MediaSize.Mobile ? ResourceDisplayType.ListLarge : ResourceDisplayType.Grid;\n const translations = useTranslations();\n\n const orderBy = useSelector((root: RootModel) => root.ui.artistsSorting);\n const [criterion, setCriterion] = useState<string | null>(null);\n\n const skip = !useDisplayLoggedIn();\n const query = useFavoriteArtistsPage({ first: getPaginationInit(), orderBy, criterion }, skip);\n const product = query.model;\n const fetchFn = useCallback(\n (first: number, after: string | null) => (product ? getFavoriteArtists({ first, after, orderBy, criterion }) : null),\n [criterion, orderBy, product]\n );\n\n messageBus.subscribeEvery(USER_LOGGED_IN, (msg) => {\n if (!msg.payload.isNewUser) return;\n query.refetch(false);\n });\n\n const artists = useCoalesced(product?.artists ?? null);\n\n useMessageBus(FAVORITES_UPDATED, (message) => {\n if (message?.payload?.changes.playables.find((n) => n.contentType === ContentType.Artist)) {\n // todo: consider editing-inplace as an optimization if this was an item being removed\n query.refetch(false);\n }\n });\n return (\n <MyMusicPageTemplate\n criterion={criterion}\n onFilterChanged={setCriterion}\n placeholderTitle={translations.MyMusicArtistPlaceholderTitle}\n placeholderSubtitle={translations.MyMusicArtistPlaceholderSubtitle}\n placeholderFilter={translations.FilterArtists}\n placeholderFilterNoResult={translations.FilterNoArtistsFound}\n query={query}\n placeholderFilterNoResultSubtitle={translations.SearchNoResultHint}\n productType={ContentType.MyMusicArtists}\n resources={artists}\n resourcesFetchFn={fetchFn}\n displayType={displayType}\n sortingMenu={<MyMusicArtistsSortingContextMenu />}\n />\n );\n};\n","import { Fragment, h } from \"preact\";\nimport { useCallback, useRef, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { dispatch } from \"global\";\nimport { FAVORITES_UPDATED, PLAYLIST_COLLECTION_ADDED, PLAYLIST_CREATED, PLAYLIST_DELETED, PLAYLIST_MODIFIED, PLAYLIST_TRACK_ADDED, PLAYLIST_TRACKS_REMOVED, SET_MY_PLAYLISTS_SELECTION, USER_LOGGED_IN } from \"global/actions\";\nimport { messageBus, translate, useTranslations } from \"global/config\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { useMessageBus } from \"global/hooks\";\nimport { getCombinedPlaylistsPagination, getPlaylistPreview, useFavoritePlaylistsPage } from \"services/backend\";\nimport { log, LogTag } from \"services/logger\";\nimport { useDisplayLoggedIn } from \"services/user\";\nimport { CombinedPlaylistsSorting } from \"generated/graphql-types\";\nimport type { NuuApps } from \"generated/localization\";\nimport type { RootModel } from \"models/app\";\nimport type { PlaylistPreviewModel, PlayQueuePlayablePreviewModel, ResourcePreviewModel, TrackPreviewModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize, useCoalesced } from \"components/shared/hooks\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { ActionRow } from \"components/molecules/actionRow/actionrow\";\nimport { MyPlaylistsSortingContextMenu } from \"components/organisms/contextMenu/menus\";\nimport { showCreatePlaylistModal } from \"components/organisms/modal/modals/CreatePlaylistModal\";\nimport { MyMusicPageTemplate } from \"components/templates/myMusicPage\";\n\nconst playableViewModels: PlayQueuePlayablePreviewModel[] = [];\n\nexport const MyMusicPlaylistsPage = () => {\n const translations = useTranslations();\n\n const appSize = useAppMediaSize();\n const displayType = appSize === MediaSize.Mobile ? ResourceDisplayType.ListLarge : ResourceDisplayType.Grid;\n\n const orderBy = useSelector((root: RootModel) => root.ui.playlistsSorting) || CombinedPlaylistsSorting.ModifiedDate;\n const [isOwned, setIsOwned] = useState<boolean | undefined>(undefined);\n const [criterion, setCriterion] = useState<string | null>(null);\n\n const skip = !useDisplayLoggedIn();\n const query = useFavoritePlaylistsPage({ first: getPaginationInit(), orderBy, criterion, isOwned }, skip);\n const product = useCoalesced(query.model);\n const fetchFn = useCallback(\n (first: number, after: string | null) => (product ? getCombinedPlaylistsPagination({ first, after, orderBy, criterion }) : null),\n [criterion, product, orderBy]\n );\n\n messageBus.subscribeEvery(USER_LOGGED_IN, (msg) => {\n if (!msg.payload.isNewUser) return;\n query.refetch(false);\n });\n\n const modifyRef = useRef<(fkt: (items: (ResourcePreviewModel | TrackPreviewModel)[]) => (ResourcePreviewModel | TrackPreviewModel)[]) => void>(null);\n\n async function updateMetadata(playlistId: string, playlistFromChange: PlaylistPreviewModel | null) {\n try {\n if (modifyRef?.current) {\n // todo: find out if we must wait a second before the backend has recalculated the duration?\n const playlist = playlistFromChange ?? (await getPlaylistPreview({ id: playlistId }))?.model;\n if (playlist) {\n modifyRef.current((items) => {\n const index = items.findIndex((n) => n.id === playlist.id);\n if (index === -1) return items;\n items = [...items];\n items[index] = {\n ...items[index],\n trackCount: playlist.trackCount,\n duration: playlist.duration\n } as PlaylistPreviewModel;\n return items;\n });\n }\n } else {\n query.refetch(false);\n }\n } catch (e) {\n log.error({ code: \"web-211123-1505\", msg: \"Error fetching and updating tracklist metadata\" });\n }\n }\n\n const onToggleMyPlaylists = useCallback(() => {\n const val = isOwned ? undefined : true;\n setIsOwned(val);\n dispatch({\n type: SET_MY_PLAYLISTS_SELECTION,\n payload: {\n isOwned: val\n }\n });\n }, [isOwned]);\n\n const onToggleOtherPlaylists = useCallback(() => {\n const val = isOwned === false ? undefined : false;\n setIsOwned(val);\n dispatch({\n type: SET_MY_PLAYLISTS_SELECTION,\n payload: {\n isOwned: val\n }\n });\n }, [isOwned]);\n\n useMessageBus(PLAYLIST_COLLECTION_ADDED, (msg) => updateMetadata(msg.payload.playlistId, msg.payload.playlist));\n useMessageBus(PLAYLIST_TRACK_ADDED, (msg) => updateMetadata(msg.payload.playlistId, msg.payload.playlist));\n useMessageBus(PLAYLIST_TRACKS_REMOVED, (msg) => updateMetadata(msg.payload.playlistId, msg.payload.playlist));\n\n useMessageBus(FAVORITES_UPDATED, (msg) => {\n if (msg?.payload?.changes.playables.find((n) => n.contentType === ContentType.Playlist)) {\n // todo: consider editing-inplace as an optimization if this was an item being removed\n query.refetch(false);\n }\n });\n\n // todo: subscribe to FAVORITES_UPDATE\n useMessageBus(PLAYLIST_CREATED, () => {\n // todo: this can be improved later by loading the individual playlist and inserting at the correct sorted position\n query.refetch(false);\n });\n useMessageBus(PLAYLIST_DELETED, (msg) => {\n try {\n if (modifyRef?.current) {\n modifyRef.current((items) => {\n const index = items.findIndex((n) => n.id === msg.payload.playlistId);\n if (index === -1) return items;\n return items.filter((n) => n.id !== msg.payload.playlistId);\n });\n } else {\n query.refetch(false);\n }\n } catch (e) {\n log.error({ code: \"web-220926-1501\", msg: \"ERROR UPDATING PLAYLISTS\", tags: [LogTag.Playlist], error: e });\n }\n });\n useMessageBus(PLAYLIST_MODIFIED, (msg) => {\n try {\n if (msg.payload.playlist && modifyRef?.current) {\n modifyRef.current((items) => {\n const index = items.findIndex((n) => n.id === msg.payload.playlistId);\n if (index === -1) return items;\n const newItems = [...items] as PlaylistPreviewModel[];\n newItems[index] = {\n ...newItems[index],\n title: msg.payload.playlist?.title ?? newItems[index].title,\n visibility: msg.payload.playlist?.visibility ?? newItems[index].visibility\n };\n return newItems;\n });\n } else {\n query.refetch(false);\n }\n } catch (e) {\n log.error({ code: \"web-220926-1501\", msg: \"ERROR UPDATING PLAYLISTS\", tags: [LogTag.Playlist], error: e });\n }\n });\n\n if (product?.playlists) {\n // product.playlists.items = [];\n }\n\n // todo: if content was added to a playlist, and sorting is \"last modified\", then move it to the top of the list\n\n const placeholders = getPlaceholders(translations, isOwned);\n\n return playableViewModels ? (\n <MyMusicPageTemplate\n onFilterChanged={setCriterion}\n placeholderTitle={placeholders.placeholderTitle}\n placeholderSubtitle={placeholders.placeholderSubtitle}\n placeholderButton={\n <Button icon={IconName.Plus16} design={ButtonDesign.SecondarySmall} onClick={showCreatePlaylistModal}>\n {translations.CreatePlaylist}\n </Button>\n }\n placeholderFilter={placeholders.placeholderFilter}\n placeholderFilterNoResult={placeholders.placeholderFilterNoResult}\n placeholderFilterNoResultSubtitle={placeholders.placeholderFilterNoResultSubtitle}\n topItem={\n displayType === ResourceDisplayType.ListLarge && <ActionRow icon={IconName.AddToPlaylist} text={translations.CreatePlaylist} onClick={showCreatePlaylistModal} />\n }\n topItem2={\n <div className={displayType === ResourceDisplayType.ListLarge ? \"tabs tabs-small\" : \"tabs\"}>\n <Button design={ButtonDesign.LightMicro} toggled={isOwned === true} onClick={onToggleMyPlaylists}>{translate(\"FilterMyPlaylist\")}</Button>\n <Button design={ButtonDesign.LightMicro} toggled={isOwned === false} onClick={onToggleOtherPlaylists}>{translate(\"FilterFollowedPlaylists\")}</Button>\n </div>\n }\n query={query}\n productType={ContentType.MyMusicPlaylists}\n resources={product?.playlists ?? null}\n resourcesFetchFn={fetchFn}\n displayType={displayType}\n sortingMenu={<MyPlaylistsSortingContextMenu target=\"playlistsSorting\" />}\n modifyRef={modifyRef}\n criterion={criterion}\n />\n ) : null;\n};\n\nfunction getPlaceholders(translations: NuuApps, isOwned: boolean | undefined) {\n if (isOwned === true) {\n return {\n placeholderTitle: translations.FilterNoOwnPlaylists,\n placeholderSubtitle: translations.SubtitleFilterNoOwnPlaylists,\n placeholderFilter: translations.FilterPlaylists,\n placeholderFilterNoResult: translations.FilterNoPlaylistsFound,\n placeholderFilterNoResultSubtitle: translations.SearchNoResultHint,\n }\n }\n if (isOwned === false) {\n return {\n placeholderTitle: translations.FilterNoFollowedPlaylists,\n placeholderSubtitle: translations.SubtitleFilterNoFollowedPlaylists,\n placeholderFilter: translations.FilterPlaylists,\n placeholderFilterNoResult: translations.FilterNoPlaylistsFound,\n placeholderFilterNoResultSubtitle: translations.SearchNoResultHint,\n }\n }\n return {\n placeholderTitle: translations.MyMusicPlaylistPlaceholderTitle,\n placeholderSubtitle: translations.MyMusicPlaylistPlaceholderSubtitle,\n placeholderFilter: translations.FilterPlaylists,\n placeholderFilterNoResult: translations.FilterNoPlaylistsFound,\n placeholderFilterNoResultSubtitle: translations.SearchNoResultHint,\n }\n}","import { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { FAVORITES_UPDATED, USER_LOGGED_IN } from \"global/actions\";\nimport { messageBus, useTranslations } from \"global/config\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { useMessageBus } from \"global/hooks\";\nimport { getFavoriteTracks, useFavoriteTracksPage } from \"services/backend\";\nimport { unSelect, useMultiselect } from \"services/selection\";\nimport { useDisplayLoggedIn } from \"services/user\";\nimport type { RootModel } from \"models/app\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { useCoalesced } from \"components/shared/hooks\";\nimport { MyMusicTracksSortingContextMenu } from \"components/organisms/contextMenu/menus\";\nimport { MyMusicPageTemplate } from \"components/templates/myMusicPage\";\n//TODO: should we rename this\nexport const MyMusicTracksPage = () => {\n const orderBy = useSelector((root: RootModel) => root.ui.tracksSorting);\n const [criterion, setCriterion] = useState<string | null>(null);\n\n const translations = useTranslations();\n const skip = !useDisplayLoggedIn();\n const query = useFavoriteTracksPage({ first: getPaginationInit(), after: null, orderBy, criterion }, skip);\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string | null) => (product ? getFavoriteTracks({ first, after, orderBy, criterion }) : null), [product, orderBy, criterion]);\n\n const tracks = useCoalesced(product?.tracks ?? null);\n\n const multiselect = useMultiselect(tracks?.items ?? null, ContentType.MyMusicTracks);\n\n messageBus.subscribeEvery(USER_LOGGED_IN, (msg) => {\n if (!msg.payload.isNewUser) return;\n query.refetch(false);\n });\n\n useMessageBus(FAVORITES_UPDATED, (message) => {\n if (multiselect && message.payload.changes.operation === \"remove\") {\n unSelect(multiselect, message.payload.changes.playables);\n }\n if (message?.payload?.changes.playables.find((n) => n.contentType === ContentType.TrackPlayable || n.contentType === ContentType.Track)) {\n query.refetch(false);\n }\n });\n\n return (\n <MyMusicPageTemplate\n multiselect={multiselect}\n onFilterChanged={setCriterion}\n placeholderTitle={translations.MyMusicTracksPlaceholderTitle}\n placeholderSubtitle={translations.MyMusicTracksPlaceholderSubtitle}\n placeholderFilter={translations.FilterTracks}\n placeholderFilterNoResult={translations.FilterNoTracksFound}\n placeholderFilterNoResultSubtitle={translations.SearchNoResultHint}\n query={query}\n productType={ContentType.MyMusicTracks}\n resources={tracks}\n criterion={criterion}\n resourcesFetchFn={fetchFn}\n displayType={ResourceDisplayType.List}\n sortingMenu={<MyMusicTracksSortingContextMenu />}\n />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getPlaylistCategoryPlaylistsPagination, usePlaylistCategoryPage } from \"services/backend\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n playlistCategoryId: string;\n}\n\nexport const PlaylistCategoryPage = ({ playlistCategoryId }: Props) => {\n const query = usePlaylistCategoryPage({ id: playlistCategoryId, first: getPaginationInit() });\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string | null) => getPlaylistCategoryPlaylistsPagination({ first, after, id: playlistCategoryId }), [playlistCategoryId]);\n\n return <ShowAllPageTemplate query={query} type={ContentType.PlaylistCategory} items={product?.playlists ?? null} fetchFn={fetchFn} display={ResourceDisplayType.Grid} />;\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo, useState } from \"preact/hooks\";\nimport { route } from \"preact-router\";\nimport { useSelector } from \"react-redux\";\nimport { ExperimentalProductLoader } from \"./experimentalProductLoader\";\nimport { dispatch } from \"global\";\nimport {\n PLAYLIST_COLLECTION_ADDED,\n PLAYLIST_DELETED,\n PLAYLIST_MODIFIED,\n PLAYLIST_TRACK_ADDED,\n PLAYLIST_TRACKS_REMOVED,\n PLAYLIST_TRACK_REORDERED,\n PLAYLIST_TRACKS_ADDED,\n SET_MY_PLAYLIST_TRACKS_SORTING,\n USER_LOGGED_IN\n} from \"global/actions\";\nimport { messageBus, useTranslations } from \"global/config\";\nimport { useMessageBus } from \"global/hooks\";\nimport { getPlaylistPreview, mutateModifyTracksInPlaylist } from \"services/backend\";\nimport { useFavoriteStatus } from \"services/favorites\";\nimport { getShortDateDDMMYYYY } from \"services/formatters\";\nimport { log } from \"services/logger\";\nimport { navigation } from \"services/navigation\";\nimport { getTracks } from \"services/playable\";\nimport { removeTrackFromPlaylist, useCachedUserPlaylistPreview } from \"services/playlist\";\nimport { unSelect, useMultiselect } from \"services/selection\";\nimport { convertToPlaylistTracksSortOption, getSortOptions } from \"services/sort/sortService\";\nimport { TrackModificationType, PlaylistVisibility } from \"generated/graphql-types\";\nimport type { DraggablePlayableModel, DragProps, DropProps, RootModel } from \"models/app\";\nimport { LoginState, SortOption } from \"models/app\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { ContentPlaylistType } from \"models/app/resourceContextModel\";\nimport type { PlayableModel, PlaylistPreviewModel, ResourcePreviewModel, TrackPlayablePreviewModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { useAutoPlay, usePageContext, useSectionContext, useTrackPlayables } from \"components/shared/hooks\";\nimport { IconName } from \"components/atoms/icon\";\nimport { Line } from \"components/atoms/line\";\nimport { DropZone } from \"components/molecules/dropZone\";\nimport { EmptyState } from \"components/molecules/emptyState/EmptyState\";\nimport { FilterUi } from \"components/organisms/filter\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\nimport { openToast } from \"components/organisms/toast\";\nimport { AddedToPlaylistToast, NotAddedToPlaylistToast, PlaylistNotSavedToast, PlaylistSavedToast } from \"components/organisms/toast/toasts\";\nimport { ProductPageTemplate2 } from \"components/templates/productPage\";\nimport { FooterText } from \"components/templates/productPage/FooterText\";\n\nconst loader = new ExperimentalProductLoader();\n\ninterface Props {\n playlistId: string;\n}\n\nexport const PlaylistPage = (props: Props) => <PlaylistPageInner key={props.playlistId} {...props} />;\n\nconst PlaylistPageInner = ({ playlistId }: Props) => {\n const [isSaving, setIsSaving] = useState(false);\n const [criterion, setFilter] = useState(\"\");\n\n const isUserOwned = !!useCachedUserPlaylistPreview(playlistId);\n const defaultSortOptions = useMemo(() => getSortOptions(ContentType.Playlist), []);\n const sorting = useSelector((root: RootModel) => root.ui.ownPlaylistTracksSorting);\n const orderBy = convertToPlaylistTracksSortOption(isUserOwned ? sorting : defaultSortOptions.initial);\n const isReorderingAllowed = isUserOwned && sorting === SortOption.UserDefined;\n\n //const loader = useExperimentalProductLoader();\n const [, loaderCallback] = useState(\"\");\n loader.callback = loaderCallback;\n loader.setProduct(playlistId, orderBy, criterion);\n const modifyQuery = loader.modify;\n const product = loader.model;\n const playables = useTrackPlayables(product?.tracks?.items ?? null, product);\n\n const sortOptions = useMemo(\n () =>\n !isUserOwned\n ? undefined\n : {\n options: defaultSortOptions.options,\n selected: sorting,\n onChange: (option: SortOption) => {\n if (sorting === option) return;\n dispatch({\n type: SET_MY_PLAYLIST_TRACKS_SORTING,\n payload: {\n sorting: option\n }\n });\n }\n },\n [isUserOwned, defaultSortOptions, sorting]\n );\n\n const lastModified = product?.lastModified ?? null;\n const lastModifiedStr = useMemo(() => (lastModified ? getShortDateDDMMYYYY(lastModified) : \"\"), [lastModified]);\n\n const isFavorite = useFavoriteStatus(!isUserOwned ? product : null);\n const contentPlaylistType: ContentPlaylistType | undefined = isUserOwned\n ? ContentPlaylistType.Own\n : isFavorite === true\n ? ContentPlaylistType.Follow\n : isFavorite === false\n ? ContentPlaylistType.Public\n : undefined;\n\n const contentPlaylistTypeObj = useMemo(() => ({ contentPlaylistType }), [contentPlaylistType]);\n const page = usePageContext({\n type: ContentType.Playlist,\n resource: product,\n root: null,\n done: loader.success && contentPlaylistType != undefined,\n extraInfo: contentPlaylistTypeObj\n });\n const topContext = useSectionContext(ContentType.Playlist, product, page, 0, null);\n const tracksContext = useSectionContext(ContentType.Playlist, product, page, 1, ResourceDisplayType.List);\n\n const multiselect = useMultiselect(playables, ContentType.Playlist, page);\n\n useAutoPlay({ page, type: ContentType.Playlist, resource: loader.model });\n\n messageBus.subscribeEvery(USER_LOGGED_IN, (msg) => {\n if (!msg.payload.isNewUser) return;\n if (loader.model?.id) {\n if (loader.model.visibility === PlaylistVisibility.Private)\n route(\"/\");\n else\n loader.reload();\n }\n });\n\n useMessageBus(PLAYLIST_DELETED, (msg) => {\n if (msg.payload.playlistId === playlistId) {\n const url = navigation.templates.myMusicPlaylists();\n route(url, true);\n }\n });\n\n useMessageBus(PLAYLIST_MODIFIED, (msg) => {\n if (msg.payload.playlist && product) {\n modifyQuery({\n ...product,\n title: msg.payload.playlist.title ?? product.title,\n visibility: msg.payload.playlist?.visibility ?? product.visibility\n });\n } else {\n updateMetadataAndTracks(null, false);\n }\n });\n\n useMessageBus(PLAYLIST_TRACKS_REMOVED, (msg) => {\n if (msg.payload.playlistId === playlistId) {\n if (multiselect) {\n const items = loader.model?.tracks?.items.filter((n) => -1 != msg.payload.positions.indexOf(n.position)) ?? [];\n unSelect(multiselect, items);\n }\n\n const canModifyInPlace = false;\n /*\n // todo: I'm classifying this as technical debt, and making a ticket about writing a simpler, linear, implementation for handling pagination/filtering/reloads\n\n const isFullyLoaded = modified.model?.trackCount === playables?.length;\n const isSingleDeletion = (msg.payload.positions.length == 1); // todo: update this with support for multiple items, when we add multiselect back. it'll work without, but by falling back on the reload\n const isSupportedSorting = true; //(sorting === SortOption.UserDefined);\n const canModifyInPlace = (!!modifyRef.current) && isFullyLoaded && isSupportedSorting && isSingleDeletion;\n console.log(`--- modify in place? ${canModifyInPlace} modeltotal: ${modified.model?.trackCount} paginationtotal: ${playables?.length}`);\n\n if (canModifyInPlace) {\n // to avoid having to reload the tracklist just to update their \"position\" field,\n // we simply recompute the position of tracks after the deleted tracks.\n // note that this assumes the backend doesnt switch from its current linear numbering system.\n const position = msg.payload.positions[0];\n modifyRef.current?.((items) => {\n return items.filter((track) => position !== track.position).map(track => (track.position < position ? track : { ...track, position: position - 1 }));\n });\n */\n updateMetadataAndTracks(msg.payload.playlist, !canModifyInPlace);\n\n setIsSaving(false);\n }\n });\n\n useMessageBus(PLAYLIST_TRACKS_ADDED, (msg) => {\n if (msg.payload.playlistId === playlistId && !msg.payload.alreadyHandledByPlaylistPage) {\n // todo: could play around with inserting the tracks, and updating the position of all subsequent tracks, instead of reloading\n // this would also be complicated if tracks are are sorted by anything other than userdefined-position.\n updateMetadataAndTracks(msg.payload.playlist, true);\n }\n });\n\n useMessageBus(PLAYLIST_TRACK_ADDED, (msg) => {\n if (msg.payload.playlistId === playlistId && !msg.payload.alreadyHandledByPlaylistPage) {\n if (msg.payload.track) {\n // todo: could play around with inserting the track, and updating the position of all subsequent tracks, instead of reloading\n // this would also be complicated if tracks are are sorted by anything other than userdefined-position.\n }\n updateMetadataAndTracks(msg.payload.playlist, true);\n }\n });\n\n useMessageBus(PLAYLIST_COLLECTION_ADDED, (msg) => {\n if (msg.payload.playlistId === playlistId) {\n updateMetadataAndTracks(null, true);\n }\n });\n\n const updateMetadataAndTracks = async (playlist: PlaylistPreviewModel | null, alsoFetchTracks: boolean) => {\n if (modifyQuery && product) {\n if (!playlist && !alsoFetchTracks) {\n playlist ??= (await getPlaylistPreview({ id: playlistId }))?.model;\n }\n if (playlist) {\n modifyQuery({\n ...product,\n duration: playlist.duration,\n trackCount: playlist.trackCount,\n cover: playlist.cover\n });\n }\n }\n\n if (alsoFetchTracks) {\n await loader.reload(false, false);\n }\n };\n\n const onRemoveTrack = useCallback(\n async (resource: ResourcePreviewModel) => {\n // todo: could instantly remove the visible item\n\n setIsSaving(true);\n const wasRemoved = await removeTrackFromPlaylist((resource as TrackPlayablePreviewModel).track, product);\n\n if (!wasRemoved) {\n setIsSaving(false);\n // todo: it failed and if we already removed the visual item we must add it back\n }\n },\n [product]\n );\n\n const onDrop = useCallback(\n async (model: DraggablePlayableModel, toIndex: number) => {\n if (playables) {\n const isTrackFromThisPlaylist =\n model.playable.contentType === ContentType.TrackPlayable &&\n model.context.section.type === ContentType.Playlist &&\n model.context.section.page?.type == ContentType.Playlist &&\n model.context.section.resource?.id === playlistId;\n if (isTrackFromThisPlaylist) {\n const fromIndex = playables.findIndex((n) => n.track.uniqueId === (model.playable as QueueTrackModel).track.uniqueId);\n if (fromIndex === -1) {\n log.error({ code: \"web-211122-1140\", msg: \"can't find dragged playlist track\" });\n return;\n }\n await moveTrackInPlaylist(fromIndex, toIndex);\n } else if (model.playable.contentType == ContentType.QueueTrack) {\n await insertQueueTrackInPlaylist(model.playable, toIndex);\n } else {\n insertPlayableInPlaylist(model.playable, toIndex);\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [playables, playlistId]\n );\n\n const dropProps = useMemo<DragProps[]>(\n () =>\n playables?.map((_, index) => ({\n onDrop: (n: DraggablePlayableModel) => onDrop(n, index),\n dragSourceId: \"...\"\n })) ?? [],\n [playables, onDrop]\n );\n\n const getDropProps = useCallback(\n (model: ResourcePreviewModel, index: number): DropProps => {\n return (\n dropProps[index] ?? {\n dragSourceId: \"...\"\n }\n );\n },\n [dropProps]\n );\n\n const moveTrackInPlaylist = async (fromIndex: number, toIndex: number) => {\n if (fromIndex < 0 || toIndex < 0 || !playables || fromIndex > playables?.length || toIndex > playables?.length) {\n log.error({ code: \"web-211122-1150\", msg: \"dragged tracks outside range of playlist\" });\n return;\n }\n\n if (toIndex > fromIndex) {\n toIndex--;\n }\n if (toIndex === fromIndex) {\n return;\n }\n\n const trackId = playables[fromIndex]?.id;\n\n loader.modifyTracks((items) => {\n const remappedColl = [...items];\n const removedItems = remappedColl.splice(fromIndex, 1);\n remappedColl.splice(toIndex, 0, ...removedItems);\n // this works because we dont allow users to rearrange tracks in other sorting modes than user-defined\n return remappedColl.map((n, index) => (n.position === index ? n : { ...n, position: index }));\n });\n\n const result = await mutateModifyTracksInPlaylist({\n id: playlistId, // todo: graphql must fix this\n modifications: [\n {\n type: TrackModificationType.Move,\n positionFrom: fromIndex,\n positionTo: toIndex\n }\n ]\n });\n\n if (result?.ok) {\n openToast(PlaylistSavedToast());\n\n dispatch({\n type: PLAYLIST_TRACK_REORDERED,\n payload: {\n playlistId,\n playlist: null,\n fromPosition: fromIndex,\n toPosition: toIndex,\n trackId,\n alreadyHandledByPlaylistPage: true\n }\n });\n } else {\n // we already moved the visual representation of the track, but the backend call failed, so we need to restore it\n updateMetadataAndTracks(result?.playlist ?? null, true);\n openToast(PlaylistNotSavedToast());\n }\n };\n\n const insertQueueTrackInPlaylist = async (queueTrack: QueueTrackModel, index: number) => {\n const mustReloadTracks = false;\n\n loader.modifyTracks((items) => {\n const remappedColl = [...items];\n remappedColl.splice(index, 0, queueTrack.track);\n return remappedColl.map((n, index) => (n.position === index ? n : { ...n, position: index }));\n });\n\n const result = await mutateModifyTracksInPlaylist({\n id: playlistId,\n modifications: [\n {\n type: TrackModificationType.Insert,\n positionTo: index,\n trackId: queueTrack.id\n }\n ]\n });\n\n if (result?.ok) {\n updateMetadataAndTracks(result.playlist ?? null, mustReloadTracks);\n openToast(PlaylistSavedToast());\n\n dispatch({\n type: PLAYLIST_TRACK_ADDED,\n payload: {\n playlistId,\n playlist: null,\n position: index,\n trackId: queueTrack.id,\n alreadyHandledByPlaylistPage: true,\n duplicateTracksAdded: null\n }\n });\n } else {\n // we already added the visual representation of the track, but the backend call failed, so we need to remove it\n updateMetadataAndTracks(null, true);\n openToast(PlaylistNotSavedToast());\n }\n };\n\n const insertPlayableInPlaylist = async (playable: PlayableModel, index: number) => {\n const tracks = await getTracks(playable);\n\n const result = !tracks\n ? null\n : await mutateModifyTracksInPlaylist({\n id: playlistId,\n modifications: tracks.map((track, newTrackIndex) => ({\n type: TrackModificationType.Insert,\n positionTo: index + newTrackIndex,\n trackId: `${track.id}`\n }))\n });\n\n if (tracks && result?.ok) {\n updateMetadataAndTracks(result.playlist ?? null, true);\n openToast(AddedToPlaylistToast(tracks.length));\n\n dispatch({\n type: PLAYLIST_COLLECTION_ADDED,\n payload: {\n playlistId,\n playlist: null,\n playable,\n trackCount: tracks.length,\n duplicateTracksAdded: null\n }\n });\n } else {\n openToast(NotAddedToPlaylistToast());\n }\n };\n\n const translations = useTranslations();\n const loginState = useSelector((root: RootModel) => root.user.state);\n if (loader.model && loader.model.visibility === PlaylistVisibility.Private && (loginState === LoginState.LoggingOut || loginState === LoginState.LoggedOut)) {\n route(\"/\", true);\n return null;\n }\n\n return (\n <ProductPageTemplate2\n product={product}\n type={ContentType.Playlist}\n section={topContext}\n isUserOwned={isUserOwned}\n sortOptions={sortOptions}\n filter={((loader.model?.trackCount ?? 0) > 0) ? <FilterUi onChange={setFilter} placeholder=\"\" /> : undefined}\n >\n {\n !loader.isLoadingTracks && (playables?.length ?? 0) == 0 && criterion &&\n <EmptyState title={translations.FilterNoTracksFound} subtitle={translations.SearchNoResultHint} button={undefined} />\n }\n <ResourceSection\n multiselect={multiselect}\n resources={playables}\n context={tracksContext}\n paginationCallback={loader.more}\n customIcon={isUserOwned ? IconName.Delete : undefined}\n customIconAction={isUserOwned ? onRemoveTrack : undefined}\n getDropProps={isReorderingAllowed ? getDropProps : undefined}\n totalItems={loader.itemCount}\n locked={isSaving}\n />\n {playables && isReorderingAllowed && (\n <div className={`bottomDropzone${playables.length > 0 ? \"\" : \" noTracks\"}`}>\n <DropZone onDropFn={(item) => onDrop(item, playables.length)} />\n </div>\n )}\n <Line />\n <FooterText>\n {translations.PlaylistLastUpdated} {lastModifiedStr}\n </FooterText>\n </ProductPageTemplate2>\n );\n};\n","import { getPaginationInit } from \"global/constants/pagination\";\nimport { getPlaylistPage, getPlaylistTracksPagination } from \"services/backend\";\nimport { PlaylistTracksSorting } from \"generated/graphql-types\";\nimport type { PlaylistPageModel, TrackPreviewModel } from \"models/domain\";\n\n// first step towards replacing the old Pagination type and assorted hooks.\n\n// the next steps for this will be to make it generic, either by providing the two backend-methods as lambdas or via inheritance.\n// it would also make sense for it to be aware of then the tracklist is 100% loader and then switch to clientside filtering.\n// it would also make sense for it to cache what it has partially loaded of the unfiltered collection, so its' available when/if the filter is removed.\n\n// this also either needs to be passed around instead of the old Pagination type, or maybe they could share a common interface for some of the properties and methods\n\n// this can also do the conversion that otherwise is done later by useTrackPlayables(), so to avoid re-coverting every time the array is modified\n\nexport class ExperimentalProductLoader {\n model: PlaylistPageModel | null = null;\n key: string | null = null;\n playlistId: string | null = null;\n orderBy: PlaylistTracksSorting | null = null;\n criterion: string | null = null;\n callback?: (val: string) => void;\n\n isLoadingProduct = false;\n isLoadingTracks = false;\n\n private onChange() {\n this.callback?.(new Date().getTime().toString());\n }\n\n get success() {\n return !!this.model;\n }\n\n get canLoadMore() {\n return this.model?.tracks?.pageInfo?.hasNextPage ?? false;\n }\n\n get itemCount() {\n return (this.canLoadMore ? this.model?.trackCount : this.model?.tracks?.items?.length) ?? undefined;\n }\n\n setProduct(playlistId: string, orderBy: PlaylistTracksSorting, criterion: string) {\n if (this.playlistId == playlistId && this.orderBy == orderBy && this.criterion == criterion) return;\n\n this.playlistId = playlistId;\n this.orderBy = orderBy;\n this.criterion = criterion;\n\n this.key = `${playlistId}_${orderBy}_${criterion}`;\n this.reload();\n }\n\n reload = async (clearModel = false, clearTracks = true) => {\n const lastKey = this.key;\n try {\n if (clearModel || this.model?.id !== this.playlistId) {\n this.model = null;\n }\n if (clearTracks && this.model?.tracks) {\n this.model.tracks.items = [];\n }\n\n this.isLoadingProduct = !this.model;\n this.isLoadingTracks = true;\n\n this.onChange();\n\n if (!this.playlistId) return;\n\n const result = await getPlaylistPage({\n id: this.playlistId,\n first: getPaginationInit(),\n criterion: this.criterion,\n orderBy: this.orderBy ?? PlaylistTracksSorting.TrackPosition\n });\n\n if (lastKey !== this.key) return;\n\n if (result.error) {\n // todo:\n return;\n }\n\n this.model = result.model;\n this.onChange();\n }\n catch {\n //\n }\n finally {\n if (lastKey === this.key) {\n this.isLoadingProduct = false;\n this.isLoadingTracks = false;\n }\n }\n };\n\n more = async () => {\n if (!this.playlistId || this.isLoadingProduct || this.isLoadingTracks || !this.model?.tracks?.pageInfo?.hasNextPage) {\n return;\n }\n this.isLoadingTracks = true;\n const lastKey = this.key;\n try {\n const result = await getPlaylistTracksPagination({\n after: this.model?.tracks?.pageInfo.endCursor,\n id: this.playlistId,\n first: getPaginationInit(),\n criterion: this.criterion,\n orderBy: this.orderBy ?? PlaylistTracksSorting.TrackPosition\n });\n\n if (lastKey === this.key && result && !result.error && result.model?.items) {\n this.model = {\n ... this.model,\n tracks: {\n ... this.model.tracks,\n pageInfo: result.model.pageInfo,\n items: [...this.model.tracks.items, ...result.model.items]\n }\n };\n this.onChange();\n }\n }\n catch {\n //\n }\n if (lastKey === this.key) {\n this.isLoadingTracks = false;\n }\n };\n\n modify = (model: Partial<PlaylistPageModel>) => {\n // todo: check if its actually a change\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.model = { ...this.model, ...model } as any as PlaylistPageModel;\n this.onChange();\n };\n\n modifyTracks = (filter?: (tracks: TrackPreviewModel[]) => TrackPreviewModel[]) => {\n if (filter && this.model?.tracks?.items) {\n const tracks = filter(this.model.tracks?.items)\n this.model.tracks.items = tracks;\n this.onChange();\n // todo?\n }\n };\n}\n\n","import { h } from \"preact\";\nimport \"./ProfilesPage.scss\";\nimport { useLinkAndPreviewContext, usePageContext, useSectionContext } from \"components/shared/hooks\";\nimport { PageTopBar } from \"components/molecules/pageTopBar\";\nimport { ContentType } from \"models/ModelType\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { isFeatureEnabled, Feature, useTranslations, store, translate } from \"global/config\";\nimport { RootModel } from \"models/app\";\nimport { useSelector } from \"react-redux\";\nimport { changeUserProfile, hasPermissionFromToken, reloadProfiles, useDisplayLoggedIn } from \"services/user\";\nimport { navigation } from \"services/navigation\";\nimport { TextInput } from \"components/atoms/controls/textInput\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { Avatar } from \"components/atoms/controls/avatar\";\nimport { mutateAddProfile, mutateRemoveProfile, mutateUpdateProfile } from \"services/backend\";\nimport { route } from \"preact-router\";\nimport { showErrorModal2 } from \"components/organisms/modal/modals\";\nimport { ModalOpenResult } from \"models/view/AppModalModel\";\nimport { showDeleteProfileModal } from \"components/organisms/modal/modals\";\nimport { PROFILE_CREATED, PROFILE_DELETED, PROFILE_UPDATED } from \"global/actions\";\nimport { dispatch } from \"global\";\nimport { getAndClearProfileEntrypoint } from \"./profilePageEntry\";\n\ninterface Props {\n profileId: string;\n}\n\nexport const EditProfilePage = (props: any) => {\n const translations = useTranslations();\n\n const page = usePageContext({ type: ContentType.ProfilesPage, resource: null, root: null, done: true });\n\n const section = useSectionContext(ContentType.ProfilesPage, null, null, null, null);\n const link = useLinkAndPreviewContext(ContentType.ProfilesPage, null, section, null);\n link.url = navigation.templates.addProfilesPage(); // todo\n\n const loggedIn = useDisplayLoggedIn();\n const profiles = useSelector((root: RootModel) => root.user.profiles);\n const profilesLimit = useSelector((root: RootModel) => root.user.profilesNumberLimit) ?? 0;\n const showProfiles = loggedIn && profiles.length > 0 && hasPermissionFromToken(\"prof\") && isFeatureEnabled(Feature.Profiles);\n const defaultColors = useSelector((root: RootModel) => root.user.profileDefaultColors);\n const actualDefaultColors = !defaultColors || defaultColors.length == 0 ? [\"#FF00FF\"] : defaultColors;\n const profileId = (props as Props).profileId;\n const profile = profiles.find(n => n.id == profileId) ?? null;\n const isNew = !profile;\n\n const [title, setTitle] = useState(profile?.title ?? \"\");\n const [color, setColor] = useState(profile?.color ?? \"\");\n const isValid = !!title;\n const isChanged = title !== profile?.title || color !== profile?.color;\n\n const onChangeTitle = useCallback((e: string) => {\n setTitle(e);\n if (e.trim()) {\n // setErrorMessage(\"\");\n }\n }, []);\n\n const onChangeColor = useCallback((e: string) => {\n setColor(e);\n }, []);\n\n const onBack = useCallback(() => {\n route(navigation.templates.profilesPage());\n }, []);\n\n const onDelete = useCallback(async () => {\n if (!profile || profile?.master) return;\n const modalResult = await showDeleteProfileModal(profile);\n if (modalResult !== ModalOpenResult.Submit) {\n return;\n }\n if (profile?.current) {\n const masterProfile = profiles.find(n => n.master);\n if (!masterProfile) return;\n await changeUserProfile(masterProfile.id);\n }\n const res = await mutateRemoveProfile({ id: profile!.id });\n await reloadProfiles();\n if (res.ok) {\n dispatch({\n type: PROFILE_DELETED,\n payload: {\n profile\n }\n });\n onBack();\n } else {\n const stillExists = store.getState().user.profiles.some(n => n.id == profileId);\n if (stillExists) {\n // it wasn't deleted\n showErrorModal2(translate(\"DeleteProfileFailsTitle\"), translate(\"DeleteProfileFailsSubTitle\"));\n } else {\n // something else deleted it, so lets just quietly claim credit\n onBack();\n }\n }\n }, [profiles, profile]);\n\n const onSave = useCallback(async () => {\n if (isNew) {\n const res = await mutateAddProfile({ title, color: color.replace(\"#\", \"\") || actualDefaultColors[0] || \"FF00FF\", description: null });\n await reloadProfiles();\n if (res.ok) {\n dispatch({\n type: PROFILE_CREATED,\n payload: {\n profile: res.profile!,\n entrypoint: getAndClearProfileEntrypoint() ?? \"Deeplink\"\n }\n });\n onBack();\n } else if (store.getState().user.profiles.length >= (store.getState().user.profilesNumberLimit ?? 0)) {\n // we are at the maximum number of profiles\n showErrorModal2(translate(\"CreateProfileFailsTitle\"), translate(\"CreateProfileFailsLimitSubtitle\"));\n } else {\n // we randomly failed\n showErrorModal2(translate(\"CreateProfileFailsTitle\"), translate(\"CreateProfileFailsSubtitle\"));\n }\n } else {\n const res = await mutateUpdateProfile({ id: profile.id, input: { title, color: color.replace(\"#\", \"\"), description: profile.description } });\n await reloadProfiles();\n if (res.ok) {\n dispatch({\n type: PROFILE_UPDATED,\n payload: {\n profile: store.getState().user.profiles.find(n => n.id == profile.id)!,\n oldProfile: profile\n }\n });\n onBack();\n } else {\n const stillExists = store.getState().user.profiles.some(n => n.id == profileId);\n if (stillExists) {\n // we randomly failed\n showErrorModal2(translate(\"EditProfileFailsTitle\"), translate(\"EditProfileFailsSubtitle\"));\n }\n else {\n // the profile had been deleted by someone else\n showErrorModal2(translate(\"EditProfileFailsTitle\"), translate(\"EditProfileFailsDeletedSubtitle\"));\n onBack();\n }\n }\n }\n }, [title, color, profile, actualDefaultColors]);\n\n\n if (!showProfiles) {\n route(navigation.templates.frontPage());\n }\n if (isNew && profiles.length >= profilesLimit) {\n route(navigation.templates.profilesPage());\n }\n\n return (\n <div className=\"profilesPage cl9\">\n <PageTopBar page={page} back={true} disableMobileTitle middle={isNew ? translations.AddProfilePageTitle : translations.EditProfilePageTitle} />\n\n <div className=\"scroll\">\n <section className={`section editprofile`}>\n <div className=\"avatarholder\">\n <Avatar text={title} color={color} class=\"large\" />\n </div>\n\n <TextInput\n autoComplete=\"off\"\n autoFocus={true}\n className={\"\"/*className*/}\n onChange={onChangeTitle}\n placeholder={translations.ProfilesNameHint}\n type=\"text\"\n value={title}\n />\n\n <ProfileColorSelector color={color ?? \"\"} colors={actualDefaultColors} onColorSelected={onChangeColor} />\n\n <div className=\"buttonrow\">\n <Button design={ButtonDesign.SecondaryBig} onClick={onBack}>{translations.Cancel}</Button>\n <Button design={ButtonDesign.SecondaryBig} onClick={onSave} disabled={!isValid || !isChanged}>{translations.GlobalSaveName}</Button>\n </div>\n {\n profile?.master &&\n <div className=\"buttonrow\">{translations.PrimaryProfileCantBeDeleted}</div>\n }\n {\n profile && !profile.master &&\n <div className=\"buttonrow\">\n <Button design={ButtonDesign.SecondaryBig} onClick={onDelete}>{translations.Delete}</Button>\n </div>\n }\n </section>\n </div>\n </div>\n );\n};\n\nfunction ProfileColorSelector(props: { color: string, colors: string[], onColorSelected: (col: string) => void }) {\n return (\n <div className=\"profileColors\">\n {\n props.colors.map(col => <button className={\"colorselect\" + (props.color == col ? \" selected\" : \"\")} style={{ backgroundColor: col }} onClick={() => props.onColorSelected(col)} />)\n }\n </div>\n );\n}\n","import { h } from \"preact\";\nimport \"./ProfilesPage.scss\";\nimport { useLinkAndPreviewContext, usePageContext, useSectionContext } from \"components/shared/hooks\";\nimport { PageTopBar } from \"components/molecules/pageTopBar\";\nimport { ContentType } from \"models/ModelType\";\nimport { IconName } from \"components/atoms/icon\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { isFeatureEnabled, Feature, useTranslations } from \"global/config\";\nimport { RootModel, UserProfileModel } from \"models/app\";\nimport { useSelector } from \"react-redux\";\nimport { hasPermissionFromToken, useDisplayLoggedIn } from \"services/user\";\nimport { navigation } from \"services/navigation\";\nimport { route } from \"preact-router\";\nimport { setProfileEntrypoint } from \"./profilePageEntry\";\n\nexport const ProfilesPage = () => {\n const page = usePageContext({ type: ContentType.ProfilesPage, resource: null, root: null, done: true });\n\n const translations = useTranslations();\n\n const section = useSectionContext(ContentType.ProfilesPage, null, null, null, null);\n const addProfileLink = useLinkAndPreviewContext(ContentType.ProfilesPage, null, section, null);\n addProfileLink.url = navigation.templates.addProfilesPage(); // todo\n\n const loggedIn = useDisplayLoggedIn();\n const profiles = useSelector((root: RootModel) => root.user.profiles);\n const profilesLimit = useSelector((root: RootModel) => root.user.profilesNumberLimit) ?? 0;\n const showProfiles = loggedIn && profiles.length > 0 && hasPermissionFromToken(\"prof\") && isFeatureEnabled(Feature.Profiles);\n if (!showProfiles) {\n route(\"/\");\n }\n\n const onEditProfile = (model: UserProfileModel) => {\n route(navigation.templates.profilesPage(model.id));\n };\n\n const onAddProfile = () => {\n setProfileEntrypoint(\"Administer\");\n };\n\n return (\n <div className=\"profilesPage cl9\">\n <PageTopBar page={page} back={true} />\n <div className=\"scroll\">\n <section className={`section profiles`}>\n {\n profiles.map(profile => (\n <div style={{ \"--colorHighlight\": profile.color }}>\n <Button icon={IconName.EditProfile40} design={ButtonDesign.ProfileGiant} onClick={() => onEditProfile(profile)}></Button>\n {profile.title}\n </div>\n ))\n }\n {\n profiles.length < profilesLimit &&\n <div>\n <Button icon={IconName.Plus40} design={ButtonDesign.ProfileGiant} link={addProfileLink} onClick={onAddProfile}></Button>\n {translations.AddProfile}\n </div>\n }\n </section>\n </div>\n </div>\n );\n};\n","import type { AnalyticsKey } from \"global/config\";\n\nlet entrypoint: Extract<AnalyticsKey, \"Settings\"> | Extract<AnalyticsKey, \"Administer\"> | undefined = undefined;\n\nexport function setProfileEntrypoint(name: typeof entrypoint): void {\n entrypoint = name;\n}\n\nexport function getAndClearProfileEntrypoint(): typeof entrypoint {\n const tmp = entrypoint;\n entrypoint = undefined;\n return tmp;\n}\n","import { h } from \"preact\";\nimport { LayoutPage } from \"..\";\nimport { environment } from \"services/environment\";\nimport { ContentType } from \"models/ModelType\";\nimport { NavigationPageRootName } from \"models/view/navigationStack\";\n\nexport const RadioPage = () => {\n const pageId = environment.apiRadioPageId;\n return <LayoutPage key={pageId} pageId={pageId} type={ContentType.Radio} root={NavigationPageRootName.Radio} />;\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { isFeatureEnabled, Feature } from \"global/config\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getRecommendationContentPagination, useRecommendationPage } from \"services/backend\";\nimport { useFilter } from \"services/filter\";\nimport type { RecommendationModel, RecommendationOwner } from \"models/domain\";\nimport { ResourceDisplayType, getItemsFromRecommendation } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize, useAutoPlay, usePageContext, useResourcesFromUnions, useSectionContext } from \"components/shared/hooks\";\nimport { usePagination } from \"components/shared/hooks/usePagination\";\nimport { FilterUi } from \"components/organisms/filter\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\nimport { ProductPageTemplate } from \"components/templates/productPage\";\n\ninterface Props {\n recommendationId: string;\n owner: RecommendationOwner;\n}\n\nexport const RecommendationPage = ({ recommendationId, owner }: Props) => {\n const query = useRecommendationPage({ id: recommendationId, first: getPaginationInit() }, owner);\n\n const product = query.model;\n const fetchFn = useCallback(\n (first: number, after: string, index: number) => getRecommendationContentPagination({ first, after, id: recommendationId }, index),\n [recommendationId]\n );\n\n const type = product?.contentType ?? ContentType.Recommendation;\n const display = useDisplayType(type);\n\n const page = usePageContext({ type, resource: product, root: null, done: query.success });\n const top = useSectionContext(type, product, page, 0, ResourceDisplayType.Top);\n const section = useSectionContext(type, product, page, 1, display);\n\n const pagination = usePagination({\n connection: product ? getItemsFromRecommendation(product) : null,\n fetchFn,\n resource: product\n });\n const unfilteredItems = useResourcesFromUnions(pagination.connection?.items ?? null, product);\n\n const { filteredItems: items, setFilter, hasLoadedOnce } = useFilter(unfilteredItems, pagination);\n\n useAutoPlay({ page, type, resource: product ?? null });\n\n return (\n <ProductPageTemplate query={query} type={type} section={top} isUserOwned={false} scrollRef={pagination.scrollRef}>\n {hasLoadedOnce && isFeatureEnabled(Feature.ClientsideFiltering) && <FilterUi onChange={setFilter} placeholder=\"\" />}\n <ResourceSection pagination={pagination} resources={items} context={section} />\n </ProductPageTemplate>\n );\n};\n\ntype RecommendationContentType = RecommendationModel[\"contentType\"] | ContentType.Recommendation;\n\nfunction useDisplayType(type: RecommendationContentType) {\n const appSize = useAppMediaSize();\n\n const displayType = useMemo(() => {\n switch (type) {\n case ContentType.PlaylistRecommendation: {\n if (appSize === MediaSize.Mobile) return ResourceDisplayType.ListLarge;\n else return ResourceDisplayType.Grid;\n }\n case ContentType.AlbumRecommendation:\n case ContentType.TrackRecommendation:\n return ResourceDisplayType.List;\n case ContentType.Recommendation:\n return null;\n default:\n return null;\n }\n }, [type, appSize]);\n\n return displayType;\n}\n","import type { ComponentChildren, RefObject } from \"preact\";\nimport { h } from \"preact\";\nimport { useCallback, useRef, useState } from \"preact/hooks\";\nimport \"./MobileSearchPageView.scss\";\nimport { getLink } from \"services/resource\";\nimport type { PageContextModel } from \"models/app/resourceContextModel\";\nimport { Button } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { PageTopBar } from \"components/molecules/pageTopBar\";\nimport { Search, SearchResultDisplay } from \"components/organisms/search\";\n\ninterface Props {\n children?: ComponentChildren;\n context: PageContextModel;\n scrollRef: RefObject<HTMLElement>;\n onScroll?: () => void;\n}\n\nexport const MobileSearchPageView = ({ children, context, scrollRef, onScroll }: Props) => {\n const title = getLink(context.type, context.resource)?.text;\n\n const [inSearch, setInSearch] = useState(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const closeSeach = useCallback(() => {\n setInSearch(false);\n }, []);\n\n const onInputFocus = useCallback(() => {\n setInSearch(true);\n }, []);\n\n const [search] = Search({ context, onFocus: onInputFocus, resultsDisplay: inSearch ? SearchResultDisplay.Always : SearchResultDisplay.Hide });\n\n return (\n <div\n className={`mobileSearchPageView Xim --inSearch-${inSearch}`}\n onScroll={onScroll}\n ref={(r) => {\n scrollRef.current = r as HTMLElement;\n }}>\n {!inSearch && <PageTopBar />}\n <div className=\"content\">\n <div className=\"search\">\n {!inSearch && <h1>{title}</h1>}\n <div>\n {inSearch && <Button ref={buttonRef} className=\"up\" icon={IconName.ArrowLeftAndroid} onClick={closeSeach} inline={{ left: true }} />}\n {search}\n </div>\n </div>\n <hr />\n {children && <div className=\"content\">{children}</div>}\n </div>\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport \"./SearchPage.scss\";\nimport { MobileSearchPageView } from \"./MobileSearchPageView\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getPlaylistCategoriesPagination, usePlaylistCategoriesPage } from \"services/backend\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { NavigationPageRootName } from \"models/view/navigationStack\";\nimport { useAppMediaSize, MediaSize, usePageContext, useSectionContext, useResourcesFromUnions } from \"components/shared/hooks\";\nimport { usePagination } from \"components/shared/hooks/usePagination\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\nexport const SearchPage = () => {\n const size = useAppMediaSize();\n if (size === MediaSize.Mobile) return <MobileSearchPage />;\n else return <DesktopSearchPage />;\n};\n\nconst MobileSearchPage = () => {\n const query = usePlaylistCategoriesPage({ first: getPaginationInit() });\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string) => getPlaylistCategoriesPagination({ first, after }), []);\n\n const pageContext = usePageContext({ type: ContentType.Search, resource: null, root: NavigationPageRootName.Search, done: true });\n const playlistCategoriesContext = useSectionContext(ContentType.PlaylistCategories, product, pageContext, 0, ResourceDisplayType.Grid);\n\n const pagination = usePagination({ resource: product, connection: product?.playlistCategories ?? null, fetchFn });\n const items = useResourcesFromUnions(pagination.connection?.items ?? null, product);\n\n return (\n <MobileSearchPageView context={pageContext} scrollRef={pagination.scrollRef}>\n <ResourceSection resources={items} context={playlistCategoriesContext} pagination={pagination} />\n </MobileSearchPageView>\n );\n};\n\nexport const DesktopSearchPage = () => {\n const query = usePlaylistCategoriesPage({ first: getPaginationInit() });\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string) => getPlaylistCategoriesPagination({ first, after }), []);\n\n return (\n <ShowAllPageTemplate\n query={query}\n type={ContentType.PlaylistCategories}\n items={product?.playlistCategories ?? null}\n fetchFn={fetchFn}\n display={ResourceDisplayType.Grid}\n root={NavigationPageRootName.Explore}\n disableFiltering\n />\n );\n};\n","import type { ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\nimport { useState } from \"preact/hooks\";\nimport \"./Accordion.scss\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { Icon, IconName, IconSize } from \"components/atoms/icon\";\n\ninterface Props {\n children: ComponentChildren;\n title: string;\n icon: IconName;\n}\nexport const Accordion = ({ children, title, icon }: Props) => {\n const [open, setOpen] = useState(false);\n const toggleOpen = () => {\n setOpen(!open);\n };\n return (\n <div className={`accordion LsQ`}>\n <Button onClick={toggleOpen} icon={icon} design={ButtonDesign.SideBarLinkBig} inline={{ left: true }}>\n <div className=\"title\">{title}</div>\n <Icon className={`chevron --open-${open}`} icon={IconName.ArrowRight} size={IconSize.Default} />\n </Button>\n\n <div className={`content --show-${open}`}>{children}</div>\n </div>\n );\n};\n","import type { ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\nimport { useState } from \"preact/hooks\";\nimport \"./Accordion.scss\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { Icon, IconName, IconSize } from \"components/atoms/icon\";\n\ninterface Props {\n onClick: () => void;\n title: string;\n icon: IconName;\n}\nexport const AccordionLink = ({ onClick, title, icon }: Props) => {\n return (\n <div className={`accordion LsQ`}>\n <Button onClick={onClick} icon={icon} design={ButtonDesign.SideBarLinkBig} inline={{ left: true }}>\n <div className=\"title\">{title}</div>\n <Icon className={`--open-${open}`} icon={IconName.ArrowRight} size={IconSize.Default} />\n </Button>\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { Header } from \"./Header\";\nimport { Setting } from \"./Setting\";\nimport { dispatch } from \"global\";\nimport { CONTEXT_MENU_CLOSE_ALL } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { OpenMenuResultAction } from \"services/contextMenus\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\nimport { showInAppFeedbackModal } from \"components/organisms/modal/modals\";\n\nexport const FeedbackSettings = () => {\n const translations = useTranslations();\n\n const giveFeedback = async () => {\n showInAppFeedbackModal();\n dispatch({ type: CONTEXT_MENU_CLOSE_ALL, payload: { result: { action: OpenMenuResultAction.Click } } });\n };\n const button = (\n <Button design={ButtonDesign.SecondarySmall} onClick={giveFeedback}>\n {translations.SettingsFeedbackTitle}\n </Button>\n );\n return (\n <div className=\"settingContainer\">\n <Header icon={IconName.Feedback} title={translations.FeedBackTitle} />\n <Setting title={translations.SettingsDirectFeedback} subtitle={translations.SettingsFeedbackInfoText} button={button} />\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useTranslations } from \"global/config\";\nimport { IconName } from \"components/atoms/icon\";\nimport { AccordionLink } from \"./AccordionLink\";\nimport { useForceLogoutUrl } from \"services/backend\";\nimport { useCallback } from \"preact/hooks\";\n\nexport const ForceLogoutSettings = () => {\n const translations = useTranslations();\n\n const { model } = useForceLogoutUrl({});\n\n const goToForceLogout = useCallback(() => {\n window.open(model || \"\", \"_blank\", \"noopener \");\n }, [model]);\n\n return <AccordionLink icon={IconName.SignOut} title={translations.SettingsForceLogoutTitle} onClick={goToForceLogout} />;\n};\n","import { h } from \"preact\";\nimport type { IconName } from \"components/atoms/icon\";\nimport { Icon, IconSize } from \"components/atoms/icon\";\n\ninterface Props {\n icon: IconName;\n title: string;\n}\nexport const Header = ({ icon, title }: Props) => {\n return (\n <div className=\"header\">\n <Icon icon={icon} size={IconSize.Default} />\n <div className=\"title\">{title}</div>\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useTranslations } from \"global/config\";\nimport { IconName } from \"components/atoms/icon\";\nimport { AccordionLink } from \"./AccordionLink\";\n\nexport const HelpSettings = () => {\n const translations = useTranslations();\n const goToHelp = () => {\n window.open(translations.SettingsHelpUrl, \"_blank\", \"noopener \");\n };\n return (\n <AccordionLink icon={IconName.GuidedHelp} title={translations.SettingsHelpButton} onClick={goToHelp} />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { Accordion } from \"./Accordion\";\nimport { Setting } from \"./Setting\";\nimport { dispatch } from \"global\";\nimport { SET_LOCALIZATION_SETTING } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport type { RootModel } from \"models/app\";\nimport { LanguageSetting } from \"models/view/Localization\";\nimport { RadioButton } from \"components/atoms/controls/radioButton\";\nimport { IconName } from \"components/atoms/icon\";\n\nexport const LanguageSettings = () => {\n const translations = useTranslations();\n\n const buttonDanish = <LanguageButton setting={LanguageSetting.Danish} />;\n const buttonEnglish = <LanguageButton setting={LanguageSetting.English} />;\n const buttonAuto = <LanguageButton setting={LanguageSetting.Auto} />;\n return (\n <Accordion icon={IconName.Language} title={translations.SettingsLanguage}>\n <Setting title={translations.SettingsLanguageDanish} button={buttonDanish} />\n <Setting title={translations.SettingsLanguageEnglish} button={buttonEnglish} />\n <Setting title={translations.SettingsLanguageSystem} subtitle={translations.SettingsAppearanceAutomaticSubTitle} button={buttonAuto} />\n </Accordion>\n );\n};\n\nconst LanguageButton = ({ setting }: { setting: LanguageSetting }) => {\n const localizationSetting = useSelector((root: RootModel) => root.ui.localizationSetting);\n const change = useCallback(() => {\n dispatch({ type: SET_LOCALIZATION_SETTING, payload: { localizationSetting: setting } });\n }, [setting]);\n\n return <RadioButton checked={localizationSetting === setting} onChange={change} name={setting} />;\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { Accordion } from \"./Accordion\";\nimport { Setting } from \"./Setting\";\nimport { dispatch } from \"global\";\nimport { PLAYQUEUE_ENDLESSPLAY_TOGGLE, PLAYQUEUE_PRIORITY_LANE_WARNING_TOGGLE } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport { EndlessPlaySwitchTestLocator } from \"global/constants\";\nimport type { RootModel } from \"models/app\";\nimport { Switch } from \"components/atoms/controls/switch\";\nimport { IconName } from \"components/atoms/icon\";\n\nexport const PlaybackSettings = () => {\n const translations = useTranslations();\n const isEndlessPlayOn = useSelector((root: RootModel) => root.queue.isEndlessPlayOn);\n const priorityLaneWarning = useSelector((root: RootModel) => root.queue.priorityLaneWarning);\n\n const handleToggleEndlessPlay = useCallback(() => dispatch({ type: PLAYQUEUE_ENDLESSPLAY_TOGGLE, payload: { on: !isEndlessPlayOn } }), [isEndlessPlayOn]);\n const handleTogglePriorityLaneWarning = useCallback(\n () => dispatch({ type: PLAYQUEUE_PRIORITY_LANE_WARNING_TOGGLE, payload: { on: !priorityLaneWarning } }),\n [priorityLaneWarning]\n );\n const testLocator = useMemo(() => EndlessPlaySwitchTestLocator(isEndlessPlayOn), [isEndlessPlayOn]);\n\n const button = <Switch checked={isEndlessPlayOn} onClick={handleToggleEndlessPlay} testLocator={testLocator} />;\n const priorityLaneWarningButton = <Switch checked={priorityLaneWarning} onClick={handleTogglePriorityLaneWarning} testLocator={testLocator} />;\n\n return (\n <Accordion icon={IconName.Playback} title={translations.SettingsPlayer}>\n <Setting title={translations.SettingsEndlessPlayTitle} subtitle={translations.SettingsEndlessPlaySubTitle} button={button} />\n <Setting title={translations.PriorityQueueWarningSettingsTitle} subtitle={translations.PriorityQueueWarningSettingsSubTitle} button={priorityLaneWarningButton} />\n </Accordion>\n );\n};\n","import { h } from \"preact\";\nimport \"./Setting.scss\";\n\ninterface Props {\n title?: string;\n subtitle?: string;\n button?: h.JSX.Element;\n}\nexport const Setting = ({ title, subtitle, button }: Props) => {\n return (\n <div className=\"setting e32\">\n <div className=\"info\">\n {\n title &&\n <div className=\"title\">{title} </div>\n }\n {\n subtitle &&\n <div className=\"description\">{subtitle}</div>\n }\n </div>\n {button}\n </div>\n );\n};\n","import { Fragment, h } from \"preact\";\nimport \"./SettingsPage.scss\";\nimport { FeedbackSettings } from \"./FeedbackSettings\";\nimport { LanguageSettings } from \"./LanguageSettings\";\nimport { PlaybackSettings } from \"./PlaybackSettings\";\nimport { SignOutSettings } from \"./SignOutSettings\";\nimport { ThemeSettings } from \"./ThemeSettings\";\nimport { VersionSettings } from \"./VersionSettings\";\nimport { ContentType } from \"models/ModelType\";\nimport { usePageContext } from \"components/shared/hooks\";\nimport { PageTopBar } from \"components/molecules/pageTopBar\";\nimport { HelpSettings } from \"./HelpSettings\";\nimport { SoundQualitySettings } from \"./SoundQualitySettings\";\nimport { UsernameSetting } from \"./UsernameSetting\";\nimport { LoginState } from \"models/app\";\nimport { useLoginState } from \"services/user\";\nimport { ForceLogoutSettings } from \"components/pages/settingsPage/ForceLogoutSettings\";\nimport { Feature, isFeatureEnabled } from \"global/config\";\n\nexport const SettingsPage = () => {\n const page = usePageContext({ type: ContentType.SettingsPage, resource: null, root: null, done: true });\n const isLoggedIn = useLoginState() === LoginState.LoggedIn;\n\n return (\n <div className=\"settingsPage s6r\">\n <div className=\"scroll\">\n <PageTopBar page={page} />\n <section className={`section`}>\n <PlaybackSettings />\n <hr />\n <ThemeSettings />\n <hr />\n {isLoggedIn && (\n <Fragment>\n <SoundQualitySettings />\n <hr />\n </Fragment>\n )}\n <LanguageSettings />\n <hr />\n <HelpSettings />\n {isFeatureEnabled(Feature.ForceLogout) && (\n <>\n <hr />\n <ForceLogoutSettings />\n </>\n )}\n {isLoggedIn && (\n <Fragment>\n <hr />\n <FeedbackSettings />\n <hr />\n <SignOutSettings />\n <UsernameSetting />\n </Fragment>\n )}\n <VersionSettings />\n </section>\n </div>\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useTranslations } from \"global/config\";\nimport { LogoutTrigger } from \"services/logger/analytics/properties/event\";\nimport { logout } from \"services/user\";\nimport { Button, ButtonDesign } from \"components/atoms/controls/button\";\nimport { IconName } from \"components/atoms/icon\";\n\nexport const SignOutSettings = () => {\n const translations = useTranslations();\n const logoutFn = useCallback(() => logout(LogoutTrigger.Manual), []);\n return (\n <div className=\"settingContainer signout\">\n <Button icon={IconName.SignOut} design={ButtonDesign.SecondaryBig} onClick={logoutFn}>\n {translations.LogOut}\n </Button>\n </div>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { Accordion } from \"./Accordion\";\nimport { Setting } from \"./Setting\";\nimport { dispatch } from \"global\";\nimport { SET_SOUNDQUALITY_SETTING } from \"global/actions\";\nimport { Feature, isFeatureEnabled, useTranslations } from \"global/config\";\nimport type { RootModel } from \"models/app\";\nimport { SoundQualitySetting } from \"models/view/Localization\";\nimport { RadioButton } from \"components/atoms/controls/radioButton\";\nimport { IconName } from \"components/atoms/icon\";\nimport { hasPermissionFromToken } from \"services/user\";\n\nexport const SoundQualitySettings = () => {\n const translations = useTranslations();\n\n if (!isFeatureEnabled(Feature.SoundQuality) || !hasPermissionFromToken(\"cd\")) return null;\n\n const buttonHigh = <SoundQualityButton setting={SoundQualitySetting.High} />;\n const buttonNormal = <SoundQualityButton setting={SoundQualitySetting.Normal} />;\n const buttonLow = <SoundQualityButton setting={SoundQualitySetting.Low} />;\n return (\n <Accordion icon={IconName.VolumeUp} title={translations.SettingsSoundQualityTitle}>\n <Setting title={translations.SettingsSoundQualityHighTitle} subtitle={translations.SettingsSoundQualityHighDescription} button={buttonHigh} />\n <Setting title={translations.SettingsSoundQualityNormalTitle} subtitle={translations.SettingsSoundQualityNormalDescription} button={buttonNormal} />\n <Setting title={translations.SettingsSoundQualityLowTitle} subtitle={translations.SettingsSoundQualityLowDescription} button={buttonLow} />\n </Accordion>\n );\n};\n\nconst SoundQualityButton = ({ setting }: { setting: SoundQualitySetting }) => {\n const soundQualitySetting = useSelector((root: RootModel) => root.ui.soundQualitySetting);\n const change = useCallback(() => {\n dispatch({ type: SET_SOUNDQUALITY_SETTING, payload: { soundQualitySetting: setting } });\n }, [setting]);\n\n return <RadioButton checked={soundQualitySetting === setting} onChange={change} name={setting} />;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { Accordion } from \"./Accordion\";\nimport { Setting } from \"./Setting\";\nimport { dispatch } from \"global\";\nimport { SET_THEME_SETTING } from \"global/actions\";\nimport { useTranslations } from \"global/config\";\nimport type { RootModel } from \"models/app\";\nimport { ThemeSetting } from \"models/view\";\nimport {} from \"models/view/Localization\";\nimport { RadioButton } from \"components/atoms/controls/radioButton\";\nimport { IconName } from \"components/atoms/icon\";\n\nexport const ThemeSettings = () => {\n const translations = useTranslations();\n\n const buttonDarkTheme = <ThemeButton setting={ThemeSetting.Dark} />;\n const buttonLightTheme = <ThemeButton setting={ThemeSetting.Light} />;\n const buttonBrowserTheme = <ThemeButton setting={ThemeSetting.Auto} />;\n\n return (\n <Accordion icon={IconName.Appearance} title={translations.SettingsAppearanceTitle}>\n <Setting title={translations.SettingsAppearanceLight} button={buttonLightTheme} />\n <Setting title={translations.SettingsAppearanceDark} button={buttonDarkTheme} />\n <Setting title={translations.SettingsAppearanceAutomaticTitle} subtitle={translations.SettingsAppearanceAutomaticSubTitle} button={buttonBrowserTheme} />\n </Accordion>\n );\n};\n\nconst ThemeButton = ({ setting }: { setting: ThemeSetting }) => {\n const theme = useSelector((root: RootModel) => root.ui.theme);\n const change = useCallback(() => dispatch({ type: SET_THEME_SETTING, payload: { theme: setting, shortcut: true } }), [setting]);\n\n return <RadioButton checked={theme === setting} onChange={change} name={setting} />;\n};\n","import { h } from \"preact\";\nimport { useSelector } from \"react-redux\";\nimport type { RootModel } from \"models/app\";\n\nexport const UsernameSetting = () => {\n const username = useSelector((root: RootModel) => root.user.username);\n return (\n <p className=\"username\">{username}</p>\n );\n};\n","import { h } from \"preact\";\nimport { useSelector } from \"react-redux\";\nimport type { RootModel } from \"models/app\";\n\nexport const VersionSettings = () => {\n const { major, minor, release, build } = useSelector((state: RootModel) => state.app.version);\n return (\n <p className=\"version-number\">\n version: {major}.{minor}.{release}.{build}\n </p>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getAlbumArtistAlbumsPagination, useAlbumArtistAlbumsPage } from \"services/backend/backend\";\nimport { convertToAlbumSortOption } from \"services/sort/sortService\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize, useSortOptions } from \"components/shared/hooks\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n albumId: string;\n}\n\nexport const AlbumArtistAlbumsShowAllPage = ({ albumId }: Props) => {\n const sortOptions = useSortOptions({ context: ContentType.AlbumArtistAlbums });\n const orderBy = convertToAlbumSortOption(sortOptions.selected);\n\n const query = useAlbumArtistAlbumsPage({ id: albumId, first: getPaginationInit(), orderBy });\n const resource = query.model;\n\n const fetchFn = useCallback((first: number, after: string) => getAlbumArtistAlbumsPagination({ first, after, id: albumId, orderBy }), [albumId, orderBy]);\n\n const display = useAppMediaSize() === MediaSize.Mobile ? ResourceDisplayType.ListLarge : ResourceDisplayType.Grid;\n\n return (\n <ShowAllPageTemplate query={query} type={ContentType.AlbumArtistAlbums} items={resource?.albums ?? null} fetchFn={fetchFn} display={display} sortOptions={sortOptions} />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getArtistAlbumsPagination, useArtistAlbumsPage } from \"services/backend/backend\";\nimport { convertToAlbumSortOption } from \"services/sort/sortService\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize, useSortOptions } from \"components/shared/hooks\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n artistId: string;\n}\n\nexport const ArtistAlbumsShowAllPage = ({ artistId }: Props) => {\n const sortOptions = useSortOptions({ context: ContentType.ArtistAlbums });\n const orderBy = convertToAlbumSortOption(sortOptions.selected);\n\n const query = useArtistAlbumsPage({ id: artistId, first: getPaginationInit(), orderBy });\n const resource = query.model;\n\n const fetchFn = useCallback((first: number, after: string) => getArtistAlbumsPagination({ first, after, id: artistId, orderBy }), [artistId, orderBy]);\n\n const display = useAppMediaSize() === MediaSize.Mobile ? ResourceDisplayType.ListLarge : ResourceDisplayType.Grid;\n\n return <ShowAllPageTemplate query={query} type={ContentType.ArtistAlbums} items={resource?.albums ?? null} fetchFn={fetchFn} display={display} sortOptions={sortOptions} />;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getArtistAppearsOnAlbumsPagination, useArtistAppearsOnPage } from \"services/backend/backend\";\nimport { convertToAlbumSortOption } from \"services/sort/sortService\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize, useSortOptions } from \"components/shared/hooks\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n artistId: string;\n}\n\nexport const ArtistAppearsOnShowAllPage = ({ artistId }: Props) => {\n const sortOptions = useSortOptions({ context: ContentType.ArtistAppearsOn });\n const orderBy = convertToAlbumSortOption(sortOptions.selected);\n\n const query = useArtistAppearsOnPage({ id: artistId, first: getPaginationInit(), orderBy });\n const resource = query.model;\n\n const fetchFn = useCallback((first: number, after: string) => getArtistAppearsOnAlbumsPagination({ first, after, id: artistId, orderBy }), [artistId, orderBy]);\n\n const display = useAppMediaSize() === MediaSize.Mobile ? ResourceDisplayType.ListLarge : ResourceDisplayType.Grid;\n\n return <ShowAllPageTemplate query={query} type={ContentType.ArtistAppearsOn} items={resource?.albums ?? null} fetchFn={fetchFn} display={display} sortOptions={sortOptions} />;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getArtistTracksPagination, useArtistTracksPage } from \"services/backend/backend\";\nimport { convertToTracksSortOption } from \"services/sort/sortService\";\nimport type { SortOptionsModel } from \"models/app\";\nimport { SortOption } from \"models/app\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { useSortOptions } from \"components/shared/hooks\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n artistId: string;\n max?: number;\n sortOptions?: SortOptionsModel;\n}\n\nconst ArtistTracksShowAllPage = ({ artistId, max, sortOptions }: Props) => {\n const orderBy = convertToTracksSortOption(sortOptions ? sortOptions.selected : SortOption.Popularity);\n const query = useArtistTracksPage({ id: artistId, first: getPaginationInit(max), orderBy });\n const resource = query.model;\n\n const fetchFn = useCallback((first: number, after: string, index: number) => getArtistTracksPagination({ first, after, id: artistId, orderBy }, index), [artistId, orderBy]);\n\n return (\n <ShowAllPageTemplate\n query={query}\n type={ContentType.ArtistTracks}\n items={resource?.tracks ?? null}\n fetchFn={fetchFn}\n display={ResourceDisplayType.List}\n max={max}\n sortOptions={sortOptions}\n />\n );\n};\n\nexport const ArtistPopularTracksShowAllPage = ({ artistId }: Props) => {\n const max = pageContent.artistPopularTracksShowAllPageItemsLimit;\n return <ArtistTracksShowAllPage artistId={artistId} max={max} />;\n};\nexport const ArtistAllTracksShowAllPage = ({ artistId }: Props) => {\n const sortOptions = useSortOptions({ context: ContentType.ArtistTracks });\n return <ArtistTracksShowAllPage artistId={artistId} sortOptions={sortOptions} />;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getArtistSimilarArtistsPagination, useArtistSimilarArtistsPage } from \"services/backend/backend\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n artistId: string;\n}\n\nexport const ArtistSimilarArtistsShowAllPage = ({ artistId }: Props) => {\n const query = useArtistSimilarArtistsPage({ id: artistId, first: getPaginationInit() });\n const resource = query.model;\n\n const fetchFn = useCallback((first: number, after: string) => getArtistSimilarArtistsPagination({ first, after, id: artistId }), [artistId]);\n\n return <ShowAllPageTemplate query={query} type={ContentType.ArtistSimilarArtists} items={resource?.artists ?? null} fetchFn={fetchFn} display={ResourceDisplayType.Grid} />;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getArtistSinglesPagination, useArtistSinglesPage } from \"services/backend/backend\";\nimport { convertToAlbumSortOption } from \"services/sort/sortService\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize, useSortOptions } from \"components/shared/hooks\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n artistId: string;\n}\n\nexport const ArtistSinglesShowAllPage = ({ artistId }: Props) => {\n const sortOptions = useSortOptions({ context: ContentType.ArtistSingles });\n const orderBy = convertToAlbumSortOption(sortOptions.selected);\n\n const query = useArtistSinglesPage({ id: artistId, first: getPaginationInit(), orderBy });\n const resource = query.model;\n\n const fetchFn = useCallback(\n (first: number, after: string | null) => (resource?.artist ? getArtistSinglesPagination({ first, after, id: artistId, orderBy }) : null),\n [artistId, orderBy, resource]\n );\n\n const display = useAppMediaSize() === MediaSize.Mobile ? ResourceDisplayType.ListLarge : ResourceDisplayType.Grid;\n\n return <ShowAllPageTemplate query={query} type={ContentType.ArtistSingles} items={resource?.albums ?? null} fetchFn={fetchFn} display={display} sortOptions={sortOptions} />;\n};\n","import { h } from \"preact\";\nimport { LayoutPageItemShowAllPage } from \"./LayoutPageItemShowAllPage\";\nimport { environment } from \"services/environment\";\nimport { ContentType } from \"models/ModelType\";\n\ninterface Props {\n itemId: string;\n resourceId?: string;\n}\n\nexport const FrontPageItemShowAllPage = ({ itemId, resourceId }: Props) => {\n return <LayoutPageItemShowAllPage pageType={ContentType.FrontPageShowAll} pageId={environment.apiFrontPageId} itemId={itemId} resourceId={resourceId} />;\n};\n","import { h } from \"preact\";\nimport { useCallback, useMemo } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getLayoutItemContentPagination, useLayoutItemPage } from \"services/backend/backend\";\nimport { isPlayable } from \"services/playable\";\nimport { getResourceFromUnion } from \"services/resource\";\nimport type { LocationContentType } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { getLayoutPageItemConnectionModelItems } from \"models/domain/helpers\";\nimport type { LayoutItemContentContentPreviewModel, LayoutItemPageModel, LayoutItemSectionModel } from \"models/domain/layoutPage\";\nimport { ContentType } from \"models/ModelType\";\nimport type { AlternateAutoPlayFn } from \"components/templates/showAllPage\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n pageId: string;\n itemId: string;\n pageType: LocationContentType;\n resourceId?: string;\n}\n\nexport const LayoutPageItemShowAllPage = ({ pageId, itemId, pageType, resourceId }: Props) => {\n const query = useLayoutItemPage({ first: getPaginationInit(), pageId, itemId });\n const product = query.model;\n const connection = getLayoutPageItemConnectionModelItems(product?.content ?? null);\n const fetchFn = useCallback((first: number, after: string) => getLayoutItemContentPagination({ first, after, pageId, itemId }), [pageId, itemId]);\n\n const type = product?.contentType ?? ContentType.LayoutItem;\n const contentType = product?.content?.contentType ?? null;\n\n const display = useDisplayType(contentType);\n\n const autoPlayResource = useAutoPlayResource({ product, items: connection?.items ?? null, resourceId });\n const getAutoPlayItem: AlternateAutoPlayFn<LayoutItemContentContentPreviewModel> = useCallback(() => {\n return { type, resource: autoPlayResource };\n }, [autoPlayResource, type]);\n\n return <ShowAllPageTemplate query={query} type={type} pageType={pageType} items={connection} fetchFn={fetchFn} display={display} alternateAutoPlayFn={getAutoPlayItem} />;\n};\n\nfunction useDisplayType(type: NonNullable<LayoutItemSectionModel[\"content\"]>[\"contentType\"] | null): ResourceDisplayType {\n return useMemo(() => {\n switch (type) {\n case ContentType.AlbumsLayoutItemContent:\n case ContentType.ArtistsLayoutItemContent:\n case ContentType.ChartsLayoutItemContent:\n case ContentType.LiveRadioCategoriesLayoutItemContent:\n case ContentType.LiveRadiosLayoutItemContent:\n case ContentType.MixRadiosLayoutItemContent:\n case ContentType.MixedContentLayoutItemContent:\n case ContentType.PlaylistCategoriesLayoutItemContent:\n case ContentType.PlaylistsLayoutItemContent:\n case ContentType.RecommendationsLayoutItemContent:\n case ContentType.BannerLayoutItemContent: // todo?\n case null:\n return ResourceDisplayType.Grid;\n case ContentType.TracksLayoutItemContent:\n return ResourceDisplayType.List;\n }\n }, [type]);\n}\n\ninterface UseAutoPlayResourceProps {\n resourceId: string | undefined;\n product: LayoutItemPageModel | null;\n items: LayoutItemContentContentPreviewModel[] | null;\n}\n\nfunction useAutoPlayResource({ resourceId, items, product }: UseAutoPlayResourceProps) {\n return useMemo(() => {\n if (!product || !items) return null;\n const item = items.find((item) => item.id === resourceId) ?? null;\n if (!item) return null;\n const resource = getResourceFromUnion(item, product);\n if (!resource || !isPlayable(resource)) return null;\n return resource;\n }, [product, items, resourceId]);\n}\n","import { h } from \"preact\";\nimport { LayoutPageItemShowAllPage } from \"./LayoutPageItemShowAllPage\";\nimport { environment } from \"services/environment\";\nimport { ContentType } from \"models/ModelType\";\n\ninterface Props {\n itemId: string;\n resourceId?: string;\n}\n\nexport const RadioPageItemShowAllPage = ({ itemId, resourceId }: Props) => {\n return <LayoutPageItemShowAllPage pageType={ContentType.RadioPageShowAll} pageId={environment.apiRadioPageId} itemId={itemId} resourceId={resourceId} />;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { dispatch } from \"global\";\nimport { USER_ADD_SEARCH_HISTORY } from \"global/actions\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getSearchAlbumsPagination, useSearchAlbumsPage } from \"services/backend/backend\";\nimport { isSearchMixedResultPreviewModel } from \"services/playable\";\nimport { decodeUrlSearchString } from \"services/search/searchService\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize } from \"components/shared/hooks\";\nimport type { PreviewAction } from \"components/molecules/preview\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n criterion?: string;\n}\n\nexport const SearchAlbumResultsShowAllPage = ({ criterion: encodedCriterion }: Props) => {\n const criterion = decodeUrlSearchString(encodedCriterion ?? null) ?? \"\";\n const criterianOK = criterion != \"\";\n const max = pageContent.searchAlbumPageItemsLimit;\n\n const query = useSearchAlbumsPage({ criterion, first: getPaginationInit(max) }, !criterianOK);\n const resource = query.model;\n\n const fetchFn = useCallback((first: number, after: string) => (criterion != null ? getSearchAlbumsPagination({ criterion, first, after }) : null), [criterion]);\n const display = useAppMediaSize() === MediaSize.Mobile ? ResourceDisplayType.ListLarge : ResourceDisplayType.Grid;\n\n const onAction = useCallback((action: PreviewAction, preview: PreviewContextModel) => {\n if (!preview.resource) return;\n if (isSearchMixedResultPreviewModel(preview.resource)) dispatch({ type: USER_ADD_SEARCH_HISTORY, payload: { item: preview.resource } });\n }, []);\n\n return (\n <ShowAllPageTemplate\n display={display}\n fetchFn={fetchFn}\n items={resource?.albums ?? null}\n max={max}\n onAction={onAction}\n query={query}\n type={ContentType.SearchAlbumResults}\n />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { dispatch } from \"global\";\nimport { USER_ADD_SEARCH_HISTORY } from \"global/actions\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getSearchArtistsPagination, useSearchArtistsPage } from \"services/backend/backend\";\nimport { isSearchMixedResultPreviewModel } from \"services/playable\";\nimport { decodeUrlSearchString } from \"services/search/searchService\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize } from \"components/shared/hooks\";\nimport type { PreviewAction } from \"components/molecules/preview\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n criterion?: string;\n}\n\nexport const SearchArtistResultsShowAllPage = ({ criterion: encodedCriterion }: Props) => {\n const criterion = decodeUrlSearchString(encodedCriterion ?? null) ?? \"\";\n const criterianOK = criterion != \"\";\n const max = pageContent.searchArtistPageItemsLimit;\n\n const query = useSearchArtistsPage({ criterion, first: getPaginationInit(max) }, !criterianOK);\n const resource = query.model;\n\n const fetchFn = useCallback((first: number, after: string) => (criterion != null ? getSearchArtistsPagination({ criterion, first, after }) : null), [criterion]);\n const display = useAppMediaSize() === MediaSize.Mobile ? ResourceDisplayType.ListLarge : ResourceDisplayType.Grid;\n\n const onAction = useCallback((action: PreviewAction, preview: PreviewContextModel) => {\n if (!preview.resource) return;\n if (isSearchMixedResultPreviewModel(preview.resource)) dispatch({ type: USER_ADD_SEARCH_HISTORY, payload: { item: preview.resource } });\n }, []);\n\n return (\n <ShowAllPageTemplate\n display={display}\n fetchFn={fetchFn}\n items={resource?.artists ?? null}\n max={max}\n onAction={onAction}\n query={query}\n type={ContentType.SearchArtistResults}\n />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { dispatch } from \"global\";\nimport { USER_ADD_SEARCH_HISTORY } from \"global/actions\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getSearchPlaylistsPagination, useSearchPlaylistsPage } from \"services/backend/backend\";\nimport { isSearchMixedResultPreviewModel } from \"services/playable\";\nimport { decodeUrlSearchString } from \"services/search/searchService\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { MediaSize, useAppMediaSize } from \"components/shared/hooks\";\nimport type { PreviewAction } from \"components/molecules/preview\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n criterion?: string;\n}\n\nexport const SearchPlaylistResultsShowAllPage = ({ criterion: encodedCriterion }: Props) => {\n const criterion = decodeUrlSearchString(encodedCriterion ?? null) ?? \"\";\n const criterianOK = criterion != \"\";\n const max = pageContent.searchPlaylistPageItemsLimit;\n\n const query = useSearchPlaylistsPage({ criterion, first: getPaginationInit(max) }, !criterianOK);\n const resource = query.model;\n\n const fetchFn = useCallback((first: number, after: string) => (criterion != null ? getSearchPlaylistsPagination({ criterion, first, after }) : null), [criterion]);\n const display = useAppMediaSize() === MediaSize.Mobile ? ResourceDisplayType.ListLarge : ResourceDisplayType.Grid;\n\n const onAction = useCallback((action: PreviewAction, preview: PreviewContextModel) => {\n if (!preview.resource) return;\n if (isSearchMixedResultPreviewModel(preview.resource)) dispatch({ type: USER_ADD_SEARCH_HISTORY, payload: { item: preview.resource } });\n }, []);\n\n return (\n <ShowAllPageTemplate\n display={display}\n fetchFn={fetchFn}\n items={resource?.playlists ?? null}\n max={max}\n onAction={onAction}\n query={query}\n type={ContentType.SearchPlaylistResults}\n />\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { dispatch } from \"global\";\nimport { USER_ADD_SEARCH_HISTORY } from \"global/actions\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getSearchTracksPagination, useSearchTracksPage } from \"services/backend/backend\";\nimport { isSearchMixedResultPreviewModel } from \"services/playable\";\nimport { decodeUrlSearchString } from \"services/search/searchService\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport type { PreviewAction } from \"components/molecules/preview\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\ninterface Props {\n criterion?: string;\n}\n\nexport const SearchTrackResultsShowAllPage = ({ criterion: encodedCriterion }: Props) => {\n const criterion = decodeUrlSearchString(encodedCriterion ?? null) ?? \"\";\n const criterianOK = criterion != \"\";\n const max = pageContent.searchTracksPageItemsLimit;\n\n const query = useSearchTracksPage({ criterion, first: getPaginationInit(max) }, !criterianOK);\n const resource = query.model;\n const fetchFn = useCallback((first: number, after: string) => (criterion != null ? getSearchTracksPagination({ criterion, first, after }) : null), [criterion]);\n\n const display = ResourceDisplayType.List;\n\n const onAction = useCallback((action: PreviewAction, preview: PreviewContextModel) => {\n if (!preview.resource) return;\n if (isSearchMixedResultPreviewModel(preview.resource)) dispatch({ type: USER_ADD_SEARCH_HISTORY, payload: { item: preview.resource } });\n }, []);\n\n return (\n <ShowAllPageTemplate\n display={display}\n fetchFn={fetchFn}\n items={resource?.tracks ?? null}\n max={max}\n onAction={onAction}\n query={query}\n type={ContentType.SearchTrackResults}\n />\n );\n};\n","import { h } from \"preact\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport { useTrackRadioPage } from \"services/backend\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { usePageContext, useSectionContext, useTrackPlayables } from \"components/shared/hooks\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\nimport { ProductPageTemplate } from \"components/templates/productPage\";\n\ninterface Props {\n trackId: string;\n}\n\nexport const TrackRadioPage = ({ trackId }: Props) => {\n const query = useTrackRadioPage({ id: trackId, first: pageContent.trackRadioPageItemsLimit });\n const product = query.model;\n\n const page = usePageContext({ type: ContentType.TrackRadio, resource: product, root: null, done: query.success });\n const top = useSectionContext(ContentType.TrackRadio, product, page, 0, ResourceDisplayType.Top);\n const tracks = useSectionContext(ContentType.TrackRadio, product, page, 1, ResourceDisplayType.List);\n\n const playables = useTrackPlayables(product?.tracks?.items ?? null, product);\n\n return (\n <ProductPageTemplate query={query} type={ContentType.TrackRadio} section={top} isUserOwned={false}>\n <ResourceSection resources={playables} context={tracks} />\n </ProductPageTemplate>\n );\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getHistoryRecommendationsPagination, useHistoryRecommendationsPage } from \"services/backend\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\nexport const UserHistoryPage = () => {\n const query = useHistoryRecommendationsPage({ first: getPaginationInit() });\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string) => getHistoryRecommendationsPagination({ first, after }), []);\n\n return <ShowAllPageTemplate query={query} type={ContentType.UserHistory} items={product?.collections ?? null} fetchFn={fetchFn} display={ResourceDisplayType.Grid} />;\n};\n","import { h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { getPaginationInit } from \"global/constants/pagination\";\nimport { getDiscoverRecommendationsPagination, useDiscoverRecommendationsPage } from \"services/backend\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { ShowAllPageTemplate } from \"components/templates/showAllPage\";\n\nexport const UserRecommendationsPage = () => {\n const query = useDiscoverRecommendationsPage({ first: getPaginationInit() });\n const product = query.model;\n const fetchFn = useCallback((first: number, after: string) => getDiscoverRecommendationsPagination({ first, after }), []);\n\n return <ShowAllPageTemplate query={query} type={ContentType.UserRecommendations} items={product?.collections ?? null} fetchFn={fetchFn} display={ResourceDisplayType.Grid} />;\n};\n","import {route} from \"preact-router\";\nimport {showYourYearModal} from \"components/organisms/modal/modals\";\n\nconst YourYear = () => {\n route('/');\n showYourYearModal();\n return null;\n};\n\nexport default YourYear;","export function CustomResizeObserver(target: HTMLElement | null, callbackFn: (height: number, width: number) => void) {\n if (!target) {\n return null;\n }\n const resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n // requestAnimationFrame workaround to prevent \"loop limit exceeded\" issues\n // https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded\n window.requestAnimationFrame(() => {\n entries.forEach((entry) => {\n if (!entry || entry.target !== target) return;\n const { height, width } = entry.contentRect;\n callbackFn(height, width);\n });\n });\n });\n\n resizeObserver.observe(target);\n\n return () => {\n resizeObserver.disconnect();\n };\n}\n","export * from \"./useActiveAppLayer\";\nexport * from \"./useAppMediaSize\";\nexport * from \"./useAppSize\";\nexport * from \"./useArrayMemo\";\nexport * from \"./useAudioProperties\";\nexport * from \"./useAutoPlay\";\nexport * from \"./useCallbackMap\";\nexport * from \"./useCoalesced\";\nexport * from \"./useContext\";\nexport * from \"./useContextMenu\";\nexport * from \"./useCurrentLiveRadio\";\nexport * from \"./useDelay\";\nexport * from \"./useDelayArray\";\nexport * from \"./useDelayValue\";\nexport * from \"./useDesktopQueueOpen\";\nexport * from \"./useIntersectionObserver\";\nexport * from \"./useIsEndlessPlayOn\";\nexport * from \"./useIsTabActive\";\nexport * from \"./useMemoAsync\";\nexport * from \"./useNativeMobileAppOpen\";\nexport * from \"./useOnRightClickContextMenu\";\nexport * from \"./usePageKey\";\nexport * from \"./usePageLoadState\";\nexport * from \"./usePlayRange\";\nexport * from \"./usePlayableProperties\";\nexport * from \"./useQueueCurrentLane\";\nexport * from \"./useQueueLanes\";\nexport * from \"./useQueueTrackParent\";\nexport * from \"./useQueueTrackPlayable\";\nexport * from \"./useRefUpdate\";\nexport * from \"./useReloadToken\";\nexport * from \"./useResizeObserver\";\nexport * from \"./useResources\";\nexport * from \"./useScrollPosition\";\nexport * from \"./useScrollRestoration\";\nexport * from \"./useScrollState\";\nexport * from \"./useScrollingText\";\nexport * from \"./useSecondsPlayed\";\nexport * from \"./useShowNativeMobileAppPrompt\";\nexport * from \"./useSortOptions\";\n","import { useSelector } from \"react-redux\";\nimport { useContextMenus } from \"components/app/hooks\";\nimport { RootModel } from \"models/app\";\n\nexport enum AppLayer {\n Page = \"Page\",\n ContextMenu = \"ContextMenu\",\n Modal = \"Modal\"\n}\n\nexport function useActiveAppLayer(): AppLayer {\n const isContextMenuOpen = useContextMenus().isOpen;\n const isModalOpen = useSelector((root: RootModel) => root.modal.open !== null);\n\n const active = isContextMenuOpen ? AppLayer.ContextMenu : isModalOpen ? AppLayer.Modal : AppLayer.Page;\n return active;\n}\n","import { useState, useEffect, useMemo } from \"preact/hooks\";\nimport { log } from \"services/logger/initLoggerService\";\n\nexport enum MediaSize {\n Mobile = \"mobile\",\n Tablet = \"tablet\",\n Desktop = \"desktop\"\n}\n\nexport const breakpointMobileTablet = 760; //old 600;\nexport const breakpointTabletDesktop = 1024;\n\nconst mobileQuery = `(max-width: ${breakpointMobileTablet}px)`;\nconst tabletQuery = `(min-width: ${breakpointMobileTablet}px) and (max-width: ${breakpointTabletDesktop}px)`;\nconst desktopQuery = `(min-width: ${breakpointTabletDesktop}px)`;\n\nexport const useAppMediaSize = (): MediaSize => {\n const mobile = useMemo(() => window.matchMedia(mobileQuery), []);\n const tablet = useMemo(() => window.matchMedia(tabletQuery), []);\n const desktop = useMemo(() => window.matchMedia(desktopQuery), []);\n\n const [size, setSize] = useState(getAppMediaSize());\n\n useEffect(() => {\n const onMobile = () => setSize(getAppMediaSize());\n const onTablet = () => setSize(getAppMediaSize());\n const onDesktop = () => setSize(getAppMediaSize());\n\n mobile.addEventListener(\"change\", onMobile, { passive: true });\n tablet.addEventListener(\"change\", onTablet, { passive: true });\n desktop.addEventListener(\"change\", onDesktop, { passive: true });\n\n return () => {\n mobile.removeEventListener(\"change\", onMobile);\n tablet.removeEventListener(\"change\", onTablet);\n desktop.removeEventListener(\"change\", onDesktop);\n };\n }, [mobile, tablet, desktop]);\n return size;\n};\n\nexport const getAppMediaSize = (): MediaSize => {\n const mobile = window.matchMedia(mobileQuery);\n const tablet = window.matchMedia(tabletQuery);\n const desktop = window.matchMedia(desktopQuery);\n\n const getSize = () => {\n if (mobile.matches) return MediaSize.Mobile;\n else if (tablet.matches) return MediaSize.Tablet;\n else if (desktop.matches) return MediaSize.Desktop;\n\n log.error({ code: \"web-210519-1219\", msg: \"no media match\" });\n return MediaSize.Mobile;\n };\n return getSize();\n};\n","import { useEffect, useMemo, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { useIsAppRunAsPWA } from \"./useAppRunAsPWA\";\nimport { useShowNativeMobileAppPrompt } from \"./useShowNativeMobileAppPrompt\";\nimport { BrowserCompatibility, getBrowserCompatibility } from \"services/compatibility/compatibilityService\";\nimport { RootModel } from \"models/app\";\nimport { showBrowserCompatibilityModal, showBrowserTooOldModal } from \"components/organisms/modal/modals/BrowserCompatibilityModal\";\nimport { showPwaInstallMessageModal } from \"components/organisms/modal/modals/PwaInstallMessageModal\";\n\nexport function useAppMessages() {\n let open = false;\n\n open = useBrowserCompatibilityMessage(open);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n open = usePWAInstallMessage(open);\n}\n\nfunction useBrowserCompatibilityMessage(skip: boolean) {\n const [show, setOpen] = useState(false);\n const nativeAppMobileAppPrompt = useShowNativeMobileAppPrompt();\n\n useEffect(() => {\n if (skip || nativeAppMobileAppPrompt) return;\n\n const compatibility = getBrowserCompatibility();\n switch (compatibility) {\n case BrowserCompatibility.Compatible:\n setOpen(false);\n return;\n case BrowserCompatibility.TooOld:\n setOpen(true);\n showBrowserTooOldModal().then(() => {\n setOpen(false);\n });\n return;\n case BrowserCompatibility.Unknown:\n setOpen(true);\n showBrowserCompatibilityModal().then(() => {\n setOpen(false);\n });\n return;\n }\n }, [skip, nativeAppMobileAppPrompt]);\n\n return show;\n}\n\nfunction usePWAInstallMessage(skip: boolean) {\n const waiting = useSelector((root: RootModel) => root.notifications.pwaInstallMessageWaiting);\n const isPWA = useIsAppRunAsPWA();\n const show = useMemo(() => waiting && isPWA, [waiting, isPWA]);\n\n useEffect(() => {\n if (skip) return;\n if (show) showPwaInstallMessageModal();\n }, [show, skip]);\n\n return show;\n}\n","import { useState, useEffect } from \"preact/hooks\";\nimport { isAppRunAsPWAChange } from \"services/pwa/initPWAService\";\n\nexport const useIsAppRunAsPWA = (): boolean => {\n \n const [value, setValue] = useState(false);\n \n useEffect(() => {\n return isAppRunAsPWAChange(value => setValue(value));\n }, []);\n\n return value;\n};\n","import { useResizeObserver } from \"./useResizeObserver\";\n\nexport const useAppResize = () => {\n const size = useResizeObserver(document.body);\n return size;\n};","import { useEffect, useState } from \"preact/hooks\";\nimport { isEqual } from \"services/arrayHelper\";\n\nexport function useArrayMemo<T>(fn: () => T[], dependencies: unknown[]): T[] {\n const [compare, setCompare] = useState<T[]>([]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n const array = fn();\n\n if (!isEqual(array, compare)) {\n setCompare(array);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dependencies]);\n\n return compare;\n}\n","import { useCurrentInputAudioItemFromState, getCurrentInputAudioItemFromState } from \"services/player/inputs/service/helpers\";\nimport type { PlayPausePositionModel } from \"models/app/player\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport interface PlayProperties {\n loaded: boolean;\n canPlay: boolean;\n canPause: boolean;\n playState: PlayState;\n duration: number;\n position: PlayPausePositionModel;\n}\n\nexport function useAudioProperties(): PlayProperties {\n const loaded = useCurrentInputAudioItemFromState();\n return getAudioProperties(loaded);\n}\n\nexport function getAudioPropertiesFromState(): PlayProperties {\n const loaded = getCurrentInputAudioItemFromState();\n return getAudioProperties(loaded);\n}\n\nexport function getCurrentAudioPlayState() {\n const loaded = getCurrentInputAudioItemFromState();\n return loaded?.playState ?? null;\n}\n\nfunction getAudioProperties(loaded: AudioInputItemModel | null): PlayProperties {\n const canPlay = loaded ? loaded.playState === PlayState.Stopped || loaded.playState === PlayState.Paused || loaded.playState === PlayState.Error : false;\n const duration = loaded?.input === AudioInputType.PlayQueue ? loaded.duration : 0;\n const position = loaded?.input === AudioInputType.PlayQueue ? loaded.position : { pausePosition: 0 };\n return loaded\n ? { ...loaded, duration, loaded: true, canPlay, canPause: !canPlay, position }\n : {\n loaded: false,\n canPlay: false,\n canPause: false,\n playState: PlayState.Stopped,\n duration: 0,\n position // todo: is this correct?\n };\n}\n","import { useMemo, useEffect, useState } from \"preact/hooks\";\nimport { useSectionContext, usePreviewContext } from \".\";\nimport { dispatch } from \"global\";\nimport { AUDIO_INPUT_SET_AND_PLAY } from \"global/actions\";\nimport { log } from \"services/logger\";\nimport { hasNavigated } from \"services/navigationStack/navigationStack\";\nimport { isPlayable } from \"services/playable\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { ContextResourceModel, PageContextModel } from \"models/app/resourceContextModel\";\nimport type { LocationContentType, PlayableModel } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\n\nexport interface AutoPlayProps {\n type: LocationContentType;\n resource: ContextResourceModel | null;\n loading?: boolean;\n error?: boolean;\n page: PageContextModel;\n}\n\nlet hasDoneAutoPlay = false;\n\nexport function useAutoPlay({ type, resource, loading, page, error }: AutoPlayProps) {\n const playable = useMemo(() => (resource && isPlayable(resource) ? resource : null), [resource]);\n\n const autoplay = useMemo(() => shouldAutoPlay(), []);\n const section = useSectionContext(type, playable, page, null, ResourceDisplayType.Deeplink);\n const preview = usePreviewContext(section.type, playable, section, null);\n\n useEffect(() => {\n if (loading || error || !playable || !autoplay) return;\n hasDoneAutoPlay = true;\n\n log.info({ code: \"web-220105-1330\", msg: \"autoplay from url\" });\n\n dispatch({ type: AUDIO_INPUT_SET_AND_PLAY, payload: { playable, playableContext: preview, context: { action: AudioContextAction.DeeplinkPlay, trace: null } } });\n }, [playable, loading, error, preview, autoplay]);\n}\n\ninterface AutoPlayFetchResourceProps {\n getFn: (() => Promise<PlayableModel | null>) | null;\n}\n\nexport function useGetAutoPlayResource({ getFn: fetchFn }: AutoPlayFetchResourceProps): ContextResourceModel | null {\n const [playable, setPlayable] = useState<PlayableModel | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n setPlayable(null);\n\n if (!shouldAutoPlay()) return;\n if (fetchFn == null) return;\n\n const run = async () => {\n const playable = await fetchFn();\n if (cancelled || !playable) return;\n setPlayable(playable);\n };\n run();\n return () => (cancelled = true);\n }, [fetchFn]);\n\n return playable;\n}\n\nfunction shouldAutoPlay() {\n if (hasDoneAutoPlay) return false;\n if (hasNavigated()) return false;\n\n const hash = location.hash.substring(1);\n if (hash !== \"afspil\") return false;\n\n return true;\n}\n","import { useState } from \"preact/hooks\";\nimport { isEqual } from \"services/arrayHelper\";\n\ninterface CallbackMap<T> {\n key: T;\n callback: () => void;\n}\n\ninterface State<T> {\n maps: CallbackMap<T>[];\n fn: (value: T) => void;\n values: T[];\n}\n\nexport function useCallbackMap<T>(values: T[], fn: (value: T) => void) {\n const [state, setState] = useState<State<T>>();\n\n const sameFn = state?.fn === fn;\n if (sameFn && state.values && isEqual(values, state.values)) return state.maps;\n\n const maps = values.map((value) => (sameFn && state.maps.find((callback) => callback.key === value)) || { key: value, callback: () => fn(value) });\n setState({ fn, values, maps });\n\n return maps;\n}\n","import { useState } from \"preact/hooks\";\n\nexport function useCoalesced<T>(data: T | null, enable = true): T | null {\n const [value, setValue] = useState(data);\n if (enable && data != value && data) {\n setValue(data);\n }\n return enable ? value : data;\n}\n","import { useEffect, useMemo, useState } from \"preact/hooks\";\nimport type { DomainQueryResult } from \"services/backend/backendService\";\nimport type { ConnectionHandler } from \"services/connection/connectionHandler\";\nimport { createConnectionHandler } from \"services/connection/connectionHandler\";\nimport type { ConnectionModel } from \"models/domain\";\nimport { ConnectionState } from \"models/domain\";\n\ninterface Props<T> {\n connection: ConnectionModel<T> | null;\n fetchFn?: ConnectionFetchFn<T>;\n max?: number;\n eagerLoadingCount: number;\n}\n\nexport type ConnectionFetchFn<T> = (first: number, after: string, index: number) => Promise<DomainQueryResult<ConnectionModel<T>>> | null;\n\nexport function useConnectionHandler<T>({ connection: connectionProp, fetchFn, max, eagerLoadingCount }: Props<T>) {\n const [connection1, setConnection1] = useState<ConnectionModel<T> | null>(null);\n const [connection2, setConnection2] = useState<ConnectionModel<T> | null>(null);\n const [connectionHandler, setConnectionHandler] = useState<ConnectionHandler<T> | null>(null);\n\n useEffect(() => {\n setConnection1(connectionProp);\n setConnection2(connectionProp);\n }, [connectionProp, fetchFn]);\n\n useEffect(() => {\n if (!connection1) {\n setConnectionHandler(null);\n return;\n }\n\n const handler = createConnectionHandler({ connection: connection1, fetchFn, max, eagerLoadingCount });\n handler.onChange = () => setConnection2({ ...handler.connection });\n setConnectionHandler(handler);\n\n return () => handler.dispose();\n }, [connection1, eagerLoadingCount, fetchFn, max]);\n\n const more = connectionHandler?.more ?? null;\n const modify = connectionHandler?.modify ?? null;\n const state = connectionHandler?.state ?? ConnectionState.Unknown;\n\n return useMemo(() => ({ more, modify, state, connection: connection2 }), [more, modify, state, connection2]);\n}\n","import { useEffect, useMemo, useState } from \"preact/hooks\";\nimport { useLocalization } from \"components/app/hooks\";\nimport { dispatch } from \"global\";\nimport { NAVIGATION_PAGECONTEXT_UPDATE } from \"global/actions\";\nimport { updateActivePageContext } from \"services/navigationStack/navigationStack\";\nimport { createLinkContexts } from \"services/resource\";\nimport type { ContextResourceModel, CreatePageContextParams, PageContextModel, PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport { createLinkContext, createPageContext, createPreviewContext, createSectionContext } from \"models/app/resourceContextModel\";\nimport type { PageLoadError } from \"models/app/ViewPageError\";\nimport type { LocationContentType, ResourceDisplayType, ResourceModel } from \"models/domain\";\nimport type { PreviewDisplayType } from \"components/molecules/preview\";\n\nfunction updatePageSectionsVisualRank(page: PageContextModel) {\n page.sections.sort((a, b) => (a.rank ?? Number.MAX_SAFE_INTEGER) - (b.rank ?? Number.MAX_SAFE_INTEGER));\n page.sections.forEach((section) => (section.visibleRank = null));\n\n const visible = page.sections.filter((section) => !section.isHidden);\n visible.forEach((section, i) => (section.visibleRank = i));\n\n updateActivePageContext(page);\n}\n\nfunction addSectionToPage(page: PageContextModel, section: SectionContextModel) {\n page.sections.push(section);\n\n updatePageSectionsVisualRank(page);\n}\n\nfunction removeSectionFromPage(page: PageContextModel, section: SectionContextModel) {\n page.sections = page.sections.filter((value) => value != section);\n updatePageSectionsVisualRank(page);\n}\n\nfunction updateSectionIsHidden(section: SectionContextModel, isHidden: boolean) {\n section.isHidden = isHidden;\n section.page && updatePageSectionsVisualRank(section.page);\n}\n\nexport const usePageContext = ({ type, pageType, resource: page, root, done, extraInfo }: CreatePageContextParams) => {\n const pageContext = useFakePageContext({ type, pageType, resource: page, root, done, extraInfo });\n const local = useLocalization();\n useEffect(() => {\n dispatch({ type: NAVIGATION_PAGECONTEXT_UPDATE, payload: { context: pageContext, done } });\n }, [pageContext, done, local]);\n\n return pageContext;\n};\n\nexport const useFakePageContext = ({ type, pageType, resource: page, root, done, extraInfo }: CreatePageContextParams) => {\n return useMemo(() => createPageContext({ type, pageType, resource: page, root, done, extraInfo }), [type, page, pageType, root, done, extraInfo]);\n};\n\ninterface UseErrorPageContextProps {\n page: PageContextModel | null;\n error: PageLoadError;\n}\n\nexport function useErrorPageContext({ page, error }: UseErrorPageContextProps) {\n const [done, setDone] = useState(false);\n\n useEffect(() => {\n if (!page || done) return;\n setDone(true);\n dispatch({ type: NAVIGATION_PAGECONTEXT_UPDATE, payload: { context: page, done: true, error } });\n }, [page, error, done]);\n}\n\nexport const useSectionContext = (\n type: LocationContentType,\n context: ContextResourceModel | null,\n page: PageContextModel | null,\n rank: number | null,\n displayType: ResourceDisplayType | null,\n alternateScrollId?: string\n) => {\n const section = useMemo(() => createSectionContext(type, context, page, rank, displayType, alternateScrollId), [type, context, page, rank, displayType, alternateScrollId]);\n\n useEffect(() => {\n if (!page) return;\n addSectionToPage(page, section);\n return () => removeSectionFromPage(page, section);\n }, [page, section]);\n\n return section;\n};\n\nexport const useSectionContextFromPage = (page: PageContextModel, displayType: ResourceDisplayType | null) => {\n const section = useSectionContext(page.type, page.resource, page, 0, displayType);\n return section;\n};\n\nexport const useSectionIsHidden = (section: SectionContextModel, isHidden: boolean) => {\n useEffect(() => {\n updateSectionIsHidden(section, isHidden);\n }, [section, isHidden]);\n};\n\nexport const usePreviewContext = (type: LocationContentType, context: ContextResourceModel | null, section: SectionContextModel, rank: number | null) => {\n const local = useLocalization();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => createPreviewContext(type, context, section, rank), [type, context, section, rank, local]);\n};\n\nexport const useLinkContextFromPreview = (preview: PreviewContextModel) => {\n const local = useLocalization();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => createLinkContext(preview.type, preview.resource, preview), [preview, local]);\n};\n\nexport const useLinkContext = (type: LocationContentType, context: ResourceModel | null, preview: PreviewContextModel) => {\n const local = useLocalization();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => createLinkContext(type, context, preview), [type, context, preview, local]);\n};\n\nexport const useOptionalLinkContext = (type: LocationContentType | null, context: ResourceModel | null, preview: PreviewContextModel) => {\n const local = useLocalization();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => (!type ? null : createLinkContext(type, context, preview)), [type, context, preview, local]);\n};\n\nexport const useLinkAndPreviewContext = (type: LocationContentType, context: ContextResourceModel | null, section: SectionContextModel, rank: number | null) => {\n const preview = usePreviewContext(type, context, section, rank);\n const link = useLinkContext(type, context, preview);\n\n return link;\n};\n\nexport const useLinkContextsFromPreview = (preview: PreviewContextModel, displayType?: PreviewDisplayType) => {\n const local = useLocalization();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => createLinkContexts(preview.type, preview.resource, preview, displayType), [preview, displayType, local]);\n};\n","import type { h } from \"preact\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { openMenuAtPosition, openMenuByElement, openMenuByMouse } from \"services/contextMenus/open\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { ContextMenuSheetWidth } from \"models/view/contextMenu\";\n\nexport function useContextMenu(menu: h.JSX.Element | null, closeOnNavigation = true, width: ContextMenuSheetWidth = ContextMenuSheetWidth.Default, context?: PreviewContextModel) {\n const [isOpen, setIsOpen] = useState(false);\n\n const openByElement = useCallback(\n async (element: HTMLElement) => {\n if (!menu) return;\n setIsOpen(true);\n const result = await openMenuByElement(menu, element, closeOnNavigation, width, context);\n setIsOpen(false);\n return result;\n },\n [menu, closeOnNavigation, width, context]\n );\n\n const openByMouse = useCallback(\n async (event: MouseEvent) => {\n if (!menu) return;\n setIsOpen(true);\n const result = await openMenuByMouse(menu, event, closeOnNavigation, width, context);\n setIsOpen(false);\n return result;\n },\n [menu, closeOnNavigation, width, context]\n );\n\n const openAtPosition = useCallback(\n async (x: number, y: number) => {\n if (!menu) return;\n setIsOpen(true);\n const result = await openMenuAtPosition(menu, x, y, closeOnNavigation, width, context);\n setIsOpen(false);\n return result;\n },\n [menu, closeOnNavigation, width, context]\n );\n\n\n return { open: openByElement, openByMouse, openAtPosition, isOpen };\n}\n","import { useSelector } from \"react-redux\";\nimport type { RootModel } from \"models/app\";\n\nexport const useCurrentLiveRadioFromState = () => {\n const liveRadio = useSelector((root: RootModel) => root.liveRadio.currentRadio);\n return liveRadio;\n};\n","import { Delay, useDelayValue } from \"./useDelayValue\";\n\ninterface DelayProps {\n delay: Delay;\n reset?: unknown;\n}\n\nexport const useDelay = ({ delay, reset }: DelayProps) => {\n return useDelayValue({ delay, value: true, initialValue: false, reset });\n};\n","import { useState, useMemo, useEffect } from \"preact/hooks\";\nimport { DelayType, Delay } from \"./useDelayValue\";\n\ninterface ArrayDelayProps<T> {\n delay: Delay;\n current: T[];\n}\n\ninterface DelayEntry<T> {\n value: T;\n removeTime: number | null;\n}\n\nexport const useArrayDelay = <T>({ delay, current }: ArrayDelayProps<T>): T[] => {\n const msec = (delay.type === DelayType.TimeOut && delay.msec) || 0;\n const [entries, setEntries] = useState<DelayEntry<T>[]>([]);\n const values = useMemo(() => entries.map((entry) => entry.value), [entries]);\n\n useEffect(() => {\n const run = () => {\n const now = new Date().getTime();\n let newEntries = [...entries];\n\n newEntries.forEach((entry) => {\n if (current.indexOf(entry.value) === -1 && entry.removeTime == null) {\n entry.removeTime = now + msec;\n }\n });\n\n current.forEach((value) => {\n let entry = (newEntries.find((entry) => entry.value === value) ?? null) as DelayEntry<T> | null;\n if (entry) {\n entry.removeTime = null;\n } else {\n entry = { value, removeTime: null };\n newEntries = [...newEntries, entry];\n }\n });\n\n newEntries = newEntries.filter((entry) => entry.removeTime == null || entry.removeTime > now);\n\n const next = (newEntries.filter((entry) => entry.removeTime != null).sort((a, b) => (a.removeTime as number) - (b.removeTime as number))[0]?.removeTime ?? null) as\n | number\n | null;\n if (next != null) {\n if (delay.type === DelayType.AnimationFrame) {\n const frameId = requestAnimationFrame(run);\n return () => cancelAnimationFrame(frameId);\n } else if (delay.type === DelayType.TimeOut) {\n const timeoutId = setTimeout(run, next - now);\n return () => clearTimeout(timeoutId);\n }\n }\n setEntries(newEntries);\n };\n return run();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [current, delay.type, msec]);\n return values;\n};\n","import { useLayoutEffect, useState, useCallback } from \"preact/hooks\";\n\nexport enum DelayType {\n None,\n AnimationFrame,\n TimeOut\n}\n\nexport type Delay = { type: DelayType.None } | { type: DelayType.AnimationFrame } | { type: DelayType.TimeOut; msec: number };\n\ninterface ValueDelayProps<T> {\n delay: Delay;\n value: T;\n initialValue?: T;\n reset?: unknown;\n}\n\nexport const useDelayValue = <T>({ delay, value, initialValue = value, reset }: ValueDelayProps<T>) => {\n const [delayed, setDelayed] = useState(delay.type === DelayType.None ? value : initialValue);\n\n const msec = delay.type === DelayType.TimeOut ? delay.msec : 0;\n const timeOut = useCallback(() => {\n if (delay.type === DelayType.None) {\n setDelayed(value);\n } else {\n if (delay.type === DelayType.AnimationFrame) {\n const frameId = requestAnimationFrame(() => setDelayed(value));\n return () => cancelAnimationFrame(frameId);\n }\n if (delay.type === DelayType.TimeOut) {\n const timeoutId = window.setTimeout(() => setDelayed(value), msec);\n return () => clearTimeout(timeoutId);\n }\n }\n }, [delay.type, msec, value]);\n\n useLayoutEffect(() => {\n const clear = timeOut();\n return () => clear && clear();\n }, [timeOut]);\n\n useLayoutEffect(() => {\n if (delay.type === DelayType.None) return;\n if (value === initialValue) return;\n setDelayed(initialValue);\n const clear = timeOut();\n return () => clear && clear();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reset, timeOut, delay.type, initialValue]);\n\n return delayed;\n};\n","import { useSelector } from \"react-redux\";\nimport { Feature, isFeatureEnabled } from \"global/config\";\nimport type { RootModel } from \"models/app\";\n\nexport function useDesktopLyricsOpen(): boolean {\n const desktopLyricsOpen = useSelector((root: RootModel) => root.ui.layout.lyricsOpen);\n return !!desktopLyricsOpen && isFeatureEnabled(Feature.Lyrics);\n}\n\n","import { useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { useAppMediaSize, MediaSize, getAppMediaSize } from \".\";\nimport { getQueueProperties, useQueueProperties } from \"./useQueueProperties\";\nimport { store } from \"global\";\nimport type { RootModel } from \"models/app\";\nimport { DesktopQueueOpen } from \"models/app\";\nimport { QueueMode } from \"models/app/player/input\";\n\nexport function useDesktopQueueOpen(): boolean {\n const { hasItems } = useQueueProperties();\n const media = useAppMediaSize();\n const desktopQueueOpen = useSelector((root: RootModel) => root.ui.layout.desktopQueueOpen);\n const isQueueModeMixRadio = useSelector((root: RootModel) => root.queue.mode) === QueueMode.MixRadio;\n\n return useMemo(() => isDesktopQueueOpen(hasItems, media, desktopQueueOpen, isQueueModeMixRadio), [desktopQueueOpen, media, hasItems, isQueueModeMixRadio]);\n}\n\nexport function getDesktopQueueOpen(): boolean {\n const { hasItems } = getQueueProperties();\n const media = getAppMediaSize();\n const { ui, queue } = store.getState();\n const isQueueModeMixRadio = queue.mode === QueueMode.MixRadio;\n\n return isDesktopQueueOpen(hasItems, media, ui.layout.desktopQueueOpen, isQueueModeMixRadio);\n}\n\nfunction isDesktopQueueOpen(hasItems: boolean, media: MediaSize, desktopQueueOpen: DesktopQueueOpen, isQueueModeMixRadio: boolean): boolean {\n if (isQueueModeMixRadio) return false;\n if (desktopQueueOpen === DesktopQueueOpen.Open) return true;\n if (desktopQueueOpen === DesktopQueueOpen.Default && hasItems && media === MediaSize.Desktop) return true;\n return false;\n}\n","import { useLayoutEffect } from \"preact/hooks\";\n\ninterface Props {\n callback: (value: IntersectionObserverEntry) => void;\n scroll: HTMLElement | null;\n target: HTMLElement | null;\n margin: number;\n}\n\nexport function useIntersectionObserver({ scroll, target, callback, margin }: Props) {\n useLayoutEffect(() => {\n if (!scroll) return;\n if (!target) return;\n\n const options: IntersectionObserverInit = {\n root: scroll,\n rootMargin: `${margin}%`,\n threshold: 0\n };\n const callbackFn: IntersectionObserverCallback = (entries: IntersectionObserverEntry[]) => {\n entries.forEach((entry) => {\n callback(entry);\n });\n };\n const observer = new IntersectionObserver(callbackFn, options);\n observer.observe(target);\n\n return () => observer.disconnect();\n }, [scroll, target, callback, margin]);\n}\n","import { useSelector } from \"react-redux\";\nimport { useArrayMemo } from \"./useArrayMemo\";\nimport { store } from \"global\";\nimport type { RootModel } from \"models/app\";\nimport { RepeatStatus } from \"models/view\";\n\nexport const useIsEndlessPlayOnFromState = () => {\n const repeat = useSelector((root: RootModel) => root.player.repeat);\n const isEndlessPlayOn = useSelector((root: RootModel) => root.queue.isEndlessPlayOn);\n return getIsEndlessPlayOn(isEndlessPlayOn, repeat);\n};\nexport const useEndlessPlayFromState = () => {\n const endlessPlayFromState = useSelector((root: RootModel) => root.queue.endlessPlay);\n const isEndlessPlayOn = useIsEndlessPlayOnFromState();\n const endlessPlay = useArrayMemo(() => (!isEndlessPlayOn ? endlessPlayFromState?.slice(0, 5) : endlessPlayFromState), [isEndlessPlayOn, endlessPlayFromState]);\n const isEndlessPlayEmpty = endlessPlay.length === 0;\n return {\n isEndlessPlayEmpty,\n endlessPlay\n };\n};\nexport const getIsEndlessPlayOnFromState = () => {\n const { player, queue } = store.getState();\n const repeat = player.repeat;\n const isEndlessPlayOn = queue.isEndlessPlayOn;\n return getIsEndlessPlayOn(isEndlessPlayOn, repeat);\n};\nexport const getIsEndlessPlayOn = (isEndlessPlayOn: boolean, repeat: RepeatStatus) => {\n return isEndlessPlayOn && repeat === RepeatStatus.None;\n};\n","import { useEffect, useState } from \"preact/hooks\";\n\nexport const useTabIsActive = () => {\n const [isTabActive, setIsTabActive] = useState<boolean>(document.visibilityState === \"visible\");\n\n const onVisibilityChange = () => {\n setIsTabActive(document.visibilityState === \"visible\");\n };\n\n useEffect(() => {\n window.addEventListener(\"visibilitychange\", onVisibilityChange, { passive: true });\n\n return () => {\n window.removeEventListener(\"visibilitychange\", onVisibilityChange);\n };\n }, []);\n return isTabActive;\n};\n","import { useEffect, useState } from \"preact/hooks\";\n\nexport enum BreakPoint {\n MobileTablet = 760,\n TabletDesktop = 1024\n}\ninterface Props {\n minWidth?: BreakPoint | number;\n maxWidth: BreakPoint | number;\n}\ninterface Props2 {\n minWidth: BreakPoint | number;\n maxWidth?: BreakPoint | number;\n}\nexport const useMatchMedia = ({ minWidth, maxWidth }: Props | Props2): boolean => {\n let matchMedia: string;\n if (minWidth && maxWidth) {\n matchMedia = `(min-width: ${minWidth}px) and (max-width: ${maxWidth}px)`;\n } else if (minWidth) {\n matchMedia = `(min-width: ${minWidth}px)`;\n } else if (maxWidth) {\n matchMedia = `(max-width: ${maxWidth}px)`;\n } else throw Error(\"you need to select a minimum or a maximum screen width\");\n const [media] = useState(window.matchMedia(matchMedia));\n\n const [size, setSize] = useState(media.matches);\n\n useEffect(() => {\n const onMediaChange = (ev: MediaQueryListEvent) => setSize(ev.matches);\n media.addEventListener(\"change\", onMediaChange, { passive: true });\n\n return () => {\n media.removeEventListener(\"change\", onMediaChange);\n };\n }, [media]);\n return size;\n};\n","import { StateUpdater, useEffect, useState } from \"preact/hooks\";\nimport { isEqual } from \"services/arrayHelper\";\n\n\nexport function useMemoAsync<T>(factory: () => Promise<T> | null, deps: unknown[] = [], refreshDeps: unknown[]|null = null) {\n /*\n const [refresh, setRefreshDeps] = useState<unknown[] | null>(refreshDeps);\n const [value, setValue] = useState<T | null>(null);\n\n useEffect(() => {\n if(refresh === null || refreshDeps === null || !isEqual(refresh, refreshDeps)) {\n setRefreshDeps(refreshDeps);\n setValue(null);\n }\n factory()?.then(setValue);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n */\n const [value] = useMemoAsync2(factory, deps, refreshDeps);\n return value;\n}\n\n\nexport function useMemoAsync2<T>(factory: () => Promise<T> | null, deps: unknown[] = [], refreshDeps: unknown[]|null = null): [T|null, StateUpdater<T|null>] {\n const [refresh, setRefreshDeps] = useState<unknown[] | null>(refreshDeps);\n const [value, setValue] = useState<T | null>(null);\n\n useEffect(() => {\n if(refresh === null || refreshDeps === null || !isEqual(refresh, refreshDeps)) {\n setRefreshDeps(refreshDeps);\n setValue(null);\n }\n factory()?.then(setValue);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n return [value, setValue];\n}\n","import { useEffect } from \"preact/hooks\";\nimport { useShowNativeMobileAppPrompt } from \"./useShowNativeMobileAppPrompt\";\nimport { WebAppBrand } from \"shared/models\";\nimport { environment } from \"services/environment\";\nimport { log } from \"services/logger\";\nimport { formatUrlFromUTF8 } from \"services/navigation\";\n\nexport function useNativeMobileAppOpen() {\n const show = useShowNativeMobileAppPrompt();\n\n useEffect(() => {\n if (!show) return;\n try {\n const url = getNativeMobileAppUrl();\n log.info({ code: \"web-220405-1636\", msg: \"redirecting to native protocol...\", data: { url } });\n document.location.replace(url);\n } catch (e) {\n log.info({ code: \"web-220405-1636\", msg: \"could not redirect\", error: e });\n }\n }, [show]);\n}\n\nfunction getNativeMobileAppUrl(): string {\n let hash = window.location.hash;\n if (hash == \"#\") hash = \"\";\n\n let search = window.location.search;\n if (search == \"?\") search = \"\";\n\n let url = window.location.pathname + search + hash;\n\n url = formatUrlFromUTF8(url);\n // url = convertToXamarinLink(url);\n\n if (url.indexOf(\"/\") === 0) url = url.slice(1);\n url = getNativeMobileAppProtocol() + url;\n\n return url;\n}\n\nfunction getNativeMobileAppProtocol(): string {\n switch (environment.webAppBrand) {\n case WebAppBrand.Telmore:\n return \"telmoremusik://\";\n case WebAppBrand.YouSee:\n return \"youseemusic://\";\n }\n}\n\n// function convertToXamarinLink(value: string): string {\n// const startsWith = (search: string) => value.indexOf(search) === 0;\n\n// if (startsWith(\"/album/\")) return value.replace(\"/album/\", \"/alb/\");\n// if (startsWith(\"/anbefaling/\")) return value.replace(\"/anbefaling/\", \"/rc/\");\n// if (startsWith(\"/historik/\")) return value.replace(\"/historik/\", \"/hi/\");\n// if (startsWith(\"/kunstner/\")) return value.replace(\"/kunstner/\", \"/art/\");\n// if (startsWith(\"/live-radio/\")) return value.replace(\"/live-radio/\", \"/lrad/\");\n// if (startsWith(\"/more-music-kategori/\")) return value.replace(\"/more-music-kategori/\", \"/mix/cat/\");\n// if (startsWith(\"/more-music/\")) return value.replace(\"/more-music/\", \"/mix/\");\n// if (startsWith(\"/playliste-kategori/\")) return value.replace(\"/playliste-kategori/\", \"/pl/cat/\");\n// if (startsWith(\"/playliste/\")) return value.replace(\"/playliste/\", \"/pl/\");\n// if (startsWith(\"/sang/\")) return value.replace(\"/sang/\", \"/tr/\");\n\n// return value;\n// }\n","import { useCallback } from \"preact/hooks\";\nimport { getHasContextMenu, getResourceAvailableInSubscription, getResourceEditable } from \"services/resource\";\nimport type { Multiselect } from \"services/selection\";\nimport type { PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport { useContextMenu } from \"components/shared/hooks\";\nimport { ResourceContextMenu } from \"components/organisms/contextMenu/menus\";\n\nexport function useOnRightClickContextMenu(context: PreviewContextModel, resource: ResourcePreviewModel | null, sectionContext: SectionContextModel, moreButtonIsOpen?: boolean, multiselect?: Multiselect) {\n const hasContextMenu = getHasContextMenu(context.type, context.resource);\n const menuRightClick = useContextMenu(hasContextMenu && resource ? ResourceContextMenu({ resource, context, resourceType: resource.contentType, multiselect }) : null);\n\n const moreOpen = moreButtonIsOpen || menuRightClick.isOpen;\n const available = getResourceAvailableInSubscription(resource);\n const editable = getResourceEditable(sectionContext.page?.resource ?? null);\n const disableContextMenu = !available && !editable;\n const enableOnContextMenu = hasContextMenu && !disableContextMenu;\n\n const rightClick = useCallback((ev: MouseEvent) => menuRightClick.openByMouse(ev), [menuRightClick]);\n return { hasContextMenu, disableContextMenu, editable, available, moreOpen, onContextMenu: enableOnContextMenu ? rightClick : undefined };\n}\n","import { useEffect, useState } from \"preact/hooks\";\n\nexport function useOnline(onChange?: (online: boolean) => void) {\n const [online, setOnline] = useState(true);\n\n useEffect(() => {\n setOnline(window.navigator.onLine);\n\n const setTrue = () => {\n setOnline(true);\n onChange && onChange(true);\n };\n\n const setFalse = () => {\n setOnline(false);\n onChange && onChange(false);\n };\n\n window.addEventListener(\"online\", setTrue, { passive: true });\n window.addEventListener(\"offline\", setFalse, { passive: true });\n\n return () => {\n window.removeEventListener(\"online\", setTrue);\n window.removeEventListener(\"offline\", setFalse);\n };\n }, [onChange]);\n return online;\n}\n","import type { Ref } from \"preact/hooks\";\nimport { useCallback, useEffect } from \"preact/hooks\";\nimport { PAGE_CLICK } from \"global/actions\";\nimport { useMessageBus } from \"global/hooks\";\n\nexport function usePageClick(callbackFn: () => void, ref: Ref<HTMLDivElement | null>) {\n const click = useCallback(\n (ev: Event) => {\n if (ref?.current == null) return;\n if (ref.current.contains(ev.target as Node)) return;\n callbackFn();\n },\n [ref, callbackFn]\n );\n\n useEffect(() => {\n window.addEventListener(\"click\", click, { passive: true });\n return () => window.removeEventListener(\"click\", click);\n }, [click]);\n\n useMessageBus(PAGE_CLICK, (message) => click(message.payload.ev));\n}\n","import { useEffect } from \"preact/hooks\";\n\nexport enum KeyboardKeyName {\n Escape = \"Escape\"\n}\n\nexport function usePageKey(callbackFn: (ev: KeyboardEvent) => void) {\n useEffect(() => {\n window.addEventListener(\"keydown\", callbackFn);\n return () => window.removeEventListener(\"keydown\", callbackFn);\n }, [callbackFn]);\n}\n","import { h } from \"preact\";\nimport { useCallback, useEffect, useMemo, useState } from \"preact/hooks\";\nimport { animations } from \"global/constants\";\nimport type { UseDomainQueryResult } from \"services/backend/backendService\";\nimport type { PageContextModel } from \"models/app/resourceContextModel\";\nimport type { PageLoadError } from \"models/app/ViewPageError\";\nimport { PageLoadSpinner } from \"components/atoms/spinner\";\nimport { ErrorPage } from \"components/pages/errorPages/ErrorPage\";\n\nexport function usePageLoadState<DomainModel>(page: PageContextModel | null, query: UseDomainQueryResult<DomainModel> | null) {\n const error = useErrorPage(page, query);\n const spinner = usePageLoadSpinner(query);\n const showContent = useShowContent(query);\n\n return { error, spinner, showContent };\n}\n\nfunction useShowContent(query: UseDomainQueryResult<unknown> | null): boolean {\n const { error, loading, refetching, model, coalesced } = query ?? { error: null, errorReason: null, loading: true, refetching: false, model: null };\n return useMemo(() => model != null && !error && (coalesced || (!loading && !refetching)), [model, loading, error, refetching, coalesced]);\n}\n\nfunction useErrorPage<DomainModel>(page: PageContextModel | null, query: UseDomainQueryResult<DomainModel> | null) {\n const { error, loading, refetching, refetch } = query ?? { error: null, errorReason: null, loading: true, refetching: false, refetch: null };\n const show = error != null && !loading && !refetching;\n\n const pageLoadError = useMemo<PageLoadError | null>(() => {\n if (!error) return null;\n return {\n type: error,\n message: query?.errorReason ?? null\n };\n }, [error, query]);\n\n const refetchFn = useCallback(() => {\n refetch && refetch(true);\n }, [refetch]);\n\n // const errorPage = useMemo(() => (show && pageLoadError ? ErrorPage({ page, error: pageLoadError, refetch: refetchFn }) : null), [show, page, pageLoadError, refetchFn]);\n return show && pageLoadError ? <ErrorPage page={page} error={pageLoadError} refetch={refetchFn} /> : null;\n}\n\nfunction usePageLoadSpinner<DomainModel>(query: UseDomainQueryResult<DomainModel> | null) {\n const [visible, setVisible] = useState(false);\n const { loading, refetching, coalesced } = query ?? { loading: true, refetching: false, coalesced: false };\n\n useEffect(() => {\n if (refetching && !coalesced) {\n setVisible(true);\n return;\n }\n if (!loading || coalesced) {\n setVisible(false);\n return;\n }\n const timeoutId = window.setTimeout(() => setVisible(true), animations.spinnerPageLoad);\n return () => clearTimeout(timeoutId);\n }, [loading, refetching, coalesced]);\n\n return visible ? PageLoadSpinner() : null;\n}\n","import type { RefObject } from \"preact\";\nimport { useMemo } from \"preact/hooks\";\nimport { useRefUpdate } from \".\";\nimport type { ConnectionFetchFn } from \"./useConnectionHandler\";\nimport { useConnectionHandler } from \"./useConnectionHandler\";\nimport { pagination } from \"global/constants/pagination\";\nimport { isPlayableContentType } from \"services/playable\";\nimport type { ConnectionModel, ConnectionState, ResourceModel } from \"models/domain\";\n\ninterface Props<T> {\n resource: ResourceModel | null;\n connection: ConnectionModel<T> | null;\n fetchFn?: ConnectionFetchFn<T>;\n max?: number;\n}\n\nexport interface Pagination<T> {\n state: ConnectionState;\n connection: ConnectionModel<T> | null;\n scrollRef: RefObject<HTMLElement>;\n scroll: HTMLElement | null;\n max?: number;\n more: ((value?: number) => void) | null;\n modify: ((convert: (item: T[]) => T[]) => void) | null;\n}\n\nexport function usePagination<T>({ resource, connection: connctionProp, fetchFn, max }: Props<T>): Pagination<T> {\n const paginationOn = pagination.paginationOn;\n const isTrack = resource != null && isPlayableContentType(resource.contentType);\n const eagerLoadingCount = useMemo(() => (paginationOn && isTrack ? pagination.eagerLoadingTrackCount : 0), [paginationOn, isTrack]);\n\n const { connection, state, more, modify } = useConnectionHandler({ connection: connctionProp, fetchFn, max, eagerLoadingCount });\n\n const scrollRef = useRefUpdate<HTMLElement>();\n const scroll = scrollRef.current ?? null;\n\n return useMemo(() => ({ state, connection, scrollRef, scroll, max, more, modify }), [state, connection, scrollRef, scroll, max, more, modify]);\n}\n","import { useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { RootModel } from \"models/app\";\nimport { AudioInputType } from \"models/app/player\";\n\nexport const usePlayRange = () => {\n const input = useSelector((root: RootModel) => root.player.input);\n return useMemo(() => {\n switch (input) {\n case AudioInputType.LiveRadio: {\n return false;\n }\n case AudioInputType.PlayQueue:\n return true;\n }\n }, [input]);\n};\n","import { useSelector } from \"react-redux\";\nimport { getAudioPropertiesFromState, useAudioProperties } from \"./useAudioProperties\";\nimport { useCurrentLiveRadioFromState } from \"./useCurrentLiveRadio\";\nimport { useQueueCurrentLaneFromState, useQueueCurrentLaneParent } from \"./useQueueCurrentLane\";\nimport { store } from \"global\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { getCurrentLiveRadioFromState } from \"services/player/inputs/inputs/liveRadio/service\";\nimport { getCurrentLaneFromState, getCurrentLaneTrackParentFromState } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport { isResourceEqual } from \"services/resource\";\nimport type { RootModel } from \"models/app\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport type { LiveRadioModel, PlayableModel, TrackParentModel, ResourceModel } from \"models/domain\";\nimport type { LiveRadioPlayableModel } from \"models/domain/LiveRadioPlayableModel\";\nimport { ContentType } from \"models/ModelType\";\n\nexport const usePlayablePropertiesFromState = (playable: PlayableModel) => {\n const input = useSelector((root: RootModel) => root.player.input);\n const liveRadio = useCurrentLiveRadioFromState();\n const currentLane = useQueueCurrentLaneFromState();\n const currentLaneParent = useQueueCurrentLaneParent(currentLane);\n const playState = useAudioProperties().playState;\n return getPlayableProperties(playable, input, liveRadio, playState, currentLane, currentLaneParent);\n};\n\nexport function getPlayablePropertiesFromState(playable: PlayableModel) {\n const input = store.getState().player.input;\n const liveRadio = getCurrentLiveRadioFromState();\n const currentLane = getCurrentLaneFromState();\n const currentLaneParent = getCurrentLaneTrackParentFromState();\n const playState = getAudioPropertiesFromState().playState;\n return getPlayableProperties(playable, input, liveRadio, playState, currentLane, currentLaneParent);\n}\n\nfunction getPlayableProperties(\n playable: PlayableModel,\n input: AudioInputType,\n liveRadio: LiveRadioPlayableModel | null,\n playState: PlayState,\n currentLane: QueueTrackModel | null,\n currentLaneParent: TrackParentModel | null\n) {\n if (playable.contentType === ContentType.LiveRadio) {\n return getLiveRadioProperties(playable, liveRadio?.liveRadio ?? null, playState, input);\n }\n if (playable.contentType === ContentType.LiveRadioPlayable) {\n return getLiveRadioPlayableProperties(playable, liveRadio, playState, input);\n }\n return getPlayQueuePlayableProperties(playable, currentLane, currentLaneParent, playState, input);\n}\n\nfunction getPlayQueuePlayableProperties(\n playable: PlayableModel,\n currentLane: QueueTrackModel | null,\n currentLaneParent: TrackParentModel | null,\n playState: PlayState,\n input: AudioInputType\n) {\n let isLoaded: boolean;\n\n const isInputePlayQueue = input === AudioInputType.PlayQueue;\n if (!isInputePlayQueue) return { isLoaded: false, isPlayingOrBuffering: false, isPlaying: false };\n\n if (playable.contentType === ContentType.TrackPlayable) {\n const isLoadedTrack = currentLane != null && isResourceEqual(playable.track, currentLane.track);\n const isLoadedContext = currentLaneParent != null && isResourceSimilar(playable.parent, currentLaneParent);\n isLoaded = isLoadedTrack && isLoadedContext;\n } else {\n const isLoadedContext = currentLaneParent != null && isResourceSimilar(playable, currentLaneParent);\n isLoaded = isLoadedContext;\n }\n\n const isPlayingOrBuffering = isLoaded && (playState === PlayState.Buffering || playState === PlayState.Playing);\n const isPlaying = isLoaded && playState === PlayState.Playing;\n return { isLoaded, isPlayingOrBuffering, isPlaying };\n}\n\nfunction isArtistSimilar(resource1: ResourceModel, resource2: ResourceModel) {\n const isArtist = (parent: ResourceModel) => parent.contentType === ContentType.Artist || parent.contentType === ContentType.ArtistTracks;\n if (isArtist(resource1) && isArtist(resource2) && resource1.id === resource2.id) return true;\n\n return false;\n}\n\nfunction isResourceSimilar(resource1: ResourceModel, resource2: ResourceModel) {\n if (resource1.contentType === ContentType.Notification && resource1.playable && isResourceEqual(resource1.playable, resource2)) return true;\n if (resource2.contentType === ContentType.Notification && resource2.playable && isResourceEqual(resource2.playable, resource1)) return true;\n if (isResourceEqual(resource1, resource2)) return true;\n if (isArtistSimilar(resource1, resource2)) return true;\n return false;\n}\n\nfunction getLiveRadioPlayableProperties(playable: PlayableModel, liveRadio: LiveRadioPlayableModel | null, playState: PlayState, input: AudioInputType) {\n if (playable.contentType !== ContentType.LiveRadioPlayable) {\n log.error({ code: \"web-210929-1507\", msg: DefaultLogMessage.UnexpectedValue });\n return { isLoaded: false, isPlayingOrBuffering: false, isPlaying: false };\n }\n\n if (input !== AudioInputType.LiveRadio) return { isLoaded: false, isPlayingOrBuffering: false, isPlaying: false };\n\n const isLoaded = liveRadio != null && isResourceEqual(playable, liveRadio);\n const isPlayingOrBuffering = isLoaded && (playState === PlayState.Buffering || playState === PlayState.Playing);\n const isPlaying = isLoaded && playState === PlayState.Playing;\n\n return { isLoaded, isPlayingOrBuffering, isPlaying };\n}\nfunction getLiveRadioProperties(playable: PlayableModel, radio: LiveRadioModel | null, playState: PlayState, input: AudioInputType) {\n if (playable.contentType !== ContentType.LiveRadio) {\n log.error({ code: \"web-220302-1507\", msg: DefaultLogMessage.UnexpectedValue });\n return { isLoaded: false, isPlayingOrBuffering: false, isPlaying: false };\n }\n\n if (input !== AudioInputType.LiveRadio) return { isLoaded: false, isPlayingOrBuffering: false, isPlaying: false };\n\n const isLoaded = radio != null && isResourceEqual(playable, radio);\n const isPlayingOrBuffering = isLoaded && (playState === PlayState.Buffering || playState === PlayState.Playing);\n const isPlaying = isLoaded && playState === PlayState.Playing;\n\n return { isLoaded, isPlayingOrBuffering, isPlaying };\n}\n","import { useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { useCurrentLiveRadioFromState } from \"./useCurrentLiveRadio\";\nimport { useQueueTrackPlayableFromState } from \"./useQueueTrackPlayable\";\nimport { store } from \"global\";\nimport { getCurrentLiveRadioFromState } from \"services/player/inputs/inputs/liveRadio/service\";\nimport { getCurrentLane, getQueueTrackPlayable, getTrackParent } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport type { RootModel } from \"models/app\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueMode } from \"models/app/player/input\";\nimport type { ResourceContentType, ResourcePreviewModel, TrackParentModel } from \"models/domain\";\nimport type { LiveRadioPlayableModel } from \"models/domain/LiveRadioPlayableModel\";\nimport type { MixRadioPreviewModel } from \"models/domain/MixRadioModel\";\nimport type { TrackPlayablePreviewModel } from \"models/domain/TrackPlayableModel\";\nimport { ContentType } from \"models/ModelType\";\n\n// todo: refactor logic in this file to use audio with index = 0 as current loaded audio\n\nexport function useQueueCurrentLaneFromState(): QueueTrackModel | null {\n const playQueue = useSelector((root: RootModel) => root.queue.playQueue);\n const current = getCurrentLane(playQueue);\n return current;\n}\n\nexport function getQueueCurrentLaneFromState(): QueueTrackModel | null {\n const playQueue = store.getState().queue.playQueue;\n const current = getCurrentLane(playQueue);\n return current;\n}\n\nexport function useQueueMixRadio(): MixRadioPreviewModel | null {\n const mixRadio = useSelector((root: RootModel) => root.queue.mixRadioSession?.mixRadio);\n return mixRadio ?? null;\n}\n\nexport function getQueueMixRadioFromState(): MixRadioPreviewModel | null {\n const mixRadio = store.getState().queue.mixRadioSession?.mixRadio;\n return mixRadio ?? null;\n}\n\nfunction useQueueCurrentLaneTrackFromState(): TrackPlayablePreviewModel | null {\n const currentLane = useQueueCurrentLaneFromState();\n const currentLaneTrack = useQueueTrackPlayableFromState(currentLane);\n\n return currentLaneTrack;\n}\n\nfunction getQueueCurrentLaneTrackFromState(): TrackPlayablePreviewModel | null {\n const currentLane = getQueueCurrentLaneFromState();\n const currentLaneTrack = currentLane ? getQueueTrackPlayable(currentLane) : null;\n\n return currentLaneTrack;\n}\n\nexport function useCurrentLanePrimaryResourceFromState(): { resource: ResourcePreviewModel | null; type: ResourceContentType } {\n const input = useSelector((root: RootModel) => root.player.input);\n const queueMode = useSelector((root: RootModel) => root.queue.mode);\n\n const queueTrack = useQueueCurrentLaneTrackFromState();\n const mixRadio = useQueueMixRadio();\n const liveRadio = useCurrentLiveRadioFromState();\n\n return useMemo(() => {\n if (input === AudioInputType.LiveRadio) return { type: ContentType.LiveRadioPlayable, resource: liveRadio };\n switch (queueMode) {\n case QueueMode.MixRadio:\n return { type: ContentType.MixRadio, resource: mixRadio };\n case QueueMode.Default: {\n return { type: ContentType.TrackPlayable, resource: queueTrack };\n }\n }\n }, [queueMode, liveRadio, mixRadio, queueTrack, input]);\n}\n\nexport type CurrentAudioLoadedPrimaryPreview = TrackPlayablePreviewModel | MixRadioPreviewModel | LiveRadioPlayableModel;\nexport type CurrentAudioLoadedSecondaryPreview = TrackPlayablePreviewModel | LiveRadioPlayableModel;\n\nexport function getCurrentAudioPrimaryResourceFromState(): { resource: CurrentAudioLoadedPrimaryPreview | null; type: ResourceContentType } {\n const input = store.getState().player.input;\n const queueMode = store.getState().queue.mode;\n\n const queueTrack = getQueueCurrentLaneTrackFromState();\n const mixRadio = getQueueMixRadioFromState();\n const liveRadio = getCurrentLiveRadioFromState();\n\n if (input === AudioInputType.LiveRadio) return { type: ContentType.LiveRadioPlayable, resource: liveRadio };\n switch (queueMode) {\n case QueueMode.MixRadio:\n return { type: ContentType.MixRadio, resource: mixRadio };\n case QueueMode.Default: {\n return { type: ContentType.TrackPlayable, resource: queueTrack };\n }\n }\n}\n\nexport function useCurrentAudioSecondaryResourceFromState(): { resource: CurrentAudioLoadedSecondaryPreview | null; resourceType: ResourceContentType } {\n const input = useSelector((root: RootModel) => root.player.input);\n const liveRadio = useCurrentLiveRadioFromState();\n const queueTrack = useQueueCurrentLaneTrackFromState();\n\n return useMemo(() => getCurrentAudioSecondaryResource(input, liveRadio, queueTrack), [input, liveRadio, queueTrack]);\n}\n\nfunction getCurrentAudioSecondaryResource(\n input: AudioInputType,\n liveRadio: LiveRadioPlayableModel | null,\n queueTrack: TrackPlayablePreviewModel | null\n): { resource: CurrentAudioLoadedSecondaryPreview | null; resourceType: ResourceContentType } {\n if (input === AudioInputType.LiveRadio)\n return {\n resource: liveRadio,\n resourceType: ContentType.LiveRadioPlayable\n };\n return {\n resource: queueTrack,\n resourceType: ContentType.TrackPlayable\n };\n}\n\nexport function getCurrentAudioSecondaryResourceFromState(): { resource: CurrentAudioLoadedSecondaryPreview | null; resourceType: ResourceContentType } {\n const input = store.getState().player.input;\n const liveRadio = getCurrentLiveRadioFromState();\n const queueTrack = getQueueCurrentLaneTrackFromState();\n return getCurrentAudioSecondaryResource(input, liveRadio, queueTrack);\n}\n\nexport function useQueueCurrentLaneParent(currentLane: QueueTrackModel | null): TrackParentModel | null {\n const trackParents = useSelector((root: RootModel) => root.queue.trackParents);\n return useMemo(() => (currentLane ? getTrackParent(currentLane.parentId, trackParents) : null), [currentLane, trackParents]);\n}\n","import { useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { getPlayQueueCurrentLane, getPlayQueuePriorityLane, getPlayQueueMemoryLane, getPlayQueueFlowLane } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport type { RootModel } from \"models/app\";\n\nexport function useQueueLanes() {\n const playQueue = useSelector((root: RootModel) => root.queue.playQueue);\n\n return useMemo(() => {\n const memory = getPlayQueueMemoryLane(playQueue);\n const isMemoryLaneEmpty = memory.length === 0;\n\n const current = getPlayQueueCurrentLane(playQueue);\n const isCurrentLaneEmpty = !current;\n\n const flow = getPlayQueueFlowLane(playQueue);\n const isFlowLaneEmpty = flow.length === 0;\n\n const priority = getPlayQueuePriorityLane(playQueue);\n const isPriorityLaneEmpty = priority.length === 0;\n\n const isQueueEmpty = playQueue.length === 0;\n\n return {\n memory,\n current,\n priority,\n flow,\n playQueue,\n isMemoryLaneEmpty,\n isCurrentLaneEmpty,\n isFlowLaneEmpty,\n isPriorityLaneEmpty,\n isQueueEmpty\n };\n }, [playQueue]);\n}\n","import { useSelector } from \"react-redux\";\nimport { store } from \"global/config\";\nimport { RootModel } from \"models/app\";\n\nexport function useQueueProperties() {\n const queue = useSelector((root: RootModel) => root.queue);\n const hasItems = queue.playQueue.length > 0;\n\n return { hasItems };\n}\nexport function getQueueProperties() {\n const queue = store.getState().queue;\n const hasItems = queue.playQueue.length > 0;\n\n return { hasItems };\n}\n","import { useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { getTrackParent } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport type { RootModel } from \"models/app\";\nimport type { TrackParentModel } from \"models/domain\";\n\nexport const useQueueLaneTrackParentFromState = (parentId: string | null): TrackParentModel | null => {\n const trackParents = useSelector((root: RootModel) => root.queue.trackParents);\n return useMemo(() => (parentId == null ? null : getTrackParent(parentId, trackParents)), [parentId, trackParents]);\n};\n","import { useMemo } from \"preact/hooks\";\nimport { getQueueTrackPlayable } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport type { TrackPlayablePreviewModel } from \"models/domain/TrackPlayableModel\";\n\nexport function useQueueTrackPlayableFromState(queueTrack: QueueTrackModel | null): TrackPlayablePreviewModel | null {\n const track = useMemo(() => (queueTrack ? getQueueTrackPlayable(queueTrack) : null), [queueTrack]);\n return track;\n}\n","import { RefObject } from \"preact\";\nimport { useMemo, useState } from \"preact/hooks\";\n\nexport function useRefUpdate<T>() {\n const [current, setCurrent] = useState<T | null>(null);\n const ref = useMemo(\n () =>\n new CustomRef(\n () => current,\n (value) => {\n if (value != null) setCurrent(value);\n }\n ),\n [current]\n );\n return ref;\n}\n\nexport class CustomRef<T> implements RefObject<T> {\n private getValue: () => T | null;\n private setValue: (value: T | null) => void;\n\n constructor(getValue: () => T | null, setValue: (value: T | null) => void) {\n this.getValue = getValue;\n this.setValue = setValue;\n }\n\n get current(): T | null {\n return this.getValue();\n }\n\n set current(value: T | null) {\n this.setValue(value);\n }\n}\n","import { useState } from \"preact/hooks\";\n\nexport function useReloadToken(): [token: number, reload: () => void] {\n const [token, setToken] = useState(0);\n\n function increment() {\n setToken(token+1);\n }\n\n return [token, increment];\n}","import { useState, useLayoutEffect } from \"preact/hooks\";\n\nexport const useResizeObserver = (target: HTMLElement | null): DOMRectReadOnly | null => {\n const [rect, setRect] = useState<DOMRectReadOnly | null>(null);\n\n useLayoutEffect(() => {\n if (!target) return;\n\n let stop = false;\n const resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n if (stop) return;\n\n // requestAnimationFrame workaround to prevent \"loop limit exceeded\" issues\n // https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded\n window.requestAnimationFrame(() => {\n entries.forEach((entry) => {\n if (!entry) return;\n setRect(entry.contentRect);\n });\n });\n });\n resizeObserver.observe(target);\n return () => {\n stop = true;\n resizeObserver.disconnect();\n };\n }, [target]);\n\n return rect;\n};\n","import { useState, useEffect } from \"preact/hooks\";\nimport { CustomResizeObserver } from \"./CustomResizeObserver\";\n\nexport const useResizeRowsColumns = <T>(\n target: HTMLElement | null,\n calculateGrid: (containerHeight: number, containerWidth: number, data: T) => { rows: number; columns: number; rowHeight: number },\n data: T\n) => {\n const [columns, setColumns] = useState(1);\n const [rows, setRows] = useState(1);\n const [rowHeight, setRowHeight] = useState(1);\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n const disconnect = CustomResizeObserver(target, (height, width) => {\n const { rows, columns, rowHeight } = calculateGrid(height, width, data);\n setColumns(columns);\n setRows(rows);\n setRowHeight(rowHeight);\n setIsReady(true);\n });\n\n return () => {\n disconnect && disconnect();\n };\n }, [data, target, rowHeight, calculateGrid]);\n\n return { columns, rows, rowHeight, isReady };\n};\n","import { useMemo } from \"preact/hooks\";\nimport { getTrackPlayablePreviews } from \"services/playable\";\nimport { getNormalizedResourceFromUnion, getResourcesFromUnions } from \"services/resource\";\nimport type { LiveRadioPreviewModel, ResourceModel, ResourcePreviewModel, TrackParentModel, TrackPreviewModel } from \"models/domain\";\nimport type { TrackPlayablePreviewModel } from \"models/domain/TrackPlayableModel\";\n\nexport const useTrackPlayables = (tracks: TrackPreviewModel[] | null, parent: TrackParentModel | null): TrackPlayablePreviewModel[] | null => {\n return useMemo(() => (tracks && parent ? getTrackPlayablePreviews(tracks, parent) : null), [tracks, parent]);\n};\n\nexport const useResourceFromUnion = (union: TrackPreviewModel | ResourcePreviewModel | null, parent: TrackParentModel | null): ResourcePreviewModel | null => {\n return useMemo(() => {\n if (!union || !parent) return null;\n return getNormalizedResourceFromUnion(union, parent);\n }, [union, parent]);\n};\n\nexport const useResourcesFromUnions = (\n playableOrTracks: (TrackPreviewModel | LiveRadioPreviewModel | ResourcePreviewModel)[] | null,\n parent: ResourceModel | null\n): ResourcePreviewModel[] | null => {\n return useMemo(() => getResourcesFromUnions(playableOrTracks, parent), [playableOrTracks, parent]);\n};\n","import { useLayoutEffect, useState } from \"preact/hooks\";\n\nexport enum ScrollAxis {\n x = \"x\",\n y = \"y\"\n}\n\nexport const useScrollPosition = (element: HTMLElement | null, axis: ScrollAxis) => {\n const [pos, setPos] = useState(0);\n useLayoutEffect(() => {\n if (!element) return;\n const change = () => {\n setPos(axis === ScrollAxis.x ? element.scrollLeft : element.scrollTop);\n };\n element.addEventListener(\"scroll\", change, { passive: true });\n return () => {\n element.removeEventListener(\"scroll\", change);\n };\n }, [element, axis]);\n\n return pos;\n};\n","import { useCallback, useEffect, useMemo, useState } from \"preact/hooks\";\nimport type { CustomRef } from \".\";\nimport { useRefUpdate } from \".\";\nimport { useResizeObserver } from \"./useResizeObserver\";\nimport { readPageScrollState, readSectionScrollState, savePageScrollState, saveSectionScrollState } from \"services/navigationStack/navigationStack\";\nimport type { PageContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport type { ScrollStateModel } from \"models/view/navigationStack\";\n\ninterface PageScrollRestorationProps {\n page: PageContextModel | null;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function usePageScrollRestoration({ page }: PageScrollRestorationProps) {\n const onChange = useCallback((state: ScrollStateModel) => savePageScrollState(state), []);\n const state = useMemo(() => readPageScrollState(), []);\n\n return useScrollRestoration({ state, onChange });\n}\n\ninterface SectionScrollRestorationProps {\n section: SectionContextModel | null;\n}\n\nexport function useSectionScrollRestoration({ section }: SectionScrollRestorationProps) {\n const onChange = useCallback((state: ScrollStateModel) => (section ? saveSectionScrollState(section, state) : null), [section]);\n const state = useMemo(() => (section ? readSectionScrollState(section) : null), [section]);\n\n return useScrollRestoration({ state, onChange });\n}\n\ninterface ScrollRestorationProps {\n onChange: (state: ScrollStateModel) => void;\n state: ScrollStateModel | null;\n}\n\nexport interface ScrollRestorationRef {\n scrollRef: CustomRef<HTMLElement>;\n contentRef: CustomRef<HTMLElement>;\n}\n\nexport function useScrollRestoration({ state, onChange }: ScrollRestorationProps): ScrollRestorationRef {\n const scrollRef = useRefUpdate<HTMLElement>();\n const contentRef = useRefUpdate<HTMLElement>();\n const scroll = scrollRef.current;\n const content = contentRef.current;\n\n const scrollSize = useResizeObserver(scroll);\n const contentSize = useResizeObserver(content);\n\n const [restore, setRestore] = useState(true);\n\n useEffect(() => {\n if (!state || !restore || !scroll || !scrollSize || !contentSize) return;\n if (!canScrollToContent(state, scrollSize, contentSize)) return;\n\n setRestore(false);\n const to: ScrollToOptions = { left: state.x ?? undefined, top: state.y ?? undefined, behavior: \"auto\" };\n scroll.scrollTo(to);\n }, [state, scroll, scrollSize, contentSize, restore]);\n\n useEffect(() => {\n if (!scroll) return;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const onScroll = (e: any) => {\n const y: number | null = e.target?.scrollTop ?? null;\n const x: number | null = e.target?.scrollLeft ?? null;\n if (y == null && x == null) return;\n\n setRestore(false);\n onChange({ x, y });\n };\n\n scroll.addEventListener(\"scroll\", onScroll, { passive: true });\n return () => scroll.removeEventListener(\"scroll\", onScroll);\n }, [scroll, onChange]);\n\n return { scrollRef, contentRef };\n}\n\nfunction canScrollToContentOnAxis(scroll: number, containerSize: number, contentSize: number) {\n const maxScrollHeight = contentSize - containerSize;\n return scroll <= maxScrollHeight;\n}\n\nfunction canScrollToContent(scroll: ScrollStateModel, container: DOMRectReadOnly, content: DOMRectReadOnly) {\n if (scroll.x && !canScrollToContentOnAxis(scroll.x, container.width, content.width)) return false;\n if (scroll.y && !canScrollToContentOnAxis(scroll.y, container.height, content.height)) return false;\n return true;\n}\n","import { useState, useLayoutEffect } from \"preact/hooks\";\nimport { useResizeObserver } from \"./useResizeObserver\";\nimport { ScrollAxis, useScrollPosition } from \"./useScrollPosition\";\n\nexport enum ScrollState {\n Start = \"start\",\n InBetween = \"inBetween\",\n End = \"end\",\n NoScroll = \"noScroll\"\n}\n\nexport const useScrollState = (container: HTMLElement | null, content: HTMLElement | null, axis: ScrollAxis) => {\n const scrollPosition = useScrollPosition(container, axis);\n const [scrollState, setScrollState] = useState(ScrollState.NoScroll);\n\n const contentSizeObs = useResizeObserver(content);\n const contentSize = axis === ScrollAxis.x ? contentSizeObs?.width : contentSizeObs?.height ?? null;\n\n useLayoutEffect(() => {\n if (!container) return;\n setScrollState(getScrollState(container, axis));\n }, [scrollPosition, container, axis, contentSize]);\n\n return scrollState;\n};\n\nexport function getScrollState(element: HTMLElement, axis: ScrollAxis) {\n const scrollPosition = axis === ScrollAxis.x ? element.scrollLeft : element.scrollTop;\n const scrollSize = axis === ScrollAxis.x ? element.scrollWidth : element.scrollHeight;\n const elementSize = axis === ScrollAxis.x ? element.clientWidth : element.clientHeight;\n\n if (elementSize === 0) return ScrollState.NoScroll;\n if (scrollSize === 0) return ScrollState.NoScroll;\n\n const isStart = scrollPosition <= 0;\n const isEnd = scrollSize - scrollPosition <= elementSize;\n\n const state = isStart && isEnd ? ScrollState.NoScroll : isStart ? ScrollState.Start : isEnd ? ScrollState.End : ScrollState.InBetween;\n\n return state;\n}\n","import { useRef, useMemo, useState, useCallback, useLayoutEffect } from \"preact/hooks\";\nimport { scrollingTextGroup, ScrollingTextItem } from \"services/text/scrollingTextService\";\nimport { useResizeObserver } from \"components/shared/hooks\";\n\nexport const useScrollingText = () => {\n const scrollingGroup = scrollingTextGroup;\n\n const ref = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const size = useResizeObserver(ref.current)?.width ?? 0;\n const contentSize = useResizeObserver(contentRef.current)?.width ?? 0;\n\n const scroll = useMemo(() => contentSize > size, [contentSize, size]);\n\n const [duration1, setDuration1] = useState<number | null>(null);\n const [duration2, setDuration2] = useState<number | null>(null);\n\n const animationFn = useCallback(() => {\n const speed = 40; // px per second\n const duration1 = (contentSize + 100) / speed;\n const duration2 = (contentSize + 50) / speed;\n return { duration1, duration2 };\n }, [contentSize]);\n\n const start = useCallback(() => {\n const { duration1, duration2 } = animationFn();\n\n const running = new Date(new Date().getTime() + duration1 * 1000);\n setDuration1(duration1);\n setDuration2(duration2);\n\n return running;\n }, [animationFn]);\n\n const stop = useCallback(() => {\n setDuration1(null);\n setDuration2(null);\n }, []);\n\n const entry = useMemo<ScrollingTextItem | null>(() => {\n return scroll ? { start, stop, running: false, stopTimeoutId: null } : null;\n }, [scroll, start, stop]);\n\n useLayoutEffect(() => {\n if (!entry) return;\n scrollingGroup.add(entry);\n\n return () => {\n scrollingGroup.remove(entry);\n };\n }, [entry, stop, scrollingGroup]);\n\n return { ref, contentRef, scroll, running: duration1 != null, duration1, duration2 };\n};\n","import { useSelector } from \"react-redux\";\nimport { RootModel } from \"models/app\";\n\nexport function useUserRecentSearches() {\n const recent = useSelector((root: RootModel) => root.user.recentSearches);\n return recent;\n}\n","import { useState, useLayoutEffect } from \"preact/hooks\";\nimport { getSecondsPlayed } from \"services/player/helpers\";\nimport { getAudioPropertiesFromState, useAudioProperties } from \"components/shared/hooks\";\n\nexport function useSecondsPlayedFromState(): { secondsPlayed: number; duration: number } {\n const { playState, duration, position } = useAudioProperties();\n const [secondsPlayed, setSecondsPlayed] = useState(0);\n\n useLayoutEffect(() => {\n let timeOut: number | null = null;\n const updateSecondsPlayed = () => {\n timeOut = null;\n const { seconds, next } = getSecondsPlayed({ playState, position });\n setSecondsPlayed(seconds);\n if (next) {\n timeOut = window.setTimeout(updateSecondsPlayed, next * 1000 + 1);\n }\n };\n updateSecondsPlayed();\n return () => {\n if (timeOut) clearTimeout(timeOut);\n };\n }, [playState, position]);\n\n return { secondsPlayed, duration };\n}\nexport function getSecondsPlayedFromState(): { secondsPlayed: number; duration: number } {\n const { playState, duration, position } = getAudioPropertiesFromState();\n\n const secondsPlayed = getSecondsPlayed({ playState, position }).seconds;\n\n return { secondsPlayed, duration };\n}\n","import { useMemo } from \"preact/hooks\";\nimport { getShowNativeMobileAppPrompt } from \"services/app\";\n\nexport const useShowNativeMobileAppPrompt = () => useMemo(() => getShowNativeMobileAppPrompt(), []);\n","import { useCallback, useMemo, useState } from \"preact/hooks\";\nimport { getSortOptions } from \"services/sort/sortService\";\nimport type { SortOption, SortOptionsModel } from \"models/app/SortOption\";\nimport type { ContentType } from \"models/ModelType\";\n\ninterface Props {\n context: ContentType.ArtistAlbums | ContentType.ArtistSingles | ContentType.AlbumArtistAlbums | ContentType.ArtistTracks | ContentType.ArtistAppearsOn;\n}\n\nexport const useSortOptions = ({ context }: Props): SortOptionsModel => {\n const { options, initial } = getSortOptions(context);\n const [selected, setSelected] = useState(initial);\n const onChange = useCallback((option: SortOption) => {\n setSelected(option);\n }, []);\n\n const sortOptions: SortOptionsModel = useMemo(() => ({ options, selected, onChange }), [options, selected, onChange]);\n return sortOptions;\n};\n","import { h } from \"preact\";\nimport { PageTemplate } from \"../page/PageTemplate\";\n\ninterface Props {\n className?: string;\n children?: preact.ComponentChildren;\n}\n\nexport const BlankTemplate = ({ children, className }: Props) => {\n return <PageTemplate className={className}>{children}</PageTemplate>;\n};\n","import type { RefObject } from \"preact\";\nimport { Fragment, h } from \"preact\";\nimport { useCallback } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport \"./DefaultTemplateDesktop.scss\";\nimport \"./DefaultTemplateMobile.scss\";\nimport { DesktopTemplateWidth, useDesktopProperties } from \"./hooks/useDesktopProperties\";\nimport { PageTemplate } from \"../page/PageTemplate\";\nimport { dispatch } from \"global\";\nimport { SET_DESKTOP_QUEUE_OPEN, PLAYER_TOGGLE_PLAY } from \"global/actions\";\nimport type { RootModel } from \"models/app\";\nimport { DesktopQueueOpen } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { ContentType } from \"models/ModelType\";\nimport { useRefUpdate, useAudioProperties, useDelay, DelayType } from \"components/shared/hooks\";\nimport { useAppMediaSize, MediaSize } from \"components/shared/hooks/useAppMediaSize\";\nimport { useDesktopLyricsOpen } from \"components/shared/hooks/useDesktopLyricsOpen\";\nimport { DesktopHeader } from \"components/organisms/headers/DesktopHeader\";\nimport { MobileHeader } from \"components/organisms/headers/MobileHeader\";\nimport { Lyrics } from \"components/organisms/lyrics/Lyrics\";\nimport { SideBar } from \"components/organisms/menus\";\nimport { PlayerDesktop } from \"components/organisms/playerDesktop\";\nimport { PlayerMaxi } from \"components/organisms/playerMaxi\";\nimport { PlayerMini } from \"components/organisms/playerMini\";\nimport { Queue } from \"components/organisms/queue\";\n\nexport interface DefaultTemplateProps {\n children: preact.ComponentChildren;\n className?: string;\n requireLogin?: boolean;\n mobileHeader?: boolean;\n pageRef?: RefObject<HTMLDivElement>;\n}\n\nexport const DefaultTemplate = ({ children, className, pageRef, mobileHeader = false }: DefaultTemplateProps) => {\n const isMobile = useAppMediaSize() === MediaSize.Mobile;\n const templateRef = useRefUpdate<HTMLDivElement>();\n const { templateWidth, queueLoaded, queueOpen } = useDesktopProperties(templateRef.current);\n\n const lyricsOpen = useDesktopLyricsOpen();\n\n const userDragging = useSelector((root: RootModel) => root.ui.userDragging);\n\n const toggleQueue = useCallback(() => {\n dispatch({\n type: SET_DESKTOP_QUEUE_OPEN,\n payload: {\n open: queueOpen ? DesktopQueueOpen.Closed : DesktopQueueOpen.Open,\n type: ContentType.Player\n }\n });\n }, [queueOpen]);\n\n const loaded = useDelay({ delay: { type: DelayType.AnimationFrame } });\n\n return (\n <div\n ref={templateRef}\n className={\n isMobile\n ? `defaultTemplateMobile XWV ${className ?? \"\"} --header-${mobileHeader}`\n : `defaultTemplateDesktop qbA ${className ?? \"\"} --loaded-${loaded} --queueVisible-${queueOpen} --userDragging-${userDragging} --width-${templateWidth ?? \"none\"\n }`\n }>\n <SideBar className={`menu`} minimal={templateWidth !== DesktopTemplateWidth.Step3} />\n {\n <PageTemplate className={`page${lyricsOpen ? \" noScreen\" : \"\"}`} ref={pageRef}>\n {!isMobile && <div className=\"overlay\" onClick={toggleQueue} />}\n {children}\n </PageTemplate>\n }\n {\n lyricsOpen &&\n <PageTemplate className=\"page noPrint\">\n <Lyrics />\n </PageTemplate>\n }\n {isMobile ? (\n <Fragment>\n {mobileHeader && <MobileHeader />}\n <PlayerMini className=\"player\" />\n <PlayerMaxi />\n </Fragment>\n ) : (\n <Fragment>\n <PlayQueue queueLoaded={queueLoaded} queueOpen={queueOpen} />\n <PlayerDesktop className=\"player\" showQueue={queueOpen} toggleQueue={toggleQueue} />\n <DesktopHeader className=\"header\" />\n </Fragment>\n )}\n </div>\n );\n};\n\nfunction PlayQueue({ queueLoaded, queueOpen }: { queueLoaded: boolean; queueOpen: boolean }) {\n const { canPlay, canPause } = useAudioProperties();\n\n const togglePlay = useCallback(\n () => canPlay && canPause && dispatch({ type: PLAYER_TOGGLE_PLAY, payload: { context: { action: AudioContextAction.UserPlayerTogglePlay, trace: null } } }),\n [canPlay, canPause]\n );\n if (!queueLoaded) return null;\n return <Queue onCurrentCoverClick={togglePlay} queueOpen={queueOpen} disableFade />;\n}\n","import { useEffect, useLayoutEffect, useState } from \"preact/hooks\";\nimport { useDesktopQueueOpen, useResizeObserver } from \"components/shared/hooks\";\n\nexport enum DesktopTemplateWidth {\n Step1 = \"step1\",\n Step2 = \"step2\",\n Step3 = \"step3\"\n}\n\nexport function useDesktopProperties(element: HTMLElement | null) {\n const [templateWidth, setTemplateWidth] = useState<DesktopTemplateWidth | null>(null);\n const queueOpen = useDesktopQueueOpen();\n const queueLoaded = useDesktopQueueLoaded(queueOpen);\n\n const resize = useResizeObserver(element);\n const { width, height } = resize ?? { width: null, height: null };\n\n useLayoutEffect(() => {\n if (width == null || height == null) return;\n\n const minSidebarWidth = 201;\n const minPageContentWidth = 400;\n const minQueueWidth = 301;\n const min = minSidebarWidth + minPageContentWidth + minQueueWidth;\n\n let w: DesktopTemplateWidth;\n\n if (width >= 1024) w = DesktopTemplateWidth.Step3;\n else if (width >= min) w = DesktopTemplateWidth.Step2;\n else w = DesktopTemplateWidth.Step1;\n\n setTemplateWidth(w);\n }, [width, height]);\n\n return { templateWidth, queueOpen, queueLoaded };\n}\n\nfunction useDesktopQueueLoaded(queueOpen: boolean) {\n const [loaded, setLoaded] = useState(false);\n\n useEffect(() => {\n if (queueOpen) {\n setLoaded(true);\n return;\n } else {\n let timeoutId: number | null = window.setTimeout(() => {\n timeoutId = null;\n setLoaded(false);\n }, 10_000);\n return () => {\n timeoutId && clearTimeout(timeoutId);\n };\n }\n }, [queueOpen]);\n\n return loaded;\n}\n","export { BlankTemplate } from \"./blank/BlankTemplate\";\nexport { PageTemplate } from \"./page/PageTemplate\";\nexport { DefaultTemplate } from \"./default/DefaultTemplate\";\n","import { ComponentChildren, h } from \"preact\";\nimport \"./MessagePageTemplate.scss\";\nimport { PageTopBar } from \"components/molecules/pageTopBar\";\n\ninterface Props {\n title: string;\n text?: string;\n buttons?: ComponentChildren;\n className: string;\n}\n\nexport const MessagePageTemplate = ({ title, text, buttons, className }: Props) => {\n return (\n <div tabIndex={-1} className={`messagePageTemplate BVL ${className}`}>\n <PageTopBar back={true} />\n <div className=\"content\">\n <div className=\"title\">{title}</div>\n {text && <div className=\"text\">{text}</div>}\n {buttons && <div className=\"buttons\">{buttons}</div>}\n </div>\n </div>\n );\n};\n","export * from \"./MessagePageTemplate\";","import type { ComponentChild, ComponentChildren } from \"preact\";\nimport { Fragment, h } from \"preact\";\nimport type { MutableRef } from \"preact/hooks\";\nimport \"./MyMusicPageTemplate.scss\";\nimport { getProductPageSize } from \"../productPage\";\nimport type { UseDomainQueryResult } from \"services/backend/backendService\";\nimport { useFilter } from \"services/filter\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport type { Multiselect } from \"services/selection\";\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport type {\n ConnectionModel,\n MyMusicAlbumsPageModel,\n MyMusicArtistsPageModel,\n MyMusicPlaylistsPageModel,\n MyMusicTracksPageModel,\n ResourceContentType,\n ResourcePreviewModel,\n TrackPreviewModel\n} from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { getMyMusicRoot } from \"models/view/navigationStack\";\nimport {\n useRefUpdate,\n useResizeObserver,\n useContextMenu,\n usePreviewContext,\n useSectionContext,\n usePageContext,\n usePageLoadState,\n useAutoPlay,\n useAppMediaSize\n} from \"components/shared/hooks\";\nimport type { ConnectionFetchFn } from \"components/shared/hooks/useConnectionHandler\";\nimport { usePagination } from \"components/shared/hooks/usePagination\";\nimport { useResourcesFromUnions } from \"components/shared/hooks/useResources\";\nimport { usePageScrollRestoration } from \"components/shared/hooks/useScrollRestoration\";\nimport { Button } from \"components/atoms/controls/button\";\nimport { ButtonPlayBig } from \"components/atoms/controls/button/buttons/ButtonPlayBig\";\nimport { ButtonPlayShuffleBig } from \"components/atoms/controls/button/buttons/ButtonPlayShuffleBig\";\nimport { IconName } from \"components/atoms/icon\";\nimport { EmptyState } from \"components/molecules/emptyState/EmptyState\";\nimport { PageTopBar } from \"components/molecules/pageTopBar\";\nimport { FilterUi } from \"components/organisms/filter\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\n\nexport type MyMusicPageContentType = ContentType.MyMusicTracks | ContentType.MyMusicAlbums | ContentType.MyMusicArtists | ContentType.MyMusicPlaylists;\nexport type MyMusicPageModel = MyMusicTracksPageModel | MyMusicArtistsPageModel | MyMusicPlaylistsPageModel | MyMusicAlbumsPageModel;\n\ninterface Props {\n onFilterChanged?: (filter: string) => void;\n placeholderTitle: string;\n placeholderSubtitle: string;\n placeholderButton?: ComponentChild;\n placeholderFilter?: string;\n placeholderFilterNoResult?: string;\n placeholderFilterNoResultSubtitle?: string;\n className?: string;\n query: UseDomainQueryResult<MyMusicPageModel>;\n productType: MyMusicPageContentType;\n resources: ConnectionModel<ResourcePreviewModel | TrackPreviewModel> | null;\n resourcesFetchFn: ConnectionFetchFn<ResourcePreviewModel | TrackPreviewModel>;\n displayType: ResourceDisplayType;\n topItem?: ComponentChildren;\n topItem2?: ComponentChildren;\n children?: ComponentChildren;\n sortingMenu: h.JSX.Element;\n modifyRef?: MutableRef<((fkt: (items: (ResourcePreviewModel | TrackPreviewModel)[]) => (ResourcePreviewModel | TrackPreviewModel)[]) => void) | null>;\n multiselect?: Multiselect;\n criterion: null | string;\n}\n\nexport const MyMusicPageTemplate = ({\n onFilterChanged,\n topItem,\n topItem2,\n children,\n displayType,\n modifyRef,\n placeholderButton,\n placeholderSubtitle,\n placeholderTitle,\n placeholderFilter,\n placeholderFilterNoResult,\n productType,\n query,\n resources,\n resourcesFetchFn,\n sortingMenu,\n multiselect,\n criterion,\n placeholderFilterNoResultSubtitle\n}: Props) => {\n const product = query.model;\n const showTop = productType === ContentType.MyMusicTracks;\n\n const page = usePageContext({ type: productType, resource: product, root: getMyMusicRoot(productType), done: query.success });\n const top = useSectionContext(productType, product, page, 0, ResourceDisplayType.Top);\n const section = useSectionContext(productType, product, page, showTop ? 0 : 1, displayType);\n\n const pagination = usePagination({ resource: product, connection: resources, fetchFn: resourcesFetchFn });\n if (modifyRef) modifyRef.current = pagination.modify;\n const restoration = usePageScrollRestoration({ page });\n\n // todo: behavior that knows if the query has fully loaded (without a filter) so filtering can be done completely clientside\n const unfilteredItems = useResourcesFromUnions(pagination.connection?.items ?? null, product);\n const { filteredItems: items, setFilter, filterIsExpanded, setFilterIsExpanded } = useFilter(unfilteredItems);\n\n const setFilter2 = (value: string) => {\n if (onFilterChanged) {\n onFilterChanged(value);\n } else {\n setFilter(value);\n }\n };\n\n const buttonRef = useRefUpdate<HTMLButtonElement>();\n const sortingMenuHook = useContextMenu(sortingMenu);\n\n const ref = useRefUpdate<HTMLDivElement>();\n const width = useResizeObserver(ref.current)?.width ?? null;\n const appSize = useAppMediaSize();\n const size = getProductPageSize(width, appSize);\n\n const sort = () => {\n if (!buttonRef.current) {\n log.error({ code: \"web-210519-1218\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n sortingMenuHook.open(buttonRef.current);\n };\n\n const { error, spinner, showContent } = usePageLoadState(page, query);\n useAutoPlay({ page, type: productType, resource: product, loading: query.loading, error: error != null });\n\n if (error) return error;\n\n const hasEmptyCollection = unfilteredItems?.length === 0;\n const hasItems = (unfilteredItems?.length ?? 0) > 0;\n const hasFilteredItems = (items?.length ?? 0) > 0;\n\n return (\n <div\n tabIndex={-1}\n className={`myMusicPageTemplate xhj --size-${size}`}\n ref={(r) => {\n ref.current = r;\n pagination.scrollRef.current = r;\n restoration.scrollRef.current = r;\n }}>\n <div\n className=\"content\"\n ref={(r) => {\n restoration.contentRef.current = r;\n }}>\n <PageTopBar\n page={page}\n back={true}\n disableMobileTitle={filterIsExpanded}\n right={\n <Fragment>\n <FilterUi onChange={setFilter2} onExpandedChanged={setFilterIsExpanded} placeholder={placeholderFilter} />\n <Button icon={IconName.Sort} onClick={sort} ref={buttonRef} />\n </Fragment>\n }\n />\n {topItem2}\n {!criterion && hasEmptyCollection && <EmptyState title={placeholderTitle} subtitle={placeholderSubtitle} button={placeholderButton} />}\n {criterion && !hasFilteredItems && <EmptyState title={placeholderFilterNoResult ?? \"\"} subtitle={placeholderFilterNoResultSubtitle ?? \"\"} button={undefined} />}\n {!hasEmptyCollection && showTop && (\n <div className=\"top\">\n <Controls product={product} productType={productType} context={top} />\n </div>\n )}\n {spinner\n ? spinner\n : (hasItems || showContent) && (\n <Fragment>\n {topItem}\n <ResourceSection multiselect={multiselect} resources={items} context={section} pagination={pagination} />\n {children}\n </Fragment>\n )}\n </div>\n </div>\n );\n};\n\ninterface ControlProps {\n context: SectionContextModel;\n product: MyMusicPageModel | null;\n productType: ResourceContentType;\n}\n\nfunction Controls({ product, productType, context: sectionContext }: ControlProps) {\n const preview = usePreviewContext(productType, product, sectionContext, null);\n\n if (product != null && product.contentType !== ContentType.MyMusicTracks) {\n log.error({ code: \"web-210207-1349\", msg: \"wrong type\" });\n return null;\n }\n\n return !product ? null : (\n <div className={`controls`}>\n <div className=\"menu\">\n <ButtonPlayBig playable={product} context={preview} />\n <ButtonPlayShuffleBig playable={product} context={preview} />\n </div>\n </div>\n );\n}\n","export * from \"./MyMusicPageTemplate\";\n","import { ComponentChildren, h } from \"preact\";\nimport { forwardRef } from \"preact/compat\";\nimport { RootModel } from \"models/app\";\nimport { useSelector } from \"react-redux\";\nimport \"./PageTemplate.scss\";\n\ninterface Props {\n children: ComponentChildren;\n className?: string;\n}\n\nexport const PageTemplate = forwardRef<HTMLDivElement, Props>(({ children, className }, ref) => {\n const mobileMaxiPlayerOpen = useSelector((root: RootModel) => root.ui.layout.mobileMaxiPlayerOpen);\n return (\n <div ref={ref} className={`pageTemplate G37 ${className ?? \"\"}${mobileMaxiPlayerOpen ? \"\" : \" --gradient-true\"}`}>\n {children}\n </div>\n );\n});\n","import type { ComponentChildren } from \"preact\";\nimport { h } from \"preact\";\n\nexport const FooterText = ({ children }: { children: ComponentChildren }) => {\n return <p className={`footerText`}>{children}</p>;\n};\n","import { Fragment, h } from \"preact\";\nimport { TestLocator } from \"global/constants\";\nimport type { ProductPageModel } from \"services/resource\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlayQueuePlayablePageModel, RadioPageModel } from \"models/domain\";\nimport { ButtonPlayRadio } from \"components/atoms/controls/button/buttons\";\nimport { ButtonPlayBig } from \"components/atoms/controls/button/buttons/ButtonPlayBig\";\nimport { ButtonPlayShuffleBig } from \"components/atoms/controls/button/buttons/ButtonPlayShuffleBig\";\n\ninterface PlayableActionsProps {\n previewContext: PreviewContextModel;\n canPlay: boolean;\n isPlayable: boolean;\n isRadio: boolean;\n product: ProductPageModel | null;\n filter?: h.JSX.Element;\n sort?: h.JSX.Element;\n}\nexport const PlayableActions = ({ product, previewContext, isPlayable, isRadio, canPlay, filter, sort }: PlayableActionsProps) => {\n if (!isPlayable) return null;\n\n const playable = product as PlayQueuePlayablePageModel | null;\n const disabled = !canPlay;\n\n return (\n <div className={`menu1`}>\n {isRadio ? (\n <ButtonPlayRadio radio={playable as RadioPageModel} context={previewContext} />\n ) : (\n <Fragment>\n <ButtonPlayBig playable={playable} context={previewContext} testLocator={TestLocator.ProductPagePlayButton} disabled={disabled} />\n <ButtonPlayShuffleBig playable={playable} context={previewContext} testLocator={TestLocator.ProductPageShufflePlayButton} disabled={disabled} />\n {filter}\n {sort}\n </Fragment>\n )}\n </div>\n );\n};\n","import type { ComponentChildren, RefObject } from \"preact\";\nimport { Fragment, h } from \"preact\";\nimport { useCallback, useMemo, useRef } from \"preact/hooks\";\nimport \"./ProductPageTemplate.scss\";\nimport { PlayableActions } from \"./PlayableActions\";\nimport { TestLocator } from \"global/constants\";\nimport type { UseDomainQueryResult } from \"services/backend/backendService\";\nimport type { FavoritePageModel } from \"services/favorites\";\nimport { isFavoriteContentType } from \"services/favorites\";\nimport { isPlayable, isPlayableContentType, isRadioContentType } from \"services/playable\";\nimport type { ProductPageModel, ProductPageType } from \"services/resource\";\nimport { getCanPlay, getHasContextMenu, getProductPageTexts } from \"services/resource\";\nimport { getNextUUID } from \"services/utils\";\nimport type { SortOptionsModel, DragProps } from \"models/app\";\nimport { createDraggablePlayableModel } from \"models/app\";\nimport type { PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport { MediaSize, useResizeObserver, usePreviewContext, usePageLoadState, useLinkContextsFromPreview } from \"components/shared/hooks\";\nimport { useAppMediaSize } from \"components/shared/hooks/useAppMediaSize\";\nimport { usePageScrollRestoration } from \"components/shared/hooks/useScrollRestoration\";\nimport { ButtonSort } from \"components/atoms/controls/button/buttons\";\nimport { ButtonFavorite } from \"components/atoms/controls/button/buttons/ButtonFavorite\";\nimport { ButtonMore } from \"components/atoms/controls/button/buttons/ButtonMore\";\nimport { CoverSize, ResourceCover } from \"components/atoms/cover\";\nimport { Line } from \"components/atoms/line\";\nimport { PageLoadSpinner } from \"components/atoms/spinner\";\nimport { ScrollingText } from \"components/atoms/text\";\nimport { MobileTopBar } from \"components/molecules/pageTopBar/mobile\";\nimport { ResourceLink } from \"components/molecules/resource\";\nimport { ResourceText } from \"components/molecules/resource/ResourceText\";\n\nexport enum ProductPageSize {\n Unknown = \"unknown\",\n Small = \"small\",\n Medium = \"medium\",\n Large = \"large\",\n VeryLarge = \"veryLarge\"\n}\n\n\n\n// the new component, to be used with the experimental product loader\ninterface Props2 extends Omit<Props, \"error\" | \"spinner\" | \"showContent\"> {\n loading?: boolean;\n}\nexport const ProductPageTemplate2 = (props: Props2) => {\n const error = null; // todo: get errorstate from props\n const spinner = (props.loading || !props.product) ? PageLoadSpinner() : null;\n const showContent = !!props.product;\n return ProductPageTemplateBase({ ...props, error, spinner, showContent });\n}\n\n\n// the legacy component, to be used with the UseDomainQueryResult\ninterface LegacyProps extends Omit<Props, \"product\" | \"error\" | \"spinner\" | \"showContent\"> {\n query: UseDomainQueryResult<ProductPageModel>;\n}\nexport const ProductPageTemplate = (props: LegacyProps) => {\n const page = props.section.page;\n const product = props.query.model;\n const { error, spinner, showContent } = usePageLoadState(page, props.query);\n return ProductPageTemplateBase({ ...props, product, error, spinner, showContent });\n};\n\n\n\n\n\n\n\n\n\n\n\ninterface Props {\n children?: ComponentChildren;\n className?: string;\n section: SectionContextModel;\n isUserOwned: boolean;\n product: ProductPageModel | null;\n scrollRef?: RefObject<HTMLElement>;\n sortOptions?: SortOptionsModel;\n type: ProductPageType;\n filter?: h.JSX.Element;\n error: h.JSX.Element | null;\n spinner: h.JSX.Element | null;\n showContent: boolean;\n}\n\nexport const ProductPageTemplateBase = ({ product, type, children, section, isUserOwned, scrollRef, sortOptions, filter, error, spinner, showContent }: Props) => {\n const page = section.page;\n\n const context = usePreviewContext(type, product, section, null);\n\n const ref = useRef<HTMLDivElement | null>(null);\n const width = useResizeObserver(ref.current)?.width ?? null;\n const appSize = useAppMediaSize();\n const size = getProductPageSize(width, appSize);\n const restoration = usePageScrollRestoration({ page });\n\n const dragProps: DragProps = useMemo(() => ({ dragSourceId: getNextUUID() }), []);\n const draggableItem = useCallback(() => createDraggablePlayableModel(product, dragProps.dragSourceId, context), [product, dragProps.dragSourceId, context]);\n\n if (error) return error;\n if (size == ProductPageSize.Unknown) return <div className={`productPageTemplate ycy`} ref={ref} />;\n\n const playable = isPlayableContentType(type) && product != null && isPlayable(product);\n const favorite = !isUserOwned && isFavoriteContentType(type);\n const hasMoreBtn = getHasContextMenu(type, product);\n const hasMenu = favorite || hasMoreBtn;\n const isRadio = isRadioContentType(type);\n const canPlay = getCanPlay(product);\n const sortButton = sortOptions ? <ButtonSort sortOptions={sortOptions} /> : null;\n\n //console.log(`ppt render${spinner ? \" spinner\" : \"\"}${showContent ? \" showContent\" : \"\"}${product ? \" hasdata\" : \" nodata\"}`);\n\n return (\n <div\n tabIndex={-1}\n className={`productPageTemplate ycy --size-${size} --playable-${playable} --isRadio-${isRadio} --hasMenu2-${hasMenu}`}\n ref={(r) => {\n ref.current = r;\n restoration.scrollRef.current = r;\n if (scrollRef) scrollRef.current = r;\n }}>\n <div\n className=\"content\"\n ref={(r) => {\n restoration.contentRef.current = r;\n }}>\n {size === ProductPageSize.Small && <MobileTopBar back={true} right={sortButton} />}\n {(!product && spinner)\n ? spinner\n : (product || showContent) && (\n <Fragment>\n <div className=\"top\">\n <ResourceCover\n size={CoverSize.Size320}\n dynamicSize\n rounding={undefined}\n context={context}\n draggableItem={draggableItem}\n disabledAction={true}\n disableLazyLoad\n />\n <div className={`controls`}>\n <Texts preview={context} product={product} type={type} />\n {hasMenu && <ResourceContextActions preview={context} hasMoreBtn={hasMoreBtn} isFavorite={favorite} product={product} />}\n </div>\n </div>\n <Line />\n <PlayableActions\n product={product}\n previewContext={context}\n isPlayable={playable}\n isRadio={isRadio}\n canPlay={canPlay}\n sort={size !== ProductPageSize.Small ? sortButton ?? undefined : undefined}\n filter={filter ?? <div className=\"spacer\" />}\n />\n {children}\n </Fragment>\n )}\n </div>\n </div>\n );\n};\n\n\n\n\n\ninterface ControlTextProps {\n preview: PreviewContextModel;\n product: ProductPageModel | null;\n type: ProductPageType;\n}\nexport const Texts = ({ product, type: productType, preview }: ControlTextProps) => {\n const [h1Link, h2Link] = useLinkContextsFromPreview(preview);\n const [text1Link, text2Link] = useMemo(() => getProductPageTexts(productType, product), [product, productType]);\n\n const h1 = h1Link && <ResourceText links={h1Link} />;\n const h2 = h2Link && <ResourceLink links={h2Link} />;\n const text3 = text1Link && <ResourceLink links={text1Link} />;\n const text4 = text2Link && <ResourceLink links={text2Link} />;\n\n const hasInfos = text3 != null || text4 != null;\n\n return (\n <div className={`texts`}>\n <div className=\"titles\">\n {h1 && (\n <ScrollingText>\n <h1>{h1}</h1>\n </ScrollingText>\n )}\n {h2 && (\n <ScrollingText>\n <h2>{h2}</h2>\n </ScrollingText>\n )}\n </div>\n {hasInfos && (\n <div className=\"infos\">\n {text3 != null && <p>{text3}</p>}\n {text4 != null && <p>{text4}</p>}\n </div>\n )}\n </div>\n );\n};\ninterface ResourceContextActionsProps {\n preview: PreviewContextModel;\n hasMoreBtn: boolean;\n isFavorite: boolean;\n product: ProductPageModel | null;\n}\nconst ResourceContextActions = ({ product, preview, isFavorite, hasMoreBtn }: ResourceContextActionsProps) => {\n return (\n <div className={`menu`}>\n {isFavorite && <ButtonFavorite favorite={product as FavoritePageModel} context={preview} testLocator={TestLocator.ProductPageFavoriteButton} />}\n {hasMoreBtn && <ButtonMore resource={product} context={preview} testLocator={TestLocator.ProductPageMoreButton} />}\n </div>\n );\n};\n\nexport function getProductPageSize(width: number | null, appSize: MediaSize): ProductPageSize {\n if (appSize === MediaSize.Mobile) return ProductPageSize.Small;\n if (appSize === MediaSize.Tablet) return ProductPageSize.Medium;\n\n if (width == null) return ProductPageSize.Unknown;\n if (width < 360) return ProductPageSize.Small;\n if (width < 2 * 320 + 24) return ProductPageSize.Medium;\n if (width < 320 + 64 + 415 + 32) return ProductPageSize.Large;\n return ProductPageSize.VeryLarge;\n}\n","export * from \"./ProductPageTemplate\";","import { Fragment, h } from \"preact\";\nimport { useMemo } from \"preact/hooks\";\nimport \"./ShowAllPageTemplate.scss\";\nimport { isFeatureEnabled, Feature } from \"global/config\";\nimport type { UseDomainQueryResult } from \"services/backend/backendService\";\nimport { useFilter } from \"services/filter\";\nimport type { ContextResourceModel, PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { SortOptionsModel } from \"models/app/SortOption\";\nimport type {\n ConnectionModel,\n LiveRadioPreviewModel,\n LocationContentType,\n ResourceContentType,\n ResourceDisplayType,\n ResourcePageModel,\n ResourcePreviewModel,\n TrackPreviewModel\n} from \"models/domain\";\nimport type { NotificationConversion } from \"models/domain/NotificationModel\";\nimport type { NavigationPageRootName } from \"models/view/navigationStack\";\nimport { usePageContext, usePageLoadState, useSectionContextFromPage, useAutoPlay } from \"components/shared/hooks\";\nimport type { ConnectionFetchFn } from \"components/shared/hooks/useConnectionHandler\";\nimport { usePagination } from \"components/shared/hooks/usePagination\";\nimport { useResourcesFromUnions } from \"components/shared/hooks/useResources\";\nimport { usePageScrollRestoration } from \"components/shared/hooks/useScrollRestoration\";\nimport { ButtonSort } from \"components/atoms/controls/button/buttons\";\nimport { PageTopBar } from \"components/molecules/pageTopBar\";\nimport type { PreviewAction } from \"components/molecules/preview\";\nimport { FilterUi } from \"components/organisms/filter\";\nimport { ResourceSection } from \"components/organisms/resourceSection\";\n\ninterface Props<TPage extends ResourcePageModel, TItem extends ResourcePreviewModel | TrackPreviewModel | LiveRadioPreviewModel> {\n className?: string;\n display: ResourceDisplayType | null;\n fetchFn?: ConnectionFetchFn<TItem>;\n items: ConnectionModel<TItem> | null;\n max?: number;\n onAction?: (action: PreviewAction, preview: PreviewContextModel, conversion: NotificationConversion | null) => void;\n query: UseDomainQueryResult<TPage>;\n // alternateAutoPlay?: ContextResourceModel | null;\n alternateAutoPlayFn?: AlternateAutoPlayFn<TItem>;\n root?: NavigationPageRootName;\n sortOptions?: SortOptionsModel;\n type: ResourceContentType;\n pageType?: LocationContentType;\n highlightedId?: string;\n disableFiltering?: boolean;\n}\nexport type AlternateAutoPlayFn<T extends ResourcePreviewModel | TrackPreviewModel | LiveRadioPreviewModel> = (items: ConnectionModel<T> | null) => {\n type: LocationContentType | null;\n resource: ContextResourceModel | null;\n};\n\nexport const ShowAllPageTemplate = <TPage extends ResourcePageModel, TItem extends ResourcePreviewModel | TrackPreviewModel | LiveRadioPreviewModel>({\n query,\n type,\n pageType,\n display,\n items,\n onAction,\n fetchFn,\n max,\n sortOptions,\n root,\n alternateAutoPlayFn,\n highlightedId,\n disableFiltering\n}: Props<TPage, TItem>) => {\n const page = usePageContext({ type: pageType ?? type, resource: query.model, root: root ?? null, done: query.success });\n const section = useSectionContextFromPage(page, display);\n const resource = section.resource;\n\n const pagination = usePagination({ resource, connection: items, fetchFn, max });\n const restoration = usePageScrollRestoration({ page });\n const unfiltererResourceItems = useResourcesFromUnions(pagination.connection?.items ?? null, resource);\n\n const { filteredItems: resourceItems, setFilter, filterIsExpanded, setFilterIsExpanded, hasLoadedOnce } = useFilter(unfiltererResourceItems, pagination);\n\n const alternateAutoPlay = useMemo(() => (alternateAutoPlayFn ? alternateAutoPlayFn(pagination.connection) : null), [alternateAutoPlayFn, pagination.connection]);\n const autoPlayType = alternateAutoPlay?.type ?? type;\n const autoPlayResource = alternateAutoPlay?.resource ?? query.model;\n\n useAutoPlay({ page, type: autoPlayType, resource: autoPlayResource });\n const { error, spinner, showContent } = usePageLoadState(page, query);\n if (error) return error;\n\n return (\n <div\n className={`showAllPageTemplate etf`}\n tabIndex={-1}\n ref={(r) => {\n pagination.scrollRef.current = r;\n restoration.scrollRef.current = r;\n }}>\n <div\n className=\"content\"\n ref={(r) => {\n restoration.contentRef.current = r;\n }}>\n {\n (error || resource) &&\n <PageTopBar\n error={query.error}\n page={page}\n back={true}\n disableMobileTitle={filterIsExpanded}\n right={\n <Fragment>\n {hasLoadedOnce && !disableFiltering && isFeatureEnabled(Feature.ClientsideFiltering) && (\n <FilterUi onChange={setFilter} onExpandedChanged={setFilterIsExpanded} placeholder=\"\" />\n )}\n {sortOptions && !query.error && <ButtonSort sortOptions={sortOptions} disabled={!resource} />}\n </Fragment>\n }\n />\n }\n\n {spinner || showContent && <ResourceSection resources={resourceItems} context={section} pagination={pagination} onAction={onAction} highlightedId={highlightedId} />}\n </div>\n </div>\n );\n};\n","export * from \"./ShowAllPageTemplate\";","import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: { input: string; output: string; }\n String: { input: string; output: string; }\n Boolean: { input: boolean; output: boolean; }\n Int: { input: number; output: number; }\n Float: { input: number; output: number; }\n Date: { input: any; output: any; }\n DateTime: { input: any; output: any; }\n Uri: { input: string; output: string; }\n};\n\nexport type AddFavoriteAlbumResult = MutationResult & {\n readonly __typename: 'AddFavoriteAlbumResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type AddFavoriteArtistResult = MutationResult & {\n readonly __typename: 'AddFavoriteArtistResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type AddFavoritePlaylistResult = MutationResult & {\n readonly __typename: 'AddFavoritePlaylistResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type AddFavoriteTrackResult = MutationResult & {\n readonly __typename: 'AddFavoriteTrackResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type AddProfileInput = {\n readonly color?: InputMaybe<Scalars['String']['input']>;\n readonly description?: InputMaybe<Scalars['String']['input']>;\n readonly title: Scalars['String']['input'];\n};\n\nexport type AddProfileResult = MutationResult & {\n readonly __typename: 'AddProfileResult';\n readonly ok: Scalars['Boolean']['output'];\n readonly profile: Profile;\n};\n\nexport type AddTracksToPlaylistResult = MutationResult & {\n readonly __typename: 'AddTracksToPlaylistResult';\n readonly addedCount: Scalars['Int']['output'];\n readonly invalidTrackIds: ReadonlyArray<Maybe<Scalars['ID']['output']>>;\n readonly ok: Scalars['Boolean']['output'];\n readonly playlist: Playlist;\n readonly resultingCount: Scalars['Int']['output'];\n readonly skippedCount: Scalars['Int']['output'];\n};\n\nexport type Album = {\n readonly artist: Artist;\n readonly available: Scalars['Boolean']['output'];\n readonly cover: Scalars['Uri']['output'];\n readonly duration: Scalars['Int']['output'];\n readonly featuredArtists: ArtistConnection;\n readonly genre: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly label: Scalars['String']['output'];\n readonly releaseDate: Scalars['Date']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly similarAlbums: AlbumConnection;\n readonly title: Scalars['String']['output'];\n readonly tracks: TrackConnection;\n readonly tracksCount: Scalars['Int']['output'];\n readonly type: AlbumType;\n readonly upc: Scalars['String']['output'];\n};\n\n\nexport type AlbumCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type AlbumFeaturedArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type AlbumSimilarAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type AlbumTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type AlbumBannerTarget = BannerTargetInterface & {\n readonly __typename: 'AlbumBannerTarget';\n readonly album?: Maybe<Album>;\n readonly bannerId: Scalars['ID']['output'];\n};\n\n/** A connection from an object to a list of objects of type `Album`. */\nexport type AlbumConnection = {\n readonly __typename: 'AlbumConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<AlbumEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<Album>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `Album`. */\nexport type AlbumEdge = {\n readonly __typename: 'AlbumEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: Album;\n};\n\nexport type AlbumMixedSearchResult = MixedSearchResult & {\n readonly __typename: 'AlbumMixedSearchResult';\n readonly album: Album;\n readonly cover: Scalars['Uri']['output'];\n readonly id: Scalars['ID']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type AlbumMixedSearchResultCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport type AlbumStatisticsItem = StatisticsItem & {\n readonly __typename: 'AlbumStatisticsItem';\n readonly album?: Maybe<Album>;\n readonly cover: Scalars['Uri']['output'];\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type AlbumStatisticsItemCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport enum AlbumType {\n Compilation = 'COMPILATION',\n Regular = 'REGULAR',\n Single = 'SINGLE'\n}\n\nexport enum AlbumTypeFilter {\n All = 'ALL',\n Compilation = 'COMPILATION',\n Regular = 'REGULAR',\n Single = 'SINGLE'\n}\n\nexport type AlbumsChart = Chart & {\n readonly __typename: 'AlbumsChart';\n readonly albums: AlbumConnection;\n readonly cover: Scalars['Uri']['output'];\n readonly description: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly shortTitle: Scalars['String']['output'];\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type AlbumsChartAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type AlbumsChartCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport type AlbumsLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'AlbumsLayoutItemContent';\n readonly albums: AlbumConnection;\n readonly pageItemId: Scalars['ID']['output'];\n};\n\n\nexport type AlbumsLayoutItemContentAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type AlbumsRecommendation = Recommendation & {\n readonly __typename: 'AlbumsRecommendation';\n readonly albums: AlbumConnection;\n readonly cover: Scalars['Uri']['output'];\n readonly description?: Maybe<Scalars['String']['output']>;\n readonly id: Scalars['ID']['output'];\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type AlbumsRecommendationAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type AlbumsRecommendationCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport enum AlbumsSorting {\n Alphabetically = 'ALPHABETICALLY',\n Newest = 'NEWEST',\n Popularity = 'POPULARITY'\n}\n\nexport type Artist = {\n readonly albums: AlbumConnection;\n readonly artistRadio: TrackConnection;\n readonly cover: Scalars['Uri']['output'];\n readonly id: Scalars['ID']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly similarArtists: ArtistConnection;\n readonly title: Scalars['String']['output'];\n readonly tracks: TrackConnection;\n};\n\n\nexport type ArtistAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n featuredIn?: Scalars['Boolean']['input'];\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: AlbumsSorting;\n types?: ReadonlyArray<AlbumTypeFilter>;\n};\n\n\nexport type ArtistArtistRadioArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ArtistCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type ArtistSimilarArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ArtistTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: TracksSorting;\n};\n\nexport type ArtistBannerTarget = BannerTargetInterface & {\n readonly __typename: 'ArtistBannerTarget';\n readonly artist?: Maybe<Artist>;\n readonly bannerId: Scalars['ID']['output'];\n};\n\n/** A connection from an object to a list of objects of type `Artist`. */\nexport type ArtistConnection = {\n readonly __typename: 'ArtistConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<ArtistEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<Artist>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `Artist`. */\nexport type ArtistEdge = {\n readonly __typename: 'ArtistEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: Artist;\n};\n\nexport type ArtistMixedSearchResult = MixedSearchResult & {\n readonly __typename: 'ArtistMixedSearchResult';\n readonly artist: Artist;\n readonly cover: Scalars['Uri']['output'];\n readonly id: Scalars['ID']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type ArtistMixedSearchResultCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport type ArtistStatisticsItem = StatisticsItem & {\n readonly __typename: 'ArtistStatisticsItem';\n readonly artist?: Maybe<Artist>;\n readonly cover: Scalars['Uri']['output'];\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type ArtistStatisticsItemCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport type ArtistsLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'ArtistsLayoutItemContent';\n readonly artists: ArtistConnection;\n readonly pageItemId: Scalars['ID']['output'];\n};\n\n\nexport type ArtistsLayoutItemContentArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type Authorize = {\n readonly __typename: 'Authorize';\n readonly authorize: Scalars['Uri']['output'];\n readonly createUser: Scalars['Uri']['output'];\n readonly deviceAuthorize: Scalars['Uri']['output'];\n readonly forgotPassword: Scalars['Uri']['output'];\n readonly inviteFlowHelpUrl: Scalars['Uri']['output'];\n readonly logout: Scalars['Uri']['output'];\n readonly logoutAllDevices: Scalars['Uri']['output'];\n readonly token: Scalars['Uri']['output'];\n};\n\nexport type AvailableNotifications = {\n readonly __typename: 'AvailableNotifications';\n readonly notifications: NotificationConnection;\n readonly notificationsState?: Maybe<Scalars['String']['output']>;\n};\n\n\nexport type AvailableNotificationsNotificationsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type Banner = {\n readonly __typename: 'Banner';\n readonly buttonImage?: Maybe<Scalars['Uri']['output']>;\n readonly cover: Scalars['Uri']['output'];\n readonly description: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly name: Scalars['String']['output'];\n readonly target?: Maybe<BannerTargetInterface>;\n};\n\n\nexport type BannerButtonImageArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type BannerCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n/** A connection from an object to a list of objects of type `Banner`. */\nexport type BannerConnection = {\n readonly __typename: 'BannerConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<BannerEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<Banner>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type BannerContentLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'BannerContentLayoutItemContent';\n readonly banners: BannerConnection;\n readonly pageItemId: Scalars['ID']['output'];\n};\n\n\nexport type BannerContentLayoutItemContentBannersArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/** An edge in a connection from an object to another object of type `Banner`. */\nexport type BannerEdge = {\n readonly __typename: 'BannerEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: Banner;\n};\n\nexport type BannerTargetInterface = {\n readonly bannerId: Scalars['ID']['output'];\n};\n\nexport type CanPlayConcurrentlyResult = MutationResult & {\n readonly __typename: 'CanPlayConcurrentlyResult';\n readonly canPlay: Scalars['Boolean']['output'];\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type Catalog = {\n readonly __typename: 'Catalog';\n readonly album?: Maybe<Album>;\n readonly artist?: Maybe<Artist>;\n readonly genres: Genres;\n readonly track?: Maybe<Track>;\n};\n\n\nexport type CatalogAlbumArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type CatalogArtistArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type CatalogTrackArgs = {\n id: Scalars['ID']['input'];\n};\n\nexport type CatalogAlbum = Album & {\n readonly __typename: 'CatalogAlbum';\n readonly artist: Artist;\n readonly available: Scalars['Boolean']['output'];\n readonly cover: Scalars['Uri']['output'];\n readonly duration: Scalars['Int']['output'];\n readonly featuredArtists: ArtistConnection;\n readonly genre: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly label: Scalars['String']['output'];\n readonly releaseDate: Scalars['Date']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly similarAlbums: AlbumConnection;\n readonly title: Scalars['String']['output'];\n readonly tracks: TrackConnection;\n readonly tracksCount: Scalars['Int']['output'];\n readonly type: AlbumType;\n readonly upc: Scalars['String']['output'];\n};\n\n\nexport type CatalogAlbumCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type CatalogAlbumFeaturedArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type CatalogAlbumSimilarAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type CatalogAlbumTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type CatalogArtist = Artist & {\n readonly __typename: 'CatalogArtist';\n readonly albums: AlbumConnection;\n readonly artistRadio: TrackConnection;\n readonly cover: Scalars['Uri']['output'];\n readonly id: Scalars['ID']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly similarArtists: ArtistConnection;\n readonly title: Scalars['String']['output'];\n readonly tracks: TrackConnection;\n};\n\n\nexport type CatalogArtistAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n featuredIn?: Scalars['Boolean']['input'];\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: AlbumsSorting;\n types?: ReadonlyArray<AlbumTypeFilter>;\n};\n\n\nexport type CatalogArtistArtistRadioArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type CatalogArtistCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type CatalogArtistSimilarArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type CatalogArtistTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: TracksSorting;\n};\n\nexport type CatalogTrack = Track & {\n readonly __typename: 'CatalogTrack';\n readonly album: Album;\n readonly artist: Artist;\n readonly availableToStream: Scalars['Boolean']['output'];\n readonly cover: Scalars['Uri']['output'];\n readonly duration: Scalars['Int']['output'];\n readonly endlessPlay: TrackConnection;\n readonly featuredArtists: ArtistConnection;\n readonly genre: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly isrc: Scalars['String']['output'];\n readonly label: Scalars['String']['output'];\n readonly lyrics?: Maybe<Lyrics>;\n readonly playbackContext: Scalars['String']['output'];\n readonly releaseDate: Scalars['Date']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly similarTracks: TrackConnection;\n readonly title: Scalars['String']['output'];\n readonly trackRadio: TrackConnection;\n};\n\n\nexport type CatalogTrackCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type CatalogTrackEndlessPlayArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type CatalogTrackFeaturedArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type CatalogTrackSimilarTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type CatalogTrackTrackRadioArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type Chart = {\n readonly cover: Scalars['Uri']['output'];\n readonly description: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly shortTitle: Scalars['String']['output'];\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type ChartCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n/** A connection from an object to a list of objects of type `Chart`. */\nexport type ChartConnection = {\n readonly __typename: 'ChartConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<ChartEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<Chart>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\nexport enum ChartContentType {\n Albums = 'ALBUMS',\n Tracks = 'TRACKS'\n}\n\n/** An edge in a connection from an object to another object of type `Chart`. */\nexport type ChartEdge = {\n readonly __typename: 'ChartEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: Chart;\n};\n\nexport type Charts = {\n readonly __typename: 'Charts';\n readonly chart?: Maybe<Chart>;\n readonly charts: ChartConnection;\n};\n\n\nexport type ChartsChartArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type ChartsChartsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n contentType?: InputMaybe<ChartContentType>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ChartsLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'ChartsLayoutItemContent';\n readonly charts: ChartConnection;\n readonly pageItemId: Scalars['ID']['output'];\n};\n\n\nexport type ChartsLayoutItemContentChartsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport enum CombinedPlaylistsSorting {\n CreatedDate = 'CREATED_DATE',\n ModifiedDate = 'MODIFIED_DATE',\n Title = 'TITLE'\n}\n\nexport type CreateConcurrencyTicketResult = MutationResult & {\n readonly __typename: 'CreateConcurrencyTicketResult';\n readonly ok: Scalars['Boolean']['output'];\n readonly ticket: Scalars['String']['output'];\n};\n\nexport type CreatePlaylistInput = {\n readonly description?: InputMaybe<Scalars['String']['input']>;\n readonly title: Scalars['String']['input'];\n readonly trackIds?: InputMaybe<ReadonlyArray<Scalars['ID']['input']>>;\n readonly visibility?: InputMaybe<PlaylistVisibility>;\n};\n\nexport type CreatePlaylistResult = MutationResult & {\n readonly __typename: 'CreatePlaylistResult';\n readonly ok: Scalars['Boolean']['output'];\n readonly playlist: Playlist;\n};\n\nexport type DeletePlaylistResult = MutationResult & {\n readonly __typename: 'DeletePlaylistResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type DeviceSettings = {\n readonly __typename: 'DeviceSettings';\n readonly favoriteAlbumsFullSyncInHours: Scalars['Int']['output'];\n readonly favoriteArtistsFullSyncInHours: Scalars['Int']['output'];\n readonly favoriteTracksFullSyncInHours: Scalars['Int']['output'];\n readonly liveRadioHeartbeatInSeconds: Scalars['Int']['output'];\n readonly searchThrottlingInMilliseconds: Scalars['Int']['output'];\n};\n\nexport enum DisplayType {\n Static = 'STATIC',\n Sync = 'SYNC'\n}\n\nexport enum DuplicatesHandling {\n AllowDuplicates = 'ALLOW_DUPLICATES',\n CheckDuplicates = 'CHECK_DUPLICATES',\n SkipDuplicates = 'SKIP_DUPLICATES'\n}\n\nexport type EmptyBannerTarget = BannerTargetInterface & {\n readonly __typename: 'EmptyBannerTarget';\n readonly bannerId: Scalars['ID']['output'];\n};\n\nexport type ExternalBannerTarget = BannerTargetInterface & {\n readonly __typename: 'ExternalBannerTarget';\n readonly bannerId: Scalars['ID']['output'];\n readonly externalLink: Scalars['String']['output'];\n};\n\nexport type FavoriteAlbum = Album & Favorited & {\n readonly __typename: 'FavoriteAlbum';\n readonly artist: Artist;\n readonly available: Scalars['Boolean']['output'];\n readonly cover: Scalars['Uri']['output'];\n readonly duration: Scalars['Int']['output'];\n readonly favoritedAt: Scalars['DateTime']['output'];\n readonly featuredArtists: ArtistConnection;\n readonly genre: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly label: Scalars['String']['output'];\n readonly releaseDate: Scalars['Date']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly similarAlbums: AlbumConnection;\n readonly title: Scalars['String']['output'];\n readonly tracks: TrackConnection;\n readonly tracksCount: Scalars['Int']['output'];\n readonly type: AlbumType;\n readonly upc: Scalars['String']['output'];\n};\n\n\nexport type FavoriteAlbumCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type FavoriteAlbumFeaturedArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type FavoriteAlbumSimilarAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type FavoriteAlbumTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/** A connection from an object to a list of objects of type `FavoriteAlbum`. */\nexport type FavoriteAlbumConnection = {\n readonly __typename: 'FavoriteAlbumConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<FavoriteAlbumEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<FavoriteAlbum>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `FavoriteAlbum`. */\nexport type FavoriteAlbumEdge = {\n readonly __typename: 'FavoriteAlbumEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: FavoriteAlbum;\n};\n\nexport type FavoriteAlbumsDelta = {\n readonly __typename: 'FavoriteAlbumsDelta';\n readonly deltaToken: Scalars['String']['output'];\n readonly newAlbums: ReadonlyArray<FavoriteAlbum>;\n readonly removedAlbumIds: ReadonlyArray<Scalars['ID']['output']>;\n};\n\nexport type FavoriteAlbumsDeltaSync = {\n readonly __typename: 'FavoriteAlbumsDeltaSync';\n readonly delta: FavoriteAlbumsDelta;\n readonly deltaToken: Scalars['String']['output'];\n};\n\n\nexport type FavoriteAlbumsDeltaSyncDeltaArgs = {\n deltaToken: Scalars['String']['input'];\n};\n\nexport enum FavoriteAlbumsSorting {\n Alphabetically = 'ALPHABETICALLY',\n ArtistName = 'ARTIST_NAME',\n LatestAdded = 'LATEST_ADDED',\n ReleaseDate = 'RELEASE_DATE'\n}\n\nexport type FavoriteArtist = Artist & Favorited & {\n readonly __typename: 'FavoriteArtist';\n readonly albums: AlbumConnection;\n readonly artistRadio: TrackConnection;\n readonly cover: Scalars['Uri']['output'];\n readonly favoritedAt: Scalars['DateTime']['output'];\n readonly id: Scalars['ID']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly similarArtists: ArtistConnection;\n readonly title: Scalars['String']['output'];\n readonly tracks: TrackConnection;\n};\n\n\nexport type FavoriteArtistAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n featuredIn?: Scalars['Boolean']['input'];\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: AlbumsSorting;\n types?: ReadonlyArray<AlbumTypeFilter>;\n};\n\n\nexport type FavoriteArtistArtistRadioArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type FavoriteArtistCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type FavoriteArtistSimilarArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type FavoriteArtistTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: TracksSorting;\n};\n\n/** A connection from an object to a list of objects of type `FavoriteArtist`. */\nexport type FavoriteArtistConnection = {\n readonly __typename: 'FavoriteArtistConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<FavoriteArtistEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<FavoriteArtist>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `FavoriteArtist`. */\nexport type FavoriteArtistEdge = {\n readonly __typename: 'FavoriteArtistEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: FavoriteArtist;\n};\n\nexport type FavoriteArtistsDelta = {\n readonly __typename: 'FavoriteArtistsDelta';\n readonly deltaToken: Scalars['String']['output'];\n readonly newArtists: ReadonlyArray<FavoriteArtist>;\n readonly removedArtistIds: ReadonlyArray<Scalars['ID']['output']>;\n};\n\nexport type FavoriteArtistsDeltaSync = {\n readonly __typename: 'FavoriteArtistsDeltaSync';\n readonly delta: FavoriteArtistsDelta;\n readonly deltaToken: Scalars['String']['output'];\n};\n\n\nexport type FavoriteArtistsDeltaSyncDeltaArgs = {\n deltaToken: Scalars['String']['input'];\n};\n\nexport enum FavoriteArtistsSorting {\n Alphabetically = 'ALPHABETICALLY',\n LatestAdded = 'LATEST_ADDED'\n}\n\nexport enum FavoriteContentType {\n Album = 'ALBUM',\n Artist = 'ARTIST',\n Playlist = 'PLAYLIST',\n Track = 'TRACK'\n}\n\nexport type FavoritePlaylist = Favorited & Playlist & {\n readonly __typename: 'FavoritePlaylist';\n readonly cover: Scalars['Uri']['output'];\n readonly createdAt: Scalars['DateTime']['output'];\n readonly description: Scalars['String']['output'];\n readonly duration: Scalars['Int']['output'];\n readonly favoritedAt: Scalars['DateTime']['output'];\n readonly followersCount: Scalars['Int']['output'];\n readonly id: Scalars['ID']['output'];\n readonly isOwned: Scalars['Boolean']['output'];\n readonly modifiedAt: Scalars['DateTime']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly title: Scalars['String']['output'];\n readonly tracks: PlaylistTrackConnection;\n readonly tracksCount: Scalars['Int']['output'];\n readonly visibility: PlaylistVisibility;\n};\n\n\nexport type FavoritePlaylistCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type FavoritePlaylistTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n criterion?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: PlaylistTracksSorting;\n};\n\n/** A connection from an object to a list of objects of type `FavoritePlaylist`. */\nexport type FavoritePlaylistConnection = {\n readonly __typename: 'FavoritePlaylistConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<FavoritePlaylistEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<FavoritePlaylist>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `FavoritePlaylist`. */\nexport type FavoritePlaylistEdge = {\n readonly __typename: 'FavoritePlaylistEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: FavoritePlaylist;\n};\n\nexport enum FavoritePlaylistsSorting {\n LatestAdded = 'LATEST_ADDED'\n}\n\nexport type FavoriteTrack = Favorited & Track & {\n readonly __typename: 'FavoriteTrack';\n readonly album: Album;\n readonly artist: Artist;\n readonly availableToStream: Scalars['Boolean']['output'];\n readonly cover: Scalars['Uri']['output'];\n readonly duration: Scalars['Int']['output'];\n readonly endlessPlay: TrackConnection;\n readonly favoritedAt: Scalars['DateTime']['output'];\n readonly featuredArtists: ArtistConnection;\n readonly genre: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly isrc: Scalars['String']['output'];\n readonly label: Scalars['String']['output'];\n readonly lyrics?: Maybe<Lyrics>;\n readonly playbackContext: Scalars['String']['output'];\n readonly releaseDate: Scalars['Date']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly similarTracks: TrackConnection;\n readonly title: Scalars['String']['output'];\n readonly trackRadio: TrackConnection;\n};\n\n\nexport type FavoriteTrackCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type FavoriteTrackEndlessPlayArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type FavoriteTrackFeaturedArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type FavoriteTrackSimilarTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type FavoriteTrackTrackRadioArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/** A connection from an object to a list of objects of type `FavoriteTrack`. */\nexport type FavoriteTrackConnection = {\n readonly __typename: 'FavoriteTrackConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<FavoriteTrackEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<FavoriteTrack>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `FavoriteTrack`. */\nexport type FavoriteTrackEdge = {\n readonly __typename: 'FavoriteTrackEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: FavoriteTrack;\n};\n\nexport type FavoriteTracksDelta = {\n readonly __typename: 'FavoriteTracksDelta';\n readonly deltaToken: Scalars['String']['output'];\n readonly newTracks: ReadonlyArray<FavoriteTrack>;\n readonly removedTrackIds: ReadonlyArray<Scalars['ID']['output']>;\n};\n\nexport type FavoriteTracksDeltaSync = {\n readonly __typename: 'FavoriteTracksDeltaSync';\n readonly delta: FavoriteTracksDelta;\n readonly deltaToken: Scalars['String']['output'];\n};\n\n\nexport type FavoriteTracksDeltaSyncDeltaArgs = {\n deltaToken: Scalars['String']['input'];\n};\n\nexport enum FavoriteTracksSorting {\n Alphabetically = 'ALPHABETICALLY',\n ArtistName = 'ARTIST_NAME',\n LatestAdded = 'LATEST_ADDED',\n ReleaseDate = 'RELEASE_DATE'\n}\n\nexport type Favorited = {\n readonly favoritedAt: Scalars['DateTime']['output'];\n};\n\nexport type FavoritesMutation = {\n readonly __typename: 'FavoritesMutation';\n readonly addAlbum: AddFavoriteAlbumResult;\n readonly addArtist: AddFavoriteArtistResult;\n readonly addPlaylist: AddFavoritePlaylistResult;\n readonly addTrack: AddFavoriteTrackResult;\n readonly removeAlbum: RemoveFavoriteAlbumResult;\n readonly removeArtist: RemoveFavoriteArtistResult;\n readonly removePlaylist: RemoveFavoritePlaylistResult;\n readonly removeTrack: RemoveFavoriteTrackResult;\n};\n\n\nexport type FavoritesMutationAddAlbumArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type FavoritesMutationAddArtistArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type FavoritesMutationAddPlaylistArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type FavoritesMutationAddTrackArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type FavoritesMutationRemoveAlbumArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type FavoritesMutationRemoveArtistArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type FavoritesMutationRemovePlaylistArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type FavoritesMutationRemoveTrackArgs = {\n id: Scalars['ID']['input'];\n};\n\nexport type FeedbackApplicationInfoInput = {\n readonly brand?: InputMaybe<Scalars['String']['input']>;\n readonly supportKey?: InputMaybe<Scalars['String']['input']>;\n readonly version?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport enum FeedbackCategory {\n Contents = 'CONTENTS',\n Function = 'FUNCTION',\n OtherThings = 'OTHER_THINGS',\n Stability = 'STABILITY'\n}\n\nexport type FeedbackDeviceInfoInput = {\n readonly brand?: InputMaybe<Scalars['String']['input']>;\n readonly model?: InputMaybe<Scalars['String']['input']>;\n readonly operatingSystem?: InputMaybe<FeedbackOperatingSystem>;\n readonly operatingSystemVersion?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport enum FeedbackOperatingSystem {\n Android = 'ANDROID',\n Apple = 'APPLE',\n Linux = 'LINUX',\n MacOs = 'MAC_OS',\n Unknown = 'UNKNOWN',\n Windows = 'WINDOWS'\n}\n\nexport type FeedbacksMutation = {\n readonly __typename: 'FeedbacksMutation';\n readonly send: SendFeedbackResult;\n};\n\n\nexport type FeedbacksMutationSendArgs = {\n feedback: SendFeedbackInput;\n};\n\nexport type Genre = {\n readonly __typename: 'Genre';\n readonly cover: Scalars['Uri']['output'];\n readonly id: Scalars['ID']['output'];\n readonly popularAlbums: AlbumConnection;\n readonly popularTracks: TrackConnection;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type GenreCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type GenrePopularAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type GenrePopularTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/** A connection from an object to a list of objects of type `Genre`. */\nexport type GenreConnection = {\n readonly __typename: 'GenreConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<GenreEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<Genre>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `Genre`. */\nexport type GenreEdge = {\n readonly __typename: 'GenreEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: Genre;\n};\n\nexport type Genres = {\n readonly __typename: 'Genres';\n readonly genre?: Maybe<Genre>;\n readonly genres: GenreConnection;\n};\n\n\nexport type GenresGenreArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type GenresGenresArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type GenresLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'GenresLayoutItemContent';\n readonly genres: GenreConnection;\n readonly pageItemId: Scalars['ID']['output'];\n};\n\n\nexport type GenresLayoutItemContentGenresArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport enum HeartbeatType {\n Live = 'LIVE',\n Start = 'START',\n Stop = 'STOP'\n}\n\nexport type IsFavorite = {\n readonly __typename: 'IsFavorite';\n readonly favoritedAt?: Maybe<Scalars['DateTime']['output']>;\n readonly isFavorite: Scalars['Boolean']['output'];\n};\n\nexport type Layout = {\n readonly __typename: 'Layout';\n readonly groups: LayoutItemGroupConnection;\n readonly id: Scalars['ID']['output'];\n readonly item?: Maybe<LayoutItem>;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type LayoutGroupsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type LayoutItemArgs = {\n id: Scalars['ID']['input'];\n};\n\nexport type LayoutItem = {\n readonly __typename: 'LayoutItem';\n readonly content?: Maybe<LayoutItemContentInterface>;\n readonly displayType?: Maybe<PageItemDisplayType>;\n readonly id: Scalars['ID']['output'];\n readonly refreshFrequency?: Maybe<Scalars['Int']['output']>;\n readonly title: Scalars['String']['output'];\n};\n\n/** A connection from an object to a list of objects of type `LayoutItem`. */\nexport type LayoutItemConnection = {\n readonly __typename: 'LayoutItemConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<LayoutItemEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<LayoutItem>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type LayoutItemContentInterface = {\n readonly pageItemId: Scalars['ID']['output'];\n};\n\n/** An edge in a connection from an object to another object of type `LayoutItem`. */\nexport type LayoutItemEdge = {\n readonly __typename: 'LayoutItemEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: LayoutItem;\n};\n\nexport type LayoutItemGroup = {\n readonly __typename: 'LayoutItemGroup';\n readonly items: LayoutItemConnection;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type LayoutItemGroupItemsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/** A connection from an object to a list of objects of type `LayoutItemGroup`. */\nexport type LayoutItemGroupConnection = {\n readonly __typename: 'LayoutItemGroupConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<LayoutItemGroupEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<LayoutItemGroup>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `LayoutItemGroup`. */\nexport type LayoutItemGroupEdge = {\n readonly __typename: 'LayoutItemGroupEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: LayoutItemGroup;\n};\n\nexport type LayoutPageBannerTarget = BannerTargetInterface & {\n readonly __typename: 'LayoutPageBannerTarget';\n readonly bannerId: Scalars['ID']['output'];\n readonly page?: Maybe<Layout>;\n};\n\nexport type LiveRadio = {\n readonly __typename: 'LiveRadio';\n readonly category: LiveRadioCategory;\n readonly cover: Scalars['Uri']['output'];\n readonly description: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly playbackContext: Scalars['String']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly stream: Scalars['Uri']['output'];\n /** @deprecated use single 'string' instead. */\n readonly streams: ReadonlyArray<LiveRadioStream>;\n readonly title: Scalars['String']['output'];\n readonly tracks: LiveRadioTracks;\n};\n\n\nexport type LiveRadioCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport type LiveRadioBannerTarget = BannerTargetInterface & {\n readonly __typename: 'LiveRadioBannerTarget';\n readonly bannerId: Scalars['ID']['output'];\n readonly liveRadio?: Maybe<LiveRadio>;\n};\n\nexport type LiveRadioCategoriesLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'LiveRadioCategoriesLayoutItemContent';\n readonly liveRadioCategories: LiveRadioCategoryConnection;\n readonly pageItemId: Scalars['ID']['output'];\n};\n\n\nexport type LiveRadioCategoriesLayoutItemContentLiveRadioCategoriesArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type LiveRadioCategory = {\n readonly __typename: 'LiveRadioCategory';\n readonly cover: Scalars['Uri']['output'];\n readonly description: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly radios: LiveRadioConnection;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type LiveRadioCategoryCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type LiveRadioCategoryRadiosArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/** A connection from an object to a list of objects of type `LiveRadioCategory`. */\nexport type LiveRadioCategoryConnection = {\n readonly __typename: 'LiveRadioCategoryConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<LiveRadioCategoryEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<LiveRadioCategory>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `LiveRadioCategory`. */\nexport type LiveRadioCategoryEdge = {\n readonly __typename: 'LiveRadioCategoryEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: LiveRadioCategory;\n};\n\n/** A connection from an object to a list of objects of type `LiveRadio`. */\nexport type LiveRadioConnection = {\n readonly __typename: 'LiveRadioConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<LiveRadioEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<LiveRadio>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `LiveRadio`. */\nexport type LiveRadioEdge = {\n readonly __typename: 'LiveRadioEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: LiveRadio;\n};\n\nexport type LiveRadioHeartbeatResult = MutationResult & {\n readonly __typename: 'LiveRadioHeartbeatResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type LiveRadioStream = {\n readonly __typename: 'LiveRadioStream';\n readonly protocol: LiveRadioStreamingProtocol;\n readonly stream: Scalars['Uri']['output'];\n};\n\nexport enum LiveRadioStreamingProtocol {\n Hls = 'HLS',\n Mp_3 = 'MP_3'\n}\n\nexport type LiveRadioTracks = {\n readonly __typename: 'LiveRadioTracks';\n readonly nowPlaying?: Maybe<Track>;\n readonly recentlyPlayed: TrackConnection;\n readonly supportsNowPlaying: Scalars['Boolean']['output'];\n};\n\n\nexport type LiveRadioTracksRecentlyPlayedArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type LiveRadios = {\n readonly __typename: 'LiveRadios';\n readonly categories: LiveRadioCategoryConnection;\n readonly category?: Maybe<LiveRadioCategory>;\n readonly radio?: Maybe<LiveRadio>;\n};\n\n\nexport type LiveRadiosCategoriesArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type LiveRadiosCategoryArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type LiveRadiosRadioArgs = {\n id: Scalars['ID']['input'];\n};\n\nexport type LiveRadiosLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'LiveRadiosLayoutItemContent';\n readonly liveRadios: LiveRadioConnection;\n readonly pageItemId: Scalars['ID']['output'];\n};\n\n\nexport type LiveRadiosLayoutItemContentLiveRadiosArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type LiveRadiosMutation = {\n readonly __typename: 'LiveRadiosMutation';\n readonly reportHeartbeat: LiveRadioHeartbeatResult;\n};\n\n\nexport type LiveRadiosMutationReportHeartbeatArgs = {\n heartbeat: ReportLiveRadioHeartbeatInput;\n};\n\nexport type LrcItem = {\n readonly __typename: 'LrcItem';\n readonly durationInMs?: Maybe<Scalars['Int']['output']>;\n readonly line: Scalars['String']['output'];\n readonly startInMs?: Maybe<Scalars['Int']['output']>;\n};\n\n/** A connection from an object to a list of objects of type `LrcItem`. */\nexport type LrcItemConnection = {\n readonly __typename: 'LrcItemConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<LrcItemEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<LrcItem>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `LrcItem`. */\nexport type LrcItemEdge = {\n readonly __typename: 'LrcItemEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: LrcItem;\n};\n\nexport type Lyrics = {\n readonly __typename: 'Lyrics';\n readonly credits: LyricsCredits;\n readonly id: Scalars['ID']['output'];\n readonly lrc: LrcItemConnection;\n readonly synchronizationType: SynchronizationType;\n};\n\n\nexport type LyricsLrcArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type LyricsCredits = {\n readonly __typename: 'LyricsCredits';\n readonly provider?: Maybe<Scalars['String']['output']>;\n readonly publisher?: Maybe<Scalars['String']['output']>;\n readonly writer?: Maybe<Scalars['String']['output']>;\n};\n\nexport type LyricsMutation = {\n readonly __typename: 'LyricsMutation';\n readonly reportLyricsDisplay: ReportLyricsDisplayResult;\n};\n\n\nexport type LyricsMutationReportLyricsDisplayArgs = {\n report: ReportLyricsDisplayInput;\n};\n\nexport type MarkNotificationsAsSeenResult = MutationResult & {\n readonly __typename: 'MarkNotificationsAsSeenResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type Me = {\n readonly __typename: 'Me';\n readonly deltaSync: MyDeltaSynchronizations;\n readonly favorites: MyFavorites;\n readonly history: MyHistory;\n readonly notifications: MyNotifications;\n readonly playlists: MyPlaylists;\n readonly recommendations: MyRecommendations;\n readonly user: User;\n};\n\nexport type MixRadio = {\n readonly __typename: 'MixRadio';\n readonly cover: Scalars['Uri']['output'];\n readonly id: Scalars['ID']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly title: Scalars['String']['output'];\n readonly tracks: TrackConnection;\n};\n\n\nexport type MixRadioCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type MixRadioTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type MixRadioBannerTarget = BannerTargetInterface & {\n readonly __typename: 'MixRadioBannerTarget';\n readonly bannerId: Scalars['ID']['output'];\n readonly mixRadio?: Maybe<MixRadio>;\n};\n\nexport type MixRadioCategory = {\n readonly __typename: 'MixRadioCategory';\n readonly cover: Scalars['Uri']['output'];\n readonly id: Scalars['ID']['output'];\n readonly radios: MixRadioConnection;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type MixRadioCategoryCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type MixRadioCategoryRadiosArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type MixRadioCategoryBannerTarget = BannerTargetInterface & {\n readonly __typename: 'MixRadioCategoryBannerTarget';\n readonly bannerId: Scalars['ID']['output'];\n readonly mixRadioCategory?: Maybe<MixRadioCategory>;\n};\n\n/** A connection from an object to a list of objects of type `MixRadioCategory`. */\nexport type MixRadioCategoryConnection = {\n readonly __typename: 'MixRadioCategoryConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<MixRadioCategoryEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<MixRadioCategory>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `MixRadioCategory`. */\nexport type MixRadioCategoryEdge = {\n readonly __typename: 'MixRadioCategoryEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: MixRadioCategory;\n};\n\n/** A connection from an object to a list of objects of type `MixRadio`. */\nexport type MixRadioConnection = {\n readonly __typename: 'MixRadioConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<MixRadioEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<MixRadio>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `MixRadio`. */\nexport type MixRadioEdge = {\n readonly __typename: 'MixRadioEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: MixRadio;\n};\n\nexport type MixRadios = {\n readonly __typename: 'MixRadios';\n readonly categories: MixRadioCategoryConnection;\n readonly category?: Maybe<MixRadioCategory>;\n readonly radio?: Maybe<MixRadio>;\n};\n\n\nexport type MixRadiosCategoriesArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type MixRadiosCategoryArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MixRadiosRadioArgs = {\n id: Scalars['ID']['input'];\n};\n\nexport type MixRadiosLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'MixRadiosLayoutItemContent';\n readonly mixRadios: MixRadioConnection;\n readonly pageItemId: Scalars['ID']['output'];\n};\n\n\nexport type MixRadiosLayoutItemContentMixRadiosArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type MixedContent = {\n readonly __typename: 'MixedContent';\n readonly content?: Maybe<UnionContent>;\n readonly cover: Scalars['Uri']['output'];\n readonly id?: Maybe<Scalars['ID']['output']>;\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n readonly type?: Maybe<MixedContentType>;\n};\n\n\nexport type MixedContentCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n/** A connection from an object to a list of objects of type `MixedContent`. */\nexport type MixedContentConnection = {\n readonly __typename: 'MixedContentConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<MixedContentEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<MixedContent>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `MixedContent`. */\nexport type MixedContentEdge = {\n readonly __typename: 'MixedContentEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: MixedContent;\n};\n\nexport type MixedContentLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'MixedContentLayoutItemContent';\n readonly mixedContents: MixedContentConnection;\n readonly pageItemId: Scalars['ID']['output'];\n};\n\n\nexport type MixedContentLayoutItemContentMixedContentsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport enum MixedContentType {\n Album = 'ALBUM',\n Artist = 'ARTIST',\n ArtistRadio = 'ARTIST_RADIO',\n FavoriteTracks = 'FAVORITE_TRACKS',\n Genre = 'GENRE',\n LiveRadio = 'LIVE_RADIO',\n LiveRadioCategory = 'LIVE_RADIO_CATEGORY',\n MixRadio = 'MIX_RADIO',\n PrivatePlaylist = 'PRIVATE_PLAYLIST',\n PublicPlaylist = 'PUBLIC_PLAYLIST',\n Recommendations = 'RECOMMENDATIONS',\n Track = 'TRACK',\n TrackChart = 'TRACK_CHART',\n TrackRadio = 'TRACK_RADIO',\n YourHistory = 'YOUR_HISTORY',\n YourMixes = 'YOUR_MIXES'\n}\n\nexport type MixedSearchResult = {\n readonly cover: Scalars['Uri']['output'];\n readonly id: Scalars['ID']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type MixedSearchResultCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n/** A connection from an object to a list of objects of type `MixedSearchResult`. */\nexport type MixedSearchResultConnection = {\n readonly __typename: 'MixedSearchResultConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<MixedSearchResultEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<MixedSearchResult>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `MixedSearchResult`. */\nexport type MixedSearchResultEdge = {\n readonly __typename: 'MixedSearchResultEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: MixedSearchResult;\n};\n\nexport type ModifyPlaylistTrackInput = {\n readonly positionFrom?: InputMaybe<Scalars['Int']['input']>;\n readonly positionTo?: InputMaybe<Scalars['Int']['input']>;\n readonly trackId?: InputMaybe<Scalars['ID']['input']>;\n readonly type: TrackModificationType;\n};\n\nexport type ModifyPlaylistTracksResult = MutationResult & {\n readonly __typename: 'ModifyPlaylistTracksResult';\n readonly ok: Scalars['Boolean']['output'];\n readonly playlist: Playlist;\n};\n\nexport type MusicPlaylist = Playlist & {\n readonly __typename: 'MusicPlaylist';\n readonly cover: Scalars['Uri']['output'];\n readonly createdAt: Scalars['DateTime']['output'];\n readonly description: Scalars['String']['output'];\n readonly duration: Scalars['Int']['output'];\n readonly followersCount: Scalars['Int']['output'];\n readonly id: Scalars['ID']['output'];\n readonly isOwned: Scalars['Boolean']['output'];\n readonly modifiedAt: Scalars['DateTime']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly title: Scalars['String']['output'];\n readonly tracks: PlaylistTrackConnection;\n readonly tracksCount: Scalars['Int']['output'];\n readonly visibility: PlaylistVisibility;\n};\n\n\nexport type MusicPlaylistCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type MusicPlaylistTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n criterion?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: PlaylistTracksSorting;\n};\n\nexport type MutationResult = {\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type Mutations = {\n readonly __typename: 'Mutations';\n readonly favorites: FavoritesMutation;\n readonly feedbacks: FeedbacksMutation;\n readonly liveRadios: LiveRadiosMutation;\n readonly lyrics: LyricsMutation;\n readonly notifications: NotificationsMutation;\n readonly playbackConcurrency: PlaybackConcurrencyMutation;\n readonly playlists: PlaylistsMutation;\n readonly profiles: ProfilesMutation;\n readonly reportPlayback: ReportPlaybackResult;\n};\n\n\nexport type MutationsReportPlaybackArgs = {\n report: ReportPlaybackInput;\n};\n\nexport type MyDeltaSynchronizations = {\n readonly __typename: 'MyDeltaSynchronizations';\n readonly favoriteAlbums: FavoriteAlbumsDeltaSync;\n readonly favoriteArtists: FavoriteArtistsDeltaSync;\n readonly favoriteTracks: FavoriteTracksDeltaSync;\n};\n\nexport type MyFavorites = {\n readonly __typename: 'MyFavorites';\n readonly albums: FavoriteAlbumConnection;\n readonly artists: FavoriteArtistConnection;\n readonly isFavorite?: Maybe<IsFavorite>;\n readonly playlists: FavoritePlaylistConnection;\n readonly tracks: FavoriteTrackConnection;\n};\n\n\nexport type MyFavoritesAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n criterion?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: FavoriteAlbumsSorting;\n};\n\n\nexport type MyFavoritesArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n criterion?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: FavoriteArtistsSorting;\n};\n\n\nexport type MyFavoritesIsFavoriteArgs = {\n id: Scalars['ID']['input'];\n type: FavoriteContentType;\n};\n\n\nexport type MyFavoritesPlaylistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: FavoritePlaylistsSorting;\n};\n\n\nexport type MyFavoritesTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n criterion?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: FavoriteTracksSorting;\n};\n\nexport type MyHistory = {\n readonly __typename: 'MyHistory';\n readonly recentContexts: MixedContentConnection;\n readonly recentTracks: TrackConnection;\n readonly recentlyAdded: MixedContentConnection;\n};\n\n\nexport type MyHistoryRecentContextsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type MyHistoryRecentTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type MyHistoryRecentlyAddedArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type MyNotifications = {\n readonly __typename: 'MyNotifications';\n readonly available: AvailableNotifications;\n readonly notSeenCount: Scalars['Int']['output'];\n};\n\nexport type MyPlaylists = {\n readonly __typename: 'MyPlaylists';\n readonly combinedPlaylist?: Maybe<Playlist>;\n readonly combinedPlaylists: PlaylistConnection;\n readonly ownPlaylists: PlaylistConnection;\n};\n\n\nexport type MyPlaylistsCombinedPlaylistArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MyPlaylistsCombinedPlaylistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n criterion?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n isOwned?: InputMaybe<Scalars['Boolean']['input']>;\n orderBy?: CombinedPlaylistsSorting;\n};\n\n\nexport type MyPlaylistsOwnPlaylistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: OwnPlaylistsSorting;\n};\n\nexport type MyProfiles = {\n readonly __typename: 'MyProfiles';\n readonly profiles?: Maybe<ProfileConnection>;\n readonly settings: ProfilesSettings;\n};\n\n\nexport type MyProfilesProfilesArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type MyRecommendations = {\n readonly __typename: 'MyRecommendations';\n readonly recommendation?: Maybe<Recommendation>;\n readonly recommendations: RecommendationConnection;\n};\n\n\nexport type MyRecommendationsRecommendationArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MyRecommendationsRecommendationsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n mode?: RecommendationMode;\n};\n\nexport type NameValue = {\n readonly __typename: 'NameValue';\n readonly name: Scalars['String']['output'];\n readonly value: Scalars['String']['output'];\n};\n\nexport type NameValueStatisticsItem = StatisticsItem & {\n readonly __typename: 'NameValueStatisticsItem';\n readonly cover: Scalars['Uri']['output'];\n readonly items: ReadonlyArray<NameValue>;\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type NameValueStatisticsItemCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport type Notification = {\n readonly __typename: 'Notification';\n readonly availableBegin?: Maybe<Scalars['DateTime']['output']>;\n readonly availableEnd?: Maybe<Scalars['DateTime']['output']>;\n readonly contextId?: Maybe<Scalars['ID']['output']>;\n readonly cover: Scalars['Uri']['output'];\n readonly eligibilityReasons: ReadonlyArray<Scalars['String']['output']>;\n readonly eventKey?: Maybe<Scalars['String']['output']>;\n readonly id: Scalars['ID']['output'];\n readonly seenAt?: Maybe<Scalars['DateTime']['output']>;\n readonly subTitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n readonly type?: Maybe<NotificationType>;\n};\n\n\nexport type NotificationCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n/** A connection from an object to a list of objects of type `Notification`. */\nexport type NotificationConnection = {\n readonly __typename: 'NotificationConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<NotificationEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<Notification>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `Notification`. */\nexport type NotificationEdge = {\n readonly __typename: 'NotificationEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: Notification;\n};\n\nexport enum NotificationType {\n Album = 'ALBUM',\n Artist = 'ARTIST',\n PublicPlaylist = 'PUBLIC_PLAYLIST',\n Radio = 'RADIO',\n RecommendedAlbums = 'RECOMMENDED_ALBUMS',\n RecommendedArtists = 'RECOMMENDED_ARTISTS',\n RecommendedPlaylists = 'RECOMMENDED_PLAYLISTS',\n RecommendedTracks = 'RECOMMENDED_TRACKS'\n}\n\nexport type NotificationsMutation = {\n readonly __typename: 'NotificationsMutation';\n readonly markAsSeen: MarkNotificationsAsSeenResult;\n};\n\n\nexport type NotificationsMutationMarkAsSeenArgs = {\n notificationsState: Scalars['String']['input'];\n};\n\nexport enum OwnPlaylistsSorting {\n CreatedDate = 'CREATED_DATE',\n ModifiedDate = 'MODIFIED_DATE',\n Title = 'TITLE'\n}\n\n/** Information about pagination in a connection. */\nexport type PageInfo = {\n readonly __typename: 'PageInfo';\n /** When paginating forwards, the cursor to continue. */\n readonly endCursor?: Maybe<Scalars['String']['output']>;\n /** When paginating forwards, are there more items? */\n readonly hasNextPage: Scalars['Boolean']['output'];\n /** When paginating backwards, are there more items? */\n readonly hasPreviousPage: Scalars['Boolean']['output'];\n /** When paginating backwards, the cursor to continue. */\n readonly startCursor?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum PageItemDisplayType {\n Grid = 'GRID',\n LargeScroller = 'LARGE_SCROLLER',\n LargeSingle = 'LARGE_SINGLE',\n List = 'LIST',\n NonNumberedList = 'NON_NUMBERED_LIST',\n PromoSingle = 'PROMO_SINGLE',\n Scroller = 'SCROLLER',\n Single = 'SINGLE'\n}\n\nexport type Playback = {\n readonly __typename: 'Playback';\n readonly full?: Maybe<Scalars['Uri']['output']>;\n readonly sample?: Maybe<Scalars['Uri']['output']>;\n};\n\n\nexport type PlaybackFullArgs = {\n quality?: StreamQuality;\n};\n\nexport type PlaybackConcurrencyMutation = {\n readonly __typename: 'PlaybackConcurrencyMutation';\n /** Client must validate the playback ticket issued on playback start. The client must validate the ticket at least on each track start. It is also allowed to the polling every 10-30 seconds to check the ticket. If the ticket is invalid, the client must show the user a concurrency message telling that playback has been started on another device. Use should have an option to continue on the current device. In such case, a new ticket should be requested and playback can proceed. */\n readonly canPlay: CanPlayConcurrentlyResult;\n /** Client must request a playback ticket every time user starts playback. Once the ticket is issued to the client, all other tickets are invalidated. Therefore it is important to request a ticket when user manually started playback keep it while the user has an active stream. If the ticket is requested too often, e.g. on each track change, the device may never release playback control. */\n readonly createTicket: CreateConcurrencyTicketResult;\n};\n\n\nexport type PlaybackConcurrencyMutationCanPlayArgs = {\n ticket: Scalars['String']['input'];\n};\n\nexport type Playlist = {\n readonly cover: Scalars['Uri']['output'];\n readonly createdAt: Scalars['DateTime']['output'];\n readonly description: Scalars['String']['output'];\n readonly duration: Scalars['Int']['output'];\n readonly followersCount: Scalars['Int']['output'];\n readonly id: Scalars['ID']['output'];\n readonly isOwned: Scalars['Boolean']['output'];\n readonly modifiedAt: Scalars['DateTime']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly title: Scalars['String']['output'];\n readonly tracks: PlaylistTrackConnection;\n readonly tracksCount: Scalars['Int']['output'];\n readonly visibility: PlaylistVisibility;\n};\n\n\nexport type PlaylistCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type PlaylistTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n criterion?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n orderBy?: PlaylistTracksSorting;\n};\n\nexport type PlaylistBannerTarget = BannerTargetInterface & {\n readonly __typename: 'PlaylistBannerTarget';\n readonly bannerId: Scalars['ID']['output'];\n readonly playlist?: Maybe<Playlist>;\n};\n\nexport type PlaylistCategories = {\n readonly __typename: 'PlaylistCategories';\n readonly playlistCategories: PlaylistCategoryConnection;\n readonly playlistCategory?: Maybe<PlaylistCategory>;\n};\n\n\nexport type PlaylistCategoriesPlaylistCategoriesArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type PlaylistCategoriesPlaylistCategoryArgs = {\n id: Scalars['ID']['input'];\n};\n\nexport type PlaylistCategoriesLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'PlaylistCategoriesLayoutItemContent';\n readonly pageItemId: Scalars['ID']['output'];\n readonly playlistCategories: PlaylistCategoryConnection;\n};\n\n\nexport type PlaylistCategoriesLayoutItemContentPlaylistCategoriesArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type PlaylistCategory = {\n readonly __typename: 'PlaylistCategory';\n readonly cover: Scalars['Uri']['output'];\n readonly id: Scalars['ID']['output'];\n readonly playlists: PlaylistConnection;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type PlaylistCategoryCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type PlaylistCategoryPlaylistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type PlaylistCategoryBannerTarget = BannerTargetInterface & {\n readonly __typename: 'PlaylistCategoryBannerTarget';\n readonly bannerId: Scalars['ID']['output'];\n readonly playlistCategory?: Maybe<PlaylistCategory>;\n};\n\n/** A connection from an object to a list of objects of type `PlaylistCategory`. */\nexport type PlaylistCategoryConnection = {\n readonly __typename: 'PlaylistCategoryConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<PlaylistCategoryEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<PlaylistCategory>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `PlaylistCategory`. */\nexport type PlaylistCategoryEdge = {\n readonly __typename: 'PlaylistCategoryEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: PlaylistCategory;\n};\n\n/** A connection from an object to a list of objects of type `Playlist`. */\nexport type PlaylistConnection = {\n readonly __typename: 'PlaylistConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<PlaylistEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<Playlist>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `Playlist`. */\nexport type PlaylistEdge = {\n readonly __typename: 'PlaylistEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: Playlist;\n};\n\nexport type PlaylistTrack = Positioned & Track & {\n readonly __typename: 'PlaylistTrack';\n readonly album: Album;\n readonly artist: Artist;\n readonly availableToStream: Scalars['Boolean']['output'];\n readonly cover: Scalars['Uri']['output'];\n readonly duration: Scalars['Int']['output'];\n readonly endlessPlay: TrackConnection;\n readonly featuredArtists: ArtistConnection;\n readonly genre: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly isrc: Scalars['String']['output'];\n readonly label: Scalars['String']['output'];\n readonly lyrics?: Maybe<Lyrics>;\n readonly playbackContext: Scalars['String']['output'];\n readonly position: Scalars['Int']['output'];\n readonly releaseDate: Scalars['Date']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly similarTracks: TrackConnection;\n readonly title: Scalars['String']['output'];\n readonly trackRadio: TrackConnection;\n};\n\n\nexport type PlaylistTrackCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type PlaylistTrackEndlessPlayArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type PlaylistTrackFeaturedArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type PlaylistTrackSimilarTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type PlaylistTrackTrackRadioArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/** A connection from an object to a list of objects of type `PlaylistTrack`. */\nexport type PlaylistTrackConnection = {\n readonly __typename: 'PlaylistTrackConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<PlaylistTrackEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<PlaylistTrack>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `PlaylistTrack`. */\nexport type PlaylistTrackEdge = {\n readonly __typename: 'PlaylistTrackEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: PlaylistTrack;\n};\n\nexport enum PlaylistTracksSorting {\n ArtistTitle = 'ARTIST_TITLE',\n ArtistTitleDesc = 'ARTIST_TITLE_DESC',\n LatestAdded = 'LATEST_ADDED',\n LatestAddedDesc = 'LATEST_ADDED_DESC',\n TrackPosition = 'TRACK_POSITION',\n TrackTitle = 'TRACK_TITLE',\n TrackTitleDesc = 'TRACK_TITLE_DESC'\n}\n\nexport enum PlaylistVisibility {\n Private = 'PRIVATE',\n Public = 'PUBLIC'\n}\n\nexport type Playlists = {\n readonly __typename: 'Playlists';\n readonly playlist?: Maybe<Playlist>;\n readonly playlistCategories: PlaylistCategories;\n readonly popular: PlaylistConnection;\n};\n\n\nexport type PlaylistsPlaylistArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type PlaylistsPopularArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type PlaylistsLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'PlaylistsLayoutItemContent';\n readonly pageItemId: Scalars['ID']['output'];\n readonly playlists: PlaylistConnection;\n};\n\n\nexport type PlaylistsLayoutItemContentPlaylistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/** The identifier of the playlist, tracks of which to add to the playlist. */\nexport type PlaylistsMutation = {\n readonly __typename: 'PlaylistsMutation';\n readonly addAlbum: AddTracksToPlaylistResult;\n readonly addChart: AddTracksToPlaylistResult;\n readonly addPlaylist: AddTracksToPlaylistResult;\n readonly addRecommendation: AddTracksToPlaylistResult;\n readonly addTracks: AddTracksToPlaylistResult;\n readonly create: CreatePlaylistResult;\n readonly delete: DeletePlaylistResult;\n readonly modifyTracks: ModifyPlaylistTracksResult;\n readonly update: UpdatePlaylistResult;\n};\n\n\n/** The identifier of the playlist, tracks of which to add to the playlist. */\nexport type PlaylistsMutationAddAlbumArgs = {\n albumId: Scalars['ID']['input'];\n duplicatesHandling?: DuplicatesHandling;\n id: Scalars['ID']['input'];\n};\n\n\n/** The identifier of the playlist, tracks of which to add to the playlist. */\nexport type PlaylistsMutationAddChartArgs = {\n chartId: Scalars['ID']['input'];\n duplicatesHandling?: DuplicatesHandling;\n id: Scalars['ID']['input'];\n};\n\n\n/** The identifier of the playlist, tracks of which to add to the playlist. */\nexport type PlaylistsMutationAddPlaylistArgs = {\n duplicatesHandling?: DuplicatesHandling;\n id: Scalars['ID']['input'];\n playlistId: Scalars['ID']['input'];\n};\n\n\n/** The identifier of the playlist, tracks of which to add to the playlist. */\nexport type PlaylistsMutationAddRecommendationArgs = {\n duplicatesHandling?: DuplicatesHandling;\n id: Scalars['ID']['input'];\n recommendationId: Scalars['ID']['input'];\n};\n\n\n/** The identifier of the playlist, tracks of which to add to the playlist. */\nexport type PlaylistsMutationAddTracksArgs = {\n duplicatesHandling?: DuplicatesHandling;\n id: Scalars['ID']['input'];\n trackIds: ReadonlyArray<InputMaybe<Scalars['ID']['input']>>;\n};\n\n\n/** The identifier of the playlist, tracks of which to add to the playlist. */\nexport type PlaylistsMutationCreateArgs = {\n playlist: CreatePlaylistInput;\n};\n\n\n/** The identifier of the playlist, tracks of which to add to the playlist. */\nexport type PlaylistsMutationDeleteArgs = {\n id: Scalars['ID']['input'];\n};\n\n\n/** The identifier of the playlist, tracks of which to add to the playlist. */\nexport type PlaylistsMutationModifyTracksArgs = {\n id: Scalars['ID']['input'];\n modifications: ReadonlyArray<InputMaybe<ModifyPlaylistTrackInput>>;\n};\n\n\n/** The identifier of the playlist, tracks of which to add to the playlist. */\nexport type PlaylistsMutationUpdateArgs = {\n id: Scalars['ID']['input'];\n playlist: UpdatePlaylistInput;\n};\n\nexport type PlaylistsRecommendation = Recommendation & {\n readonly __typename: 'PlaylistsRecommendation';\n readonly cover: Scalars['Uri']['output'];\n readonly description?: Maybe<Scalars['String']['output']>;\n readonly id: Scalars['ID']['output'];\n readonly playlists: PlaylistConnection;\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type PlaylistsRecommendationCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type PlaylistsRecommendationPlaylistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type Positioned = {\n readonly position: Scalars['Int']['output'];\n};\n\nexport type Profile = {\n readonly __typename: 'Profile';\n readonly color: Scalars['String']['output'];\n readonly current: Scalars['Boolean']['output'];\n readonly description?: Maybe<Scalars['String']['output']>;\n readonly id: Scalars['ID']['output'];\n readonly master: Scalars['Boolean']['output'];\n readonly title: Scalars['String']['output'];\n};\n\n/** A connection from an object to a list of objects of type `Profile`. */\nexport type ProfileConnection = {\n readonly __typename: 'ProfileConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<ProfileEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<Profile>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `Profile`. */\nexport type ProfileEdge = {\n readonly __typename: 'ProfileEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: Profile;\n};\n\n/** Modifies user profiles. Operations will throw specific errors if adding profile is not possible because of limit, or if user tries to remove master profile, etc */\nexport type ProfilesMutation = {\n readonly __typename: 'ProfilesMutation';\n readonly addProfile: AddProfileResult;\n readonly removeProfile: RemoveProfileResult;\n readonly updateProfile: UpdateProfileResult;\n};\n\n\n/** Modifies user profiles. Operations will throw specific errors if adding profile is not possible because of limit, or if user tries to remove master profile, etc */\nexport type ProfilesMutationAddProfileArgs = {\n profile: AddProfileInput;\n};\n\n\n/** Modifies user profiles. Operations will throw specific errors if adding profile is not possible because of limit, or if user tries to remove master profile, etc */\nexport type ProfilesMutationRemoveProfileArgs = {\n profileId: Scalars['ID']['input'];\n};\n\n\n/** Modifies user profiles. Operations will throw specific errors if adding profile is not possible because of limit, or if user tries to remove master profile, etc */\nexport type ProfilesMutationUpdateProfileArgs = {\n profile: UpdateProfileInput;\n profileId: Scalars['ID']['input'];\n};\n\nexport type ProfilesSettings = {\n readonly __typename: 'ProfilesSettings';\n readonly defaultColors: ReadonlyArray<Scalars['String']['output']>;\n readonly profilesNumberLimit: Scalars['Int']['output'];\n};\n\nexport type PromotedAlbumsGroup = {\n readonly __typename: 'PromotedAlbumsGroup';\n readonly albums: AlbumConnection;\n readonly id: Scalars['ID']['output'];\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type PromotedAlbumsGroupAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type PromotedPlaylistsGroup = {\n readonly __typename: 'PromotedPlaylistsGroup';\n readonly id: Scalars['ID']['output'];\n readonly playlists: PlaylistConnection;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type PromotedPlaylistsGroupPlaylistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type PromotedTracksGroup = {\n readonly __typename: 'PromotedTracksGroup';\n readonly id: Scalars['ID']['output'];\n readonly title: Scalars['String']['output'];\n readonly tracks: TrackConnection;\n};\n\n\nexport type PromotedTracksGroupTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type Promotions = {\n readonly __typename: 'Promotions';\n readonly promotedAlbumsGroup?: Maybe<PromotedAlbumsGroup>;\n readonly promotedPlaylistsGroup?: Maybe<PromotedPlaylistsGroup>;\n readonly promotedTracksGroup?: Maybe<PromotedTracksGroup>;\n};\n\n\nexport type PromotionsPromotedAlbumsGroupArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type PromotionsPromotedPlaylistsGroupArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type PromotionsPromotedTracksGroupArgs = {\n id: Scalars['ID']['input'];\n};\n\nexport type Queries = {\n readonly __typename: 'Queries';\n readonly authorize: Authorize;\n readonly catalog: Catalog;\n readonly charts: Charts;\n readonly layout?: Maybe<Layout>;\n readonly liveRadios: LiveRadios;\n readonly me: Me;\n readonly mixRadios: MixRadios;\n readonly playback: Playback;\n readonly playlists: Playlists;\n readonly promotions: Promotions;\n readonly search: Search;\n readonly system: System;\n};\n\n\nexport type QueriesLayoutArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueriesPlaybackArgs = {\n trackId: Scalars['ID']['input'];\n};\n\n\nexport type QueriesSearchArgs = {\n criterion: Scalars['String']['input'];\n};\n\nexport type Recommendation = {\n readonly cover: Scalars['Uri']['output'];\n readonly description?: Maybe<Scalars['String']['output']>;\n readonly id: Scalars['ID']['output'];\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type RecommendationCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n/** A connection from an object to a list of objects of type `Recommendation`. */\nexport type RecommendationConnection = {\n readonly __typename: 'RecommendationConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<RecommendationEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<Recommendation>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `Recommendation`. */\nexport type RecommendationEdge = {\n readonly __typename: 'RecommendationEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: Recommendation;\n};\n\nexport enum RecommendationMode {\n Discover = 'DISCOVER',\n History = 'HISTORY',\n Mixes = 'MIXES'\n}\n\nexport type RecommendationStatisticsLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'RecommendationStatisticsLayoutItemContent';\n readonly pageItemId: Scalars['ID']['output'];\n readonly statisticsItems: StatisticsItemConnection;\n};\n\n\nexport type RecommendationStatisticsLayoutItemContentStatisticsItemsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type RecommendationsLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'RecommendationsLayoutItemContent';\n readonly pageItemId: Scalars['ID']['output'];\n readonly recommendations: RecommendationConnection;\n};\n\n\nexport type RecommendationsLayoutItemContentRecommendationsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type RemoveFavoriteAlbumResult = MutationResult & {\n readonly __typename: 'RemoveFavoriteAlbumResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type RemoveFavoriteArtistResult = MutationResult & {\n readonly __typename: 'RemoveFavoriteArtistResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type RemoveFavoritePlaylistResult = MutationResult & {\n readonly __typename: 'RemoveFavoritePlaylistResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type RemoveFavoriteTrackResult = MutationResult & {\n readonly __typename: 'RemoveFavoriteTrackResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type RemoveProfileResult = MutationResult & {\n readonly __typename: 'RemoveProfileResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type ReportLiveRadioHeartbeatInput = {\n readonly playbackContext?: InputMaybe<Scalars['String']['input']>;\n readonly playbackSessionId: Scalars['String']['input'];\n readonly radioId: Scalars['ID']['input'];\n readonly streamingUrl: Scalars['String']['input'];\n readonly trackId?: InputMaybe<Scalars['ID']['input']>;\n readonly type?: InputMaybe<HeartbeatType>;\n};\n\nexport type ReportLyricsDisplayInput = {\n readonly displayType: DisplayType;\n readonly displayedAt: Scalars['DateTime']['input'];\n readonly lyricsId: Scalars['String']['input'];\n readonly trackId: Scalars['ID']['input'];\n};\n\nexport type ReportLyricsDisplayResult = MutationResult & {\n readonly __typename: 'ReportLyricsDisplayResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type ReportPlaybackInput = {\n readonly playbackContext?: InputMaybe<Scalars['String']['input']>;\n readonly playbackUrl: Scalars['String']['input'];\n readonly playedAt: Scalars['DateTime']['input'];\n readonly playedSeconds: Scalars['Int']['input'];\n};\n\nexport type ReportPlaybackResult = MutationResult & {\n readonly __typename: 'ReportPlaybackResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type Search = {\n readonly __typename: 'Search';\n readonly albums: AlbumConnection;\n readonly artists: ArtistConnection;\n readonly isrcSearch: TrackConnection;\n readonly mixed: MixedSearchResultConnection;\n readonly playlists: PlaylistConnection;\n readonly tracks: TrackConnection;\n readonly upcSearch: AlbumConnection;\n};\n\n\nexport type SearchAlbumsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type SearchArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type SearchIsrcSearchArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type SearchMixedArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type SearchPlaylistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type SearchTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type SearchUpcSearchArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type SendFeedbackInput = {\n readonly applicationInfo: FeedbackApplicationInfoInput;\n readonly category: FeedbackCategory;\n readonly deviceInfo: FeedbackDeviceInfoInput;\n readonly email?: InputMaybe<Scalars['String']['input']>;\n readonly text: Scalars['String']['input'];\n};\n\nexport type SendFeedbackResult = MutationResult & {\n readonly __typename: 'SendFeedbackResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type StatisticsItem = {\n readonly cover: Scalars['Uri']['output'];\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type StatisticsItemCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n/** A connection from an object to a list of objects of type `StatisticsItem`. */\nexport type StatisticsItemConnection = {\n readonly __typename: 'StatisticsItemConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<StatisticsItemEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<StatisticsItem>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `StatisticsItem`. */\nexport type StatisticsItemEdge = {\n readonly __typename: 'StatisticsItemEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: StatisticsItem;\n};\n\nexport enum StreamQuality {\n Flac_16 = 'FLAC_16',\n Flac_24 = 'FLAC_24',\n Kbps_48 = 'KBPS_48',\n Kbps_192 = 'KBPS_192',\n Kbps_320 = 'KBPS_320'\n}\n\nexport enum SynchronizationType {\n Lines = 'LINES',\n None = 'NONE'\n}\n\nexport type System = {\n readonly __typename: 'System';\n readonly deviceSettings: DeviceSettings;\n readonly urlTransform: UrlTransform;\n};\n\n\nexport type SystemUrlTransformArgs = {\n transform: UrlTransformInput;\n};\n\nexport type TextStatisticsItem = StatisticsItem & {\n readonly __typename: 'TextStatisticsItem';\n readonly cover: Scalars['Uri']['output'];\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly text?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n};\n\n\nexport type TextStatisticsItemCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport type Track = {\n readonly album: Album;\n readonly artist: Artist;\n readonly availableToStream: Scalars['Boolean']['output'];\n readonly cover: Scalars['Uri']['output'];\n readonly duration: Scalars['Int']['output'];\n readonly endlessPlay: TrackConnection;\n readonly featuredArtists: ArtistConnection;\n readonly genre: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly isrc: Scalars['String']['output'];\n readonly label: Scalars['String']['output'];\n readonly lyrics?: Maybe<Lyrics>;\n readonly playbackContext: Scalars['String']['output'];\n readonly releaseDate: Scalars['Date']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly similarTracks: TrackConnection;\n readonly title: Scalars['String']['output'];\n readonly trackRadio: TrackConnection;\n};\n\n\nexport type TrackCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type TrackEndlessPlayArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type TrackFeaturedArtistsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type TrackSimilarTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type TrackTrackRadioArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type TrackBannerTarget = BannerTargetInterface & {\n readonly __typename: 'TrackBannerTarget';\n readonly bannerId: Scalars['ID']['output'];\n readonly track?: Maybe<Track>;\n};\n\n/** A connection from an object to a list of objects of type `Track`. */\nexport type TrackConnection = {\n readonly __typename: 'TrackConnection';\n /** A list of all of the edges returned in the connection. */\n readonly edges?: Maybe<ReadonlyArray<Maybe<TrackEdge>>>;\n /** A list of all of the objects returned in the connection. This is a convenience field provided for quickly exploring the API; rather than querying for \"{ edges { node } }\" when no edge data is needed, this field can be used instead. Note that when clients like Relay need to fetch the \"cursor\" field on the edge to enable efficient pagination, this shortcut cannot be used, and the full \"{ edges { node } } \" version should be used instead. */\n readonly items?: Maybe<ReadonlyArray<Track>>;\n /** Information to aid in pagination. */\n readonly pageInfo: PageInfo;\n /** A count of the total number of objects in this connection, ignoring pagination. This allows a client to fetch the first five objects by passing \"5\" as the argument to `first`, then fetch the total count so it could display \"5 of 83\", for example. In cases where we employ infinite scrolling or don't have an exact count of entries, this field will return `null`. */\n readonly totalCount?: Maybe<Scalars['Int']['output']>;\n};\n\n/** An edge in a connection from an object to another object of type `Track`. */\nexport type TrackEdge = {\n readonly __typename: 'TrackEdge';\n /** A cursor for use in pagination */\n readonly cursor: Scalars['String']['output'];\n /** The item at the end of the edge */\n readonly node: Track;\n};\n\nexport type TrackMixedSearchResult = MixedSearchResult & {\n readonly __typename: 'TrackMixedSearchResult';\n readonly cover: Scalars['Uri']['output'];\n readonly id: Scalars['ID']['output'];\n readonly share: Scalars['Uri']['output'];\n readonly title: Scalars['String']['output'];\n readonly track: Track;\n};\n\n\nexport type TrackMixedSearchResultCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport enum TrackModificationType {\n Insert = 'INSERT',\n Move = 'MOVE',\n Remove = 'REMOVE'\n}\n\nexport type TrackStatisticsItem = StatisticsItem & {\n readonly __typename: 'TrackStatisticsItem';\n readonly cover: Scalars['Uri']['output'];\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n readonly track?: Maybe<Track>;\n};\n\n\nexport type TrackStatisticsItemCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\nexport type TracksChart = Chart & {\n readonly __typename: 'TracksChart';\n readonly cover: Scalars['Uri']['output'];\n readonly description: Scalars['String']['output'];\n readonly id: Scalars['ID']['output'];\n readonly shortTitle: Scalars['String']['output'];\n readonly title: Scalars['String']['output'];\n readonly tracks: TrackConnection;\n};\n\n\nexport type TracksChartCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type TracksChartTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type TracksLayoutItemContent = LayoutItemContentInterface & {\n readonly __typename: 'TracksLayoutItemContent';\n readonly pageItemId: Scalars['ID']['output'];\n readonly tracks: TrackConnection;\n};\n\n\nexport type TracksLayoutItemContentTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type TracksRecommendation = Recommendation & {\n readonly __typename: 'TracksRecommendation';\n readonly cover: Scalars['Uri']['output'];\n readonly description?: Maybe<Scalars['String']['output']>;\n readonly id: Scalars['ID']['output'];\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n readonly title: Scalars['String']['output'];\n readonly tracks: TrackConnection;\n};\n\n\nexport type TracksRecommendationCoverArgs = {\n size?: Scalars['Int']['input'];\n};\n\n\nexport type TracksRecommendationTracksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport enum TracksSorting {\n Alphabetically = 'ALPHABETICALLY',\n Newest = 'NEWEST',\n Popularity = 'POPULARITY'\n}\n\nexport type UnionContent = AlbumsChart | AlbumsRecommendation | CatalogAlbum | CatalogArtist | CatalogTrack | Genre | LiveRadio | LiveRadioCategory | MixRadio | MusicPlaylist | PlaylistsRecommendation | TracksChart | TracksRecommendation;\n\nexport type UpdatePlaylistInput = {\n readonly description?: InputMaybe<Scalars['String']['input']>;\n readonly title?: InputMaybe<Scalars['String']['input']>;\n readonly visibility?: InputMaybe<PlaylistVisibility>;\n};\n\nexport type UpdatePlaylistResult = MutationResult & {\n readonly __typename: 'UpdatePlaylistResult';\n readonly ok: Scalars['Boolean']['output'];\n readonly playlist: Playlist;\n};\n\nexport type UpdateProfileInput = {\n readonly color?: InputMaybe<Scalars['String']['input']>;\n readonly description?: InputMaybe<Scalars['String']['input']>;\n readonly title?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UpdateProfileResult = MutationResult & {\n readonly __typename: 'UpdateProfileResult';\n readonly ok: Scalars['Boolean']['output'];\n};\n\nexport type UrlTransform = {\n readonly __typename: 'UrlTransform';\n readonly url?: Maybe<Scalars['Uri']['output']>;\n};\n\nexport type UrlTransformInput = {\n readonly transformTo: UrlTransformVersion;\n readonly url: Scalars['Uri']['input'];\n};\n\nexport enum UrlTransformVersion {\n V_1 = 'V_1',\n V_2 = 'V_2'\n}\n\nexport type User = {\n readonly __typename: 'User';\n readonly id: Scalars['String']['output'];\n readonly profiles: MyProfiles;\n readonly trackingId: Scalars['String']['output'];\n readonly useInviteFlow: Scalars['Boolean']['output'];\n readonly username?: Maybe<Scalars['String']['output']>;\n};\n\nexport type AlbumLinkFragment_CatalogAlbum = { readonly __typename: 'CatalogAlbum', readonly id: string, readonly title: string };\n\nexport type AlbumLinkFragment_FavoriteAlbum = { readonly __typename: 'FavoriteAlbum', readonly id: string, readonly title: string };\n\nexport type AlbumLinkFragment = AlbumLinkFragment_CatalogAlbum | AlbumLinkFragment_FavoriteAlbum;\n\nexport type AlbumPreviewFragment_CatalogAlbum = { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type AlbumPreviewFragment_FavoriteAlbum = { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type AlbumPreviewFragment = AlbumPreviewFragment_CatalogAlbum | AlbumPreviewFragment_FavoriteAlbum;\n\nexport type AlbumPlayFragment_CatalogAlbum = { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type AlbumPlayFragment_FavoriteAlbum = { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type AlbumPlayFragment = AlbumPlayFragment_CatalogAlbum | AlbumPlayFragment_FavoriteAlbum;\n\nexport type AlbumPageFragment_CatalogAlbum = { readonly __typename: 'CatalogAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null }, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly id: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly id: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type AlbumPageFragment_FavoriteAlbum = { readonly __typename: 'FavoriteAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null }, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly id: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly id: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type AlbumPageFragment = AlbumPageFragment_CatalogAlbum | AlbumPageFragment_FavoriteAlbum;\n\nexport type AlbumHeaderSectionFragment_CatalogAlbum = { readonly __typename: 'CatalogAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type AlbumHeaderSectionFragment_FavoriteAlbum = { readonly __typename: 'FavoriteAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type AlbumHeaderSectionFragment = AlbumHeaderSectionFragment_CatalogAlbum | AlbumHeaderSectionFragment_FavoriteAlbum;\n\nexport type AlbumTracksSectionFragment_CatalogAlbum = { readonly __typename: 'CatalogAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } };\n\nexport type AlbumTracksSectionFragment_FavoriteAlbum = { readonly __typename: 'FavoriteAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } };\n\nexport type AlbumTracksSectionFragment = AlbumTracksSectionFragment_CatalogAlbum | AlbumTracksSectionFragment_FavoriteAlbum;\n\nexport type AlbumPreviewConnectionFragment = { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null };\n\nexport type FavouriteAlbumPreviewFragment = { readonly __typename: 'FavoriteAlbum', readonly favoritedAt: any, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type FavouriteAlbumPreviewConnectionFragment = { readonly __typename: 'FavoriteAlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoriteAlbum', readonly favoritedAt: any, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null };\n\nexport type AlbumArtistAlbumsLinkFragment_CatalogAlbum = { readonly __typename: 'CatalogAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly title: string } };\n\nexport type AlbumArtistAlbumsLinkFragment_FavoriteAlbum = { readonly __typename: 'FavoriteAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly title: string } };\n\nexport type AlbumArtistAlbumsLinkFragment = AlbumArtistAlbumsLinkFragment_CatalogAlbum | AlbumArtistAlbumsLinkFragment_FavoriteAlbum;\n\nexport type AlbumArtistAlbumsSectionFragment_CatalogAlbum = { readonly __typename: 'CatalogAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } };\n\nexport type AlbumArtistAlbumsSectionFragment_FavoriteAlbum = { readonly __typename: 'FavoriteAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } };\n\nexport type AlbumArtistAlbumsSectionFragment = AlbumArtistAlbumsSectionFragment_CatalogAlbum | AlbumArtistAlbumsSectionFragment_FavoriteAlbum;\n\nexport type AlbumArtistAlbumsPageFragment_CatalogAlbum = { readonly __typename: 'CatalogAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } };\n\nexport type AlbumArtistAlbumsPageFragment_FavoriteAlbum = { readonly __typename: 'FavoriteAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } };\n\nexport type AlbumArtistAlbumsPageFragment = AlbumArtistAlbumsPageFragment_CatalogAlbum | AlbumArtistAlbumsPageFragment_FavoriteAlbum;\n\nexport type ArtistLinkFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string };\n\nexport type ArtistLinkFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string };\n\nexport type ArtistLinkFragment = ArtistLinkFragment_CatalogArtist | ArtistLinkFragment_FavoriteArtist;\n\nexport type ArtistPreviewFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string };\n\nexport type ArtistPreviewFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string };\n\nexport type ArtistPreviewFragment = ArtistPreviewFragment_CatalogArtist | ArtistPreviewFragment_FavoriteArtist;\n\nexport type ArtistPageFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null }, readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistPageFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null }, readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistPageFragment = ArtistPageFragment_CatalogArtist | ArtistPageFragment_FavoriteArtist;\n\nexport type ArtistHeaderSectionFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string };\n\nexport type ArtistHeaderSectionFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string };\n\nexport type ArtistHeaderSectionFragment = ArtistHeaderSectionFragment_CatalogArtist | ArtistHeaderSectionFragment_FavoriteArtist;\n\nexport type ArtistPlayFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistPlayFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistPlayFragment = ArtistPlayFragment_CatalogArtist | ArtistPlayFragment_FavoriteArtist;\n\nexport type ArtistPreviewConnectionFragment = { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null };\n\nexport type FavoriteArtistPreviewFragment = { readonly __typename: 'FavoriteArtist', readonly favoritedAt: any, readonly cover: string, readonly share: string, readonly id: string, readonly title: string };\n\nexport type FavouriteArtistPreviewConnectionFragment = { readonly __typename: 'FavoriteArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoriteArtist', readonly favoritedAt: any, readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null };\n\nexport type ArtistAlbumsLinkFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string };\n\nexport type ArtistAlbumsLinkFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string };\n\nexport type ArtistAlbumsLinkFragment = ArtistAlbumsLinkFragment_CatalogArtist | ArtistAlbumsLinkFragment_FavoriteArtist;\n\nexport type ArtistAlbumsSectionFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistAlbumsSectionFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistAlbumsSectionFragment = ArtistAlbumsSectionFragment_CatalogArtist | ArtistAlbumsSectionFragment_FavoriteArtist;\n\nexport type ArtistAlbumsPageFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistAlbumsPageFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistAlbumsPageFragment = ArtistAlbumsPageFragment_CatalogArtist | ArtistAlbumsPageFragment_FavoriteArtist;\n\nexport type ArtistAppearsOnAlbumsSectionFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistAppearsOnAlbumsSectionFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistAppearsOnAlbumsSectionFragment = ArtistAppearsOnAlbumsSectionFragment_CatalogArtist | ArtistAppearsOnAlbumsSectionFragment_FavoriteArtist;\n\nexport type ArtistAppearsOnAlbumsPageFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string, readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistAppearsOnAlbumsPageFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string, readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistAppearsOnAlbumsPageFragment = ArtistAppearsOnAlbumsPageFragment_CatalogArtist | ArtistAppearsOnAlbumsPageFragment_FavoriteArtist;\n\nexport type ArtistRadioLinkFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string };\n\nexport type ArtistRadioLinkFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string };\n\nexport type ArtistRadioLinkFragment = ArtistRadioLinkFragment_CatalogArtist | ArtistRadioLinkFragment_FavoriteArtist;\n\nexport type ArtistRadioPreviewFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly cover: string, readonly id: string, readonly title: string };\n\nexport type ArtistRadioPreviewFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly id: string, readonly title: string };\n\nexport type ArtistRadioPreviewFragment = ArtistRadioPreviewFragment_CatalogArtist | ArtistRadioPreviewFragment_FavoriteArtist;\n\nexport type ArtistRadioPageFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly cover: string, readonly id: string, readonly title: string, readonly artistRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistRadioPageFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly id: string, readonly title: string, readonly artistRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistRadioPageFragment = ArtistRadioPageFragment_CatalogArtist | ArtistRadioPageFragment_FavoriteArtist;\n\nexport type ArtistRadioPlayFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly cover: string, readonly id: string, readonly title: string, readonly artistRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistRadioPlayFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly id: string, readonly title: string, readonly artistRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistRadioPlayFragment = ArtistRadioPlayFragment_CatalogArtist | ArtistRadioPlayFragment_FavoriteArtist;\n\nexport type ArtistSimilarArtistsSectionFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } };\n\nexport type ArtistSimilarArtistsSectionFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } };\n\nexport type ArtistSimilarArtistsSectionFragment = ArtistSimilarArtistsSectionFragment_CatalogArtist | ArtistSimilarArtistsSectionFragment_FavoriteArtist;\n\nexport type ArtistSimilarArtistsPageFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } };\n\nexport type ArtistSimilarArtistsPageFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } };\n\nexport type ArtistSimilarArtistsPageFragment = ArtistSimilarArtistsPageFragment_CatalogArtist | ArtistSimilarArtistsPageFragment_FavoriteArtist;\n\nexport type ArtistSinglesSectionFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistSinglesSectionFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistSinglesSectionFragment = ArtistSinglesSectionFragment_CatalogArtist | ArtistSinglesSectionFragment_FavoriteArtist;\n\nexport type ArtistSinglesPageFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string, readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistSinglesPageFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string, readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistSinglesPageFragment = ArtistSinglesPageFragment_CatalogArtist | ArtistSinglesPageFragment_FavoriteArtist;\n\nexport type ArtistPopularTracksSectionFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistPopularTracksSectionFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistPopularTracksSectionFragment = ArtistPopularTracksSectionFragment_CatalogArtist | ArtistPopularTracksSectionFragment_FavoriteArtist;\n\nexport type ArtistTracksPageFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistTracksPageFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistTracksPageFragment = ArtistTracksPageFragment_CatalogArtist | ArtistTracksPageFragment_FavoriteArtist;\n\nexport type ArtistTracksPlayFragment_CatalogArtist = { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistTracksPlayFragment_FavoriteArtist = { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ArtistTracksPlayFragment = ArtistTracksPlayFragment_CatalogArtist | ArtistTracksPlayFragment_FavoriteArtist;\n\nexport type BannerLinkFragment = { readonly __typename: 'Banner', readonly id: string, readonly name: string };\n\nexport type BannerPreviewFragment = { readonly __typename: 'Banner', readonly description: string, readonly cover: string, readonly id: string, readonly name: string, readonly target?: { readonly __typename: 'AlbumBannerTarget', readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistBannerTarget', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'EmptyBannerTarget' } | { readonly __typename: 'ExternalBannerTarget', readonly externalLink: string } | { readonly __typename: 'LayoutPageBannerTarget', readonly page?: { readonly __typename: 'Layout', readonly id: string, readonly title: string } | null } | { readonly __typename: 'LiveRadioBannerTarget', readonly liveRadio?: { readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } } | null } | { readonly __typename: 'MixRadioBannerTarget', readonly mixRadio?: { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'MixRadioCategoryBannerTarget', readonly mixRadioCategory?: { readonly __typename: 'MixRadioCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistBannerTarget', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistCategoryBannerTarget', readonly playlistCategory?: { readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'TrackBannerTarget', readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | null };\n\nexport type BannerPreviewConnectionFragment = { readonly __typename: 'BannerConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'Banner', readonly description: string, readonly cover: string, readonly id: string, readonly name: string, readonly target?: { readonly __typename: 'AlbumBannerTarget', readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistBannerTarget', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'EmptyBannerTarget' } | { readonly __typename: 'ExternalBannerTarget', readonly externalLink: string } | { readonly __typename: 'LayoutPageBannerTarget', readonly page?: { readonly __typename: 'Layout', readonly id: string, readonly title: string } | null } | { readonly __typename: 'LiveRadioBannerTarget', readonly liveRadio?: { readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } } | null } | { readonly __typename: 'MixRadioBannerTarget', readonly mixRadio?: { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'MixRadioCategoryBannerTarget', readonly mixRadioCategory?: { readonly __typename: 'MixRadioCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistBannerTarget', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistCategoryBannerTarget', readonly playlistCategory?: { readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'TrackBannerTarget', readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | null }> | null };\n\nexport type ChartLinkFragment_AlbumsChart = { readonly __typename: 'AlbumsChart', readonly id: string, readonly title: string };\n\nexport type ChartLinkFragment_TracksChart = { readonly __typename: 'TracksChart', readonly id: string, readonly title: string };\n\nexport type ChartLinkFragment = ChartLinkFragment_AlbumsChart | ChartLinkFragment_TracksChart;\n\nexport type ChartPreviewFragment_AlbumsChart = { readonly __typename: 'AlbumsChart', readonly cover: string, readonly id: string, readonly title: string };\n\nexport type ChartPreviewFragment_TracksChart = { readonly __typename: 'TracksChart', readonly cover: string, readonly id: string, readonly title: string };\n\nexport type ChartPreviewFragment = ChartPreviewFragment_AlbumsChart | ChartPreviewFragment_TracksChart;\n\nexport type ChartPageFragment_AlbumsChart = { readonly __typename: 'AlbumsChart', readonly description: string, readonly cover: string, readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ChartPageFragment_TracksChart = { readonly __typename: 'TracksChart', readonly description: string, readonly cover: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type ChartPageFragment = ChartPageFragment_AlbumsChart | ChartPageFragment_TracksChart;\n\nexport type ChartPreviewConnectionFragment = { readonly __typename: 'ChartConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsChart', readonly cover: string, readonly id: string, readonly title: string } | { readonly __typename: 'TracksChart', readonly cover: string, readonly id: string, readonly title: string }> | null };\n\nexport type TrackChartPlayFragment = { readonly __typename: 'TracksChart', readonly cover: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type FavoritePlaylistPreviewFragment_FavoritePlaylist = { readonly __typename: 'FavoritePlaylist', readonly favoritedAt: any, readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string };\n\nexport type FavoritePlaylistPreviewFragment_MusicPlaylist = { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string };\n\nexport type FavoritePlaylistPreviewFragment = FavoritePlaylistPreviewFragment_FavoritePlaylist | FavoritePlaylistPreviewFragment_MusicPlaylist;\n\nexport type FavoritePlaylistPreviewConnectionFragment = { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly favoritedAt: any, readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null };\n\nexport type LayoutLinkFragment = { readonly __typename: 'Layout', readonly id: string, readonly title: string };\n\nexport type LayoutPageFragment = { readonly __typename: 'Layout', readonly id: string, readonly title: string, readonly groups: { readonly __typename: 'LayoutItemGroupConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LayoutItemGroup', readonly title: string, readonly items: { readonly __typename: 'LayoutItemConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LayoutItem', readonly displayType?: PageItemDisplayType | null, readonly refreshFrequency?: number | null, readonly id: string, readonly title: string, readonly content?: { readonly __typename: 'AlbumsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'ArtistsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'BannerContentLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'ChartsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'GenresLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'LiveRadiosLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'MixRadiosLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'MixedContentLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'PlaylistsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'RecommendationsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'TracksLayoutItemContent', readonly pageItemId: string } | null }> | null } }> | null } };\n\nexport type LayoutItemLinkFragment = { readonly __typename: 'LayoutItem', readonly id: string, readonly title: string };\n\nexport type LayoutItemSectionFragment = { readonly __typename: 'LayoutItem', readonly displayType?: PageItemDisplayType | null, readonly refreshFrequency?: number | null, readonly id: string, readonly title: string, readonly content?: { readonly __typename: 'AlbumsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'ArtistsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'BannerContentLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'ChartsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'GenresLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'LiveRadiosLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'MixRadiosLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'MixedContentLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'PlaylistsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'RecommendationsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'TracksLayoutItemContent', readonly pageItemId: string } | null };\n\nexport type LayoutItemPageFragment = { readonly __typename: 'LayoutItem', readonly id: string, readonly title: string, readonly content?: { readonly __typename: 'AlbumsLayoutItemContent', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'ArtistsLayoutItemContent', readonly artists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'BannerContentLayoutItemContent', readonly banners: { readonly __typename: 'BannerConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'Banner', readonly description: string, readonly cover: string, readonly id: string, readonly name: string, readonly target?: { readonly __typename: 'AlbumBannerTarget', readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistBannerTarget', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'EmptyBannerTarget' } | { readonly __typename: 'ExternalBannerTarget', readonly externalLink: string } | { readonly __typename: 'LayoutPageBannerTarget', readonly page?: { readonly __typename: 'Layout', readonly id: string, readonly title: string } | null } | { readonly __typename: 'LiveRadioBannerTarget', readonly liveRadio?: { readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } } | null } | { readonly __typename: 'MixRadioBannerTarget', readonly mixRadio?: { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'MixRadioCategoryBannerTarget', readonly mixRadioCategory?: { readonly __typename: 'MixRadioCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistBannerTarget', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistCategoryBannerTarget', readonly playlistCategory?: { readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'TrackBannerTarget', readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | null }> | null } } | { readonly __typename: 'ChartsLayoutItemContent', readonly charts: { readonly __typename: 'ChartConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsChart', readonly cover: string, readonly id: string, readonly title: string } | { readonly __typename: 'TracksChart', readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'GenresLayoutItemContent' } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent', readonly liveRadioCategories: { readonly __typename: 'LiveRadioCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'LiveRadiosLayoutItemContent', readonly liveRadios: { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null } } | { readonly __typename: 'MixRadiosLayoutItemContent', readonly mixRadios: { readonly __typename: 'MixRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'MixedContentLayoutItemContent', readonly mixedContents: { readonly __typename: 'MixedContentConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixedContent', readonly cover: string, readonly id?: string | null, readonly title: string, readonly subtitle?: string | null, readonly type?: MixedContentType | null }> | null } } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent', readonly playlistCategories: { readonly __typename: 'PlaylistCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistsLayoutItemContent', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent', readonly statisticsItems: { readonly __typename: 'StatisticsItemConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'NameValueStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly items: ReadonlyArray<{ readonly __typename: 'NameValue', readonly name: string, readonly value: string }> } | { readonly __typename: 'TextStatisticsItem', readonly text?: string | null, readonly subtitle?: string | null, readonly cover: string, readonly title: string } | { readonly __typename: 'TrackStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null }> | null } } | { readonly __typename: 'RecommendationsLayoutItemContent', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'TracksLayoutItemContent', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null };\n\nexport type LayoutItemTracksPlayFragment = { readonly __typename: 'LayoutItem', readonly id: string, readonly title: string, readonly content?: { readonly __typename: 'AlbumsLayoutItemContent' } | { readonly __typename: 'ArtistsLayoutItemContent' } | { readonly __typename: 'BannerContentLayoutItemContent' } | { readonly __typename: 'ChartsLayoutItemContent' } | { readonly __typename: 'GenresLayoutItemContent' } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent' } | { readonly __typename: 'LiveRadiosLayoutItemContent' } | { readonly __typename: 'MixRadiosLayoutItemContent' } | { readonly __typename: 'MixedContentLayoutItemContent' } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent' } | { readonly __typename: 'PlaylistsLayoutItemContent' } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent' } | { readonly __typename: 'RecommendationsLayoutItemContent' } | { readonly __typename: 'TracksLayoutItemContent', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null };\n\nexport type LayoutItemContentFragment = { readonly __typename: 'LayoutItem', readonly content?: { readonly __typename: 'AlbumsLayoutItemContent', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'ArtistsLayoutItemContent', readonly artists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'BannerContentLayoutItemContent', readonly banners: { readonly __typename: 'BannerConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'Banner', readonly description: string, readonly cover: string, readonly id: string, readonly name: string, readonly target?: { readonly __typename: 'AlbumBannerTarget', readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistBannerTarget', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'EmptyBannerTarget' } | { readonly __typename: 'ExternalBannerTarget', readonly externalLink: string } | { readonly __typename: 'LayoutPageBannerTarget', readonly page?: { readonly __typename: 'Layout', readonly id: string, readonly title: string } | null } | { readonly __typename: 'LiveRadioBannerTarget', readonly liveRadio?: { readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } } | null } | { readonly __typename: 'MixRadioBannerTarget', readonly mixRadio?: { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'MixRadioCategoryBannerTarget', readonly mixRadioCategory?: { readonly __typename: 'MixRadioCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistBannerTarget', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistCategoryBannerTarget', readonly playlistCategory?: { readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'TrackBannerTarget', readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | null }> | null } } | { readonly __typename: 'ChartsLayoutItemContent', readonly charts: { readonly __typename: 'ChartConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsChart', readonly cover: string, readonly id: string, readonly title: string } | { readonly __typename: 'TracksChart', readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'GenresLayoutItemContent' } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent', readonly liveRadioCategories: { readonly __typename: 'LiveRadioCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'LiveRadiosLayoutItemContent', readonly liveRadios: { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null } } | { readonly __typename: 'MixRadiosLayoutItemContent', readonly mixRadios: { readonly __typename: 'MixRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'MixedContentLayoutItemContent', readonly mixedContents: { readonly __typename: 'MixedContentConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixedContent', readonly cover: string, readonly id?: string | null, readonly title: string, readonly subtitle?: string | null, readonly type?: MixedContentType | null }> | null } } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent', readonly playlistCategories: { readonly __typename: 'PlaylistCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistsLayoutItemContent', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent', readonly statisticsItems: { readonly __typename: 'StatisticsItemConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'NameValueStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly items: ReadonlyArray<{ readonly __typename: 'NameValue', readonly name: string, readonly value: string }> } | { readonly __typename: 'TextStatisticsItem', readonly text?: string | null, readonly subtitle?: string | null, readonly cover: string, readonly title: string } | { readonly __typename: 'TrackStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null }> | null } } | { readonly __typename: 'RecommendationsLayoutItemContent', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'TracksLayoutItemContent', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null };\n\nexport type LayoutItemSectionConnectionFragment = { readonly __typename: 'LayoutItemConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LayoutItem', readonly displayType?: PageItemDisplayType | null, readonly refreshFrequency?: number | null, readonly id: string, readonly title: string, readonly content?: { readonly __typename: 'AlbumsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'ArtistsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'BannerContentLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'ChartsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'GenresLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'LiveRadiosLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'MixRadiosLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'MixedContentLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'PlaylistsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'RecommendationsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'TracksLayoutItemContent', readonly pageItemId: string } | null }> | null };\n\nexport type LiveRadioLinkFragment = { readonly __typename: 'LiveRadio', readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } };\n\nexport type LiveRadioPreviewFragment = { readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } };\n\nexport type LiveRadioPageFragment = { readonly __typename: 'LiveRadio', readonly category: { readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string, readonly radios: { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null } } };\n\nexport type LiveRadioPlayFragment = { readonly __typename: 'LiveRadio', readonly stream: string, readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } };\n\nexport type LiveRadioPreviewConnectionFragment = { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null };\n\nexport type LiveRadioCategoriesPageFragment = { readonly __typename: 'LiveRadios', readonly categories: { readonly __typename: 'LiveRadioCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string }> | null } };\n\nexport type LiveRadioCategoryLinkFragment = { readonly __typename: 'LiveRadioCategory', readonly id: string, readonly title: string };\n\nexport type LiveRadioCategoryPreviewFragment = { readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string };\n\nexport type LiveRadioCategoryPageFragment = { readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string, readonly radios: { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null } };\n\nexport type LiveRadioCategoryPreviewConnectionFragment = { readonly __typename: 'LiveRadioCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string }> | null };\n\nexport type MixRadioLinkFragment = { readonly __typename: 'MixRadio', readonly id: string, readonly title: string };\n\nexport type MixRadioPreviewFragment = { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string };\n\nexport type MixRadioPlayFragment = { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type MixRadioPreviewConnectionFragment = { readonly __typename: 'MixRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null };\n\nexport type MixRadioCategoryLinkFragment = { readonly __typename: 'MixRadioCategory', readonly id: string, readonly title: string };\n\nexport type MixRadioCategoryPreviewFragment = { readonly __typename: 'MixRadioCategory', readonly cover: string, readonly id: string, readonly title: string };\n\nexport type MixRadioCategoryPageFragment = { readonly __typename: 'MixRadioCategory', readonly cover: string, readonly id: string, readonly title: string, readonly radios: { readonly __typename: 'MixRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } };\n\nexport type MixRadioCategoryPreviewConnectionFragment = { readonly __typename: 'MixRadioCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadioCategory', readonly cover: string, readonly id: string, readonly title: string }> | null };\n\nexport type MixRadiosPageFragment = { readonly __typename: 'MixRadios', readonly categories: { readonly __typename: 'MixRadioCategoryConnection', readonly totalCount?: number | null, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadioCategory', readonly id: string, readonly title: string, readonly radios: { readonly __typename: 'MixRadioConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type MixedContentPreviewFragment = { readonly __typename: 'MixedContent', readonly cover: string, readonly id?: string | null, readonly title: string, readonly subtitle?: string | null, readonly type?: MixedContentType | null };\n\nexport type MixedContentPreviewConnectionFragment = { readonly __typename: 'MixedContentConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixedContent', readonly cover: string, readonly id?: string | null, readonly title: string, readonly subtitle?: string | null, readonly type?: MixedContentType | null }> | null };\n\nexport type DiscoverRecommendationsPageFragment = { readonly __typename: 'MyRecommendations', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } };\n\nexport type HistoryRecommendationsPageFragment = { readonly __typename: 'MyRecommendations', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } };\n\nexport type NameValueFragment = { readonly __typename: 'NameValue', readonly name: string, readonly value: string };\n\nexport type NotificationLinkFragment = { readonly __typename: 'Notification', readonly id: string, readonly title: string };\n\nexport type NotificationPreviewFragment = { readonly __typename: 'Notification', readonly cover: string, readonly availableBegin?: any | null, readonly availableEnd?: any | null, readonly eligibilityReasons: ReadonlyArray<string>, readonly seenAt?: any | null, readonly contextId?: string | null, readonly subTitle?: string | null, readonly type?: NotificationType | null, readonly eventKey?: string | null, readonly id: string, readonly title: string };\n\nexport type NotificationPreviewConnectionFragment = { readonly __typename: 'NotificationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'Notification', readonly cover: string, readonly availableBegin?: any | null, readonly availableEnd?: any | null, readonly eligibilityReasons: ReadonlyArray<string>, readonly seenAt?: any | null, readonly contextId?: string | null, readonly subTitle?: string | null, readonly type?: NotificationType | null, readonly eventKey?: string | null, readonly id: string, readonly title: string }> | null };\n\nexport type PageInfoFragment = { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean };\n\nexport type PlaylistLinkFragment_FavoritePlaylist = { readonly __typename: 'FavoritePlaylist', readonly id: string, readonly title: string };\n\nexport type PlaylistLinkFragment_MusicPlaylist = { readonly __typename: 'MusicPlaylist', readonly id: string, readonly title: string };\n\nexport type PlaylistLinkFragment = PlaylistLinkFragment_FavoritePlaylist | PlaylistLinkFragment_MusicPlaylist;\n\nexport type PlaylistPreviewFragment_FavoritePlaylist = { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string };\n\nexport type PlaylistPreviewFragment_MusicPlaylist = { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string };\n\nexport type PlaylistPreviewFragment = PlaylistPreviewFragment_FavoritePlaylist | PlaylistPreviewFragment_MusicPlaylist;\n\nexport type PlaylistPageFragment_FavoritePlaylist = { readonly __typename: 'FavoritePlaylist', readonly followersCount: number, readonly duration: number, readonly cover: string, readonly share: string, readonly tracksCount: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type PlaylistPageFragment_MusicPlaylist = { readonly __typename: 'MusicPlaylist', readonly followersCount: number, readonly duration: number, readonly cover: string, readonly share: string, readonly tracksCount: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type PlaylistPageFragment = PlaylistPageFragment_FavoritePlaylist | PlaylistPageFragment_MusicPlaylist;\n\nexport type PlaylistPlayFragment_FavoritePlaylist = { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type PlaylistPlayFragment_MusicPlaylist = { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type PlaylistPlayFragment = PlaylistPlayFragment_FavoritePlaylist | PlaylistPlayFragment_MusicPlaylist;\n\nexport type PlaylistPreviewConnectionFragment = { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null };\n\nexport type PlaylistCategoriesPageFragment = { readonly __typename: 'PlaylistCategories', readonly playlistCategories: { readonly __typename: 'PlaylistCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string }> | null } };\n\nexport type PlaylistCategoriesPaginationFragment = { readonly __typename: 'PlaylistCategories', readonly playlistCategories: { readonly __typename: 'PlaylistCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string }> | null } };\n\nexport type PlaylistCategoryLinkFragment = { readonly __typename: 'PlaylistCategory', readonly id: string, readonly title: string };\n\nexport type PlaylistCategoryPreviewFragment = { readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string };\n\nexport type PlaylistCategoryPageFragment = { readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string, readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } };\n\nexport type PlaylistCategoryPreviewConnectionFragment = { readonly __typename: 'PlaylistCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string }> | null };\n\nexport type ProfileFragment = { readonly __typename: 'Profile', readonly color: string, readonly current: boolean, readonly description?: string | null, readonly id: string, readonly title: string, readonly master: boolean };\n\nexport type RecommendationLinkFragment_AlbumsRecommendation = { readonly __typename: 'AlbumsRecommendation', readonly id: string, readonly title: string };\n\nexport type RecommendationLinkFragment_PlaylistsRecommendation = { readonly __typename: 'PlaylistsRecommendation', readonly id: string, readonly title: string };\n\nexport type RecommendationLinkFragment_TracksRecommendation = { readonly __typename: 'TracksRecommendation', readonly id: string, readonly title: string };\n\nexport type RecommendationLinkFragment = RecommendationLinkFragment_AlbumsRecommendation | RecommendationLinkFragment_PlaylistsRecommendation | RecommendationLinkFragment_TracksRecommendation;\n\nexport type RecommendationPreviewFragment_AlbumsRecommendation = { readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string };\n\nexport type RecommendationPreviewFragment_PlaylistsRecommendation = { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string };\n\nexport type RecommendationPreviewFragment_TracksRecommendation = { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string };\n\nexport type RecommendationPreviewFragment = RecommendationPreviewFragment_AlbumsRecommendation | RecommendationPreviewFragment_PlaylistsRecommendation | RecommendationPreviewFragment_TracksRecommendation;\n\nexport type RecommendationPageFragment_AlbumsRecommendation = { readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type RecommendationPageFragment_PlaylistsRecommendation = { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string, readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } };\n\nexport type RecommendationPageFragment_TracksRecommendation = { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type RecommendationPageFragment = RecommendationPageFragment_AlbumsRecommendation | RecommendationPageFragment_PlaylistsRecommendation | RecommendationPageFragment_TracksRecommendation;\n\nexport type RecommendationPlayFragment_AlbumsRecommendation = { readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string };\n\nexport type RecommendationPlayFragment_PlaylistsRecommendation = { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string };\n\nexport type RecommendationPlayFragment_TracksRecommendation = { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type RecommendationPlayFragment = RecommendationPlayFragment_AlbumsRecommendation | RecommendationPlayFragment_PlaylistsRecommendation | RecommendationPlayFragment_TracksRecommendation;\n\nexport type RecommendationPreviewConnectionFragment = { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null };\n\nexport type SearchMixedSectionsFragment = { readonly __typename: 'Search', readonly mixed: { readonly __typename: 'MixedSearchResultConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumMixedSearchResult', readonly album: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } } | { readonly __typename: 'ArtistMixedSearchResult', readonly artist: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } } | { readonly __typename: 'TrackMixedSearchResult', readonly track: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } }> | null }, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly artists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null }, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type SearchPlaylistsSectionFragment = { readonly __typename: 'Search', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } };\n\nexport type SearchTracksPageFragment = { readonly __typename: 'Search', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type SearchAlbumsPageFragment = { readonly __typename: 'Search', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type SearchArtistsPageFragment = { readonly __typename: 'Search', readonly artists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } };\n\nexport type SearchPlaylistsPageFragment = { readonly __typename: 'Search', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } };\n\nexport type MixedSearchResultConnectionFragment = { readonly __typename: 'MixedSearchResultConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumMixedSearchResult', readonly album: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } } | { readonly __typename: 'ArtistMixedSearchResult', readonly artist: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } } | { readonly __typename: 'TrackMixedSearchResult', readonly track: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } }> | null };\n\nexport type StatisticsItemConnectionFragment = { readonly __typename: 'StatisticsItemConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'NameValueStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly items: ReadonlyArray<{ readonly __typename: 'NameValue', readonly name: string, readonly value: string }> } | { readonly __typename: 'TextStatisticsItem', readonly text?: string | null, readonly subtitle?: string | null, readonly cover: string, readonly title: string } | { readonly __typename: 'TrackStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null }> | null };\n\nexport type StatisticsLinkFragment_AlbumStatisticsItem = { readonly __typename: 'AlbumStatisticsItem', readonly title: string };\n\nexport type StatisticsLinkFragment_ArtistStatisticsItem = { readonly __typename: 'ArtistStatisticsItem', readonly title: string };\n\nexport type StatisticsLinkFragment_NameValueStatisticsItem = { readonly __typename: 'NameValueStatisticsItem', readonly title: string };\n\nexport type StatisticsLinkFragment_TextStatisticsItem = { readonly __typename: 'TextStatisticsItem', readonly title: string };\n\nexport type StatisticsLinkFragment_TrackStatisticsItem = { readonly __typename: 'TrackStatisticsItem', readonly title: string };\n\nexport type StatisticsLinkFragment = StatisticsLinkFragment_AlbumStatisticsItem | StatisticsLinkFragment_ArtistStatisticsItem | StatisticsLinkFragment_NameValueStatisticsItem | StatisticsLinkFragment_TextStatisticsItem | StatisticsLinkFragment_TrackStatisticsItem;\n\nexport type StatisticsItemFragment_AlbumStatisticsItem = { readonly __typename: 'AlbumStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null };\n\nexport type StatisticsItemFragment_ArtistStatisticsItem = { readonly __typename: 'ArtistStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null };\n\nexport type StatisticsItemFragment_NameValueStatisticsItem = { readonly __typename: 'NameValueStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly items: ReadonlyArray<{ readonly __typename: 'NameValue', readonly name: string, readonly value: string }> };\n\nexport type StatisticsItemFragment_TextStatisticsItem = { readonly __typename: 'TextStatisticsItem', readonly text?: string | null, readonly subtitle?: string | null, readonly cover: string, readonly title: string };\n\nexport type StatisticsItemFragment_TrackStatisticsItem = { readonly __typename: 'TrackStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null };\n\nexport type StatisticsItemFragment = StatisticsItemFragment_AlbumStatisticsItem | StatisticsItemFragment_ArtistStatisticsItem | StatisticsItemFragment_NameValueStatisticsItem | StatisticsItemFragment_TextStatisticsItem | StatisticsItemFragment_TrackStatisticsItem;\n\nexport type TrackLinkFragment_CatalogTrack = { readonly __typename: 'CatalogTrack', readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } };\n\nexport type TrackLinkFragment_FavoriteTrack = { readonly __typename: 'FavoriteTrack', readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } };\n\nexport type TrackLinkFragment_PlaylistTrack = { readonly __typename: 'PlaylistTrack', readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } };\n\nexport type TrackLinkFragment = TrackLinkFragment_CatalogTrack | TrackLinkFragment_FavoriteTrack | TrackLinkFragment_PlaylistTrack;\n\nexport type TrackWithoutAlbumPreviewFragment_CatalogTrack = { readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } };\n\nexport type TrackWithoutAlbumPreviewFragment_FavoriteTrack = { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } };\n\nexport type TrackWithoutAlbumPreviewFragment_PlaylistTrack = { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } };\n\nexport type TrackWithoutAlbumPreviewFragment = TrackWithoutAlbumPreviewFragment_CatalogTrack | TrackWithoutAlbumPreviewFragment_FavoriteTrack | TrackWithoutAlbumPreviewFragment_PlaylistTrack;\n\nexport type TrackPreviewFragment_CatalogTrack = { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type TrackPreviewFragment_FavoriteTrack = { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type TrackPreviewFragment_PlaylistTrack = { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type TrackPreviewFragment = TrackPreviewFragment_CatalogTrack | TrackPreviewFragment_FavoriteTrack | TrackPreviewFragment_PlaylistTrack;\n\nexport type TrackWithoutAlbumPreviewConnectionFragment = { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null };\n\nexport type TrackPreviewConnectionFragment = { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null };\n\nexport type FavoriteTrackWithoutAlbumPreviewFragment = { readonly __typename: 'FavoriteTrack', readonly favoritedAt: any, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } };\n\nexport type FavoriteTrackPreviewFragment = { readonly __typename: 'FavoriteTrack', readonly favoritedAt: any, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type FavoriteTrackPreviewConnectionFragment = { readonly __typename: 'FavoriteTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoriteTrack', readonly favoritedAt: any, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null };\n\nexport type PlaylistTrackPreviewFragment = { readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } };\n\nexport type PlaylistTrackPreviewConnectionFragment = { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null };\n\nexport type TrackLyricsItemsFragment = { readonly __typename: 'Lyrics', readonly lrc: { readonly __typename: 'LrcItemConnection', readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LrcItem', readonly startInMs?: number | null, readonly durationInMs?: number | null, readonly line: string }> | null } };\n\nexport type TrackLyricsPageFragment = { readonly __typename: 'Lyrics', readonly id: string, readonly synchronizationType: SynchronizationType, readonly credits: { readonly __typename: 'LyricsCredits', readonly provider?: string | null, readonly writer?: string | null, readonly publisher?: string | null }, readonly lrc: { readonly __typename: 'LrcItemConnection', readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LrcItem', readonly startInMs?: number | null, readonly durationInMs?: number | null, readonly line: string }> | null } };\n\nexport type TrackRadioLinkFragment_CatalogTrack = { readonly __typename: 'CatalogTrack', readonly id: string, readonly title: string };\n\nexport type TrackRadioLinkFragment_FavoriteTrack = { readonly __typename: 'FavoriteTrack', readonly id: string, readonly title: string };\n\nexport type TrackRadioLinkFragment_PlaylistTrack = { readonly __typename: 'PlaylistTrack', readonly id: string, readonly title: string };\n\nexport type TrackRadioLinkFragment = TrackRadioLinkFragment_CatalogTrack | TrackRadioLinkFragment_FavoriteTrack | TrackRadioLinkFragment_PlaylistTrack;\n\nexport type TrackRadioPreviewFragment_CatalogTrack = { readonly __typename: 'CatalogTrack', readonly cover: string, readonly id: string, readonly title: string };\n\nexport type TrackRadioPreviewFragment_FavoriteTrack = { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly id: string, readonly title: string };\n\nexport type TrackRadioPreviewFragment_PlaylistTrack = { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly id: string, readonly title: string };\n\nexport type TrackRadioPreviewFragment = TrackRadioPreviewFragment_CatalogTrack | TrackRadioPreviewFragment_FavoriteTrack | TrackRadioPreviewFragment_PlaylistTrack;\n\nexport type TrackRadioPageFragment_CatalogTrack = { readonly __typename: 'CatalogTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type TrackRadioPageFragment_FavoriteTrack = { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type TrackRadioPageFragment_PlaylistTrack = { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type TrackRadioPageFragment = TrackRadioPageFragment_CatalogTrack | TrackRadioPageFragment_FavoriteTrack | TrackRadioPageFragment_PlaylistTrack;\n\nexport type TrackRadioPlayFragment_CatalogTrack = { readonly __typename: 'CatalogTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type TrackRadioPlayFragment_FavoriteTrack = { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type TrackRadioPlayFragment_PlaylistTrack = { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } };\n\nexport type TrackRadioPlayFragment = TrackRadioPlayFragment_CatalogTrack | TrackRadioPlayFragment_FavoriteTrack | TrackRadioPlayFragment_PlaylistTrack;\n\nexport type AlbumPreviewQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type AlbumPreviewQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type AlbumPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type AlbumPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly album?: { readonly __typename: 'CatalogAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null }, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly id: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly id: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null }, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly id: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly id: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type AlbumHeaderSectionQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type AlbumHeaderSectionQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly album?: { readonly __typename: 'CatalogAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type AlbumHeaderSectionByTrackQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type AlbumHeaderSectionByTrackQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } } | { readonly __typename: 'FavoriteTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } } | { readonly __typename: 'PlaylistTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly label: string, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } } | null } };\n\nexport type AlbumTracksSectionQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type AlbumTracksSectionQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly album?: { readonly __typename: 'CatalogAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } | null } };\n\nexport type AlbumTracksSectionByTrackQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type AlbumTracksSectionByTrackQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } } | { readonly __typename: 'FavoriteTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } } | { readonly __typename: 'PlaylistTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } } | null } };\n\nexport type AlbumTracksPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type AlbumTracksPaginationQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly album?: { readonly __typename: 'CatalogAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } | null } };\n\nexport type Temp_AlbumTracksPaginationWithPreviewQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type Temp_AlbumTracksPaginationWithPreviewQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type AlbumTracksByTrackPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type AlbumTracksByTrackPaginationQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } } | { readonly __typename: 'FavoriteTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } } | { readonly __typename: 'PlaylistTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null } } } | null } };\n\nexport type AlbumPlayQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type AlbumPlayQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null }, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } }> | null }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type AlbumArtistAlbumsSectionQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type AlbumArtistAlbumsSectionQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly album?: { readonly __typename: 'CatalogAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } | { readonly __typename: 'FavoriteAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } | null } };\n\nexport type AlbumArtistAlbumsByTrackSectionQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type AlbumArtistAlbumsByTrackSectionQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } | { readonly __typename: 'FavoriteAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } } | { readonly __typename: 'FavoriteTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } | { readonly __typename: 'FavoriteAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } } | { readonly __typename: 'PlaylistTrack', readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } | { readonly __typename: 'FavoriteAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } } | null } };\n\nexport type AlbumArtistAlbumsPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: AlbumsSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type AlbumArtistAlbumsPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly album?: { readonly __typename: 'CatalogAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } | { readonly __typename: 'FavoriteAlbum', readonly id: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } | null } };\n\nexport type AlbumArtistAlbumsPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: AlbumsSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type AlbumArtistAlbumsPaginationQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly album?: { readonly __typename: 'CatalogAlbum', readonly artist: { readonly __typename: 'CatalogArtist', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } | { readonly __typename: 'FavoriteAlbum', readonly artist: { readonly __typename: 'CatalogArtist', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } | null } };\n\nexport type ArtistLinkQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type ArtistLinkQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string } | null } };\n\nexport type ArtistPreviewQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistPreviewQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } };\n\nexport type ArtistPageQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null }, readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null }, readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistPageHeaderSectionQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistPageHeaderSectionQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } };\n\nexport type ArtistPopularTracksSectionQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistPopularTracksSectionQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistAlbumsSectionQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistAlbumsSectionQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistSinglesSectionQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistSinglesSectionQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistSimilarArtistsSectionQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistSimilarArtistsSectionQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteArtist', readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type ArtistAppearsOnAlbumsSectionQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistAppearsOnAlbumsSectionQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistPlayQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistPlayQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistAlbumsPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: AlbumsSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistAlbumsPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistAlbumsPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: AlbumsSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistAlbumsPaginationQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistAppearsOnAlbumsPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: AlbumsSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistAppearsOnAlbumsPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string, readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string, readonly appearsOnAlbums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistAppearsOnAlbumsPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: AlbumsSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistAppearsOnAlbumsPaginationQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistRadioPageQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n first?: InputMaybe<Scalars['Int']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistRadioPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly id: string, readonly title: string, readonly artistRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly id: string, readonly title: string, readonly artistRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistSimilarArtistsPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistSimilarArtistsPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type ArtistSimilarArtistsPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistSimilarArtistsPaginationQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteArtist', readonly similarArtists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type ArtistSinglesPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: AlbumsSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistSinglesPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string, readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string, readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistSinglesPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: AlbumsSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistSinglesPaginationQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly singles: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistTracksPageQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n first: Scalars['Int']['input'];\n orderBy: TracksSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistTracksPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistTracksPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: TracksSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistTracksPaginationQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ArtistTracksPlayQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: TracksSorting;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ArtistTracksPlayQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type AuthorizeUrisQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type AuthorizeUrisQuery = { readonly __typename: 'Queries', readonly authorize: { readonly __typename: 'Authorize', readonly authorize: string, readonly token: string } };\n\nexport type DeviceAuthorizeQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type DeviceAuthorizeQuery = { readonly __typename: 'Queries', readonly authorize: { readonly __typename: 'Authorize', readonly deviceAuthorize: string, readonly token: string } };\n\nexport type LogoutAllDevicesQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type LogoutAllDevicesQuery = { readonly __typename: 'Queries', readonly authorize: { readonly __typename: 'Authorize', readonly logoutAllDevices: string } };\n\nexport type InviteFlowHelpUrlQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type InviteFlowHelpUrlQuery = { readonly __typename: 'Queries', readonly authorize: { readonly __typename: 'Authorize', readonly inviteFlowHelpUrl: string } };\n\nexport type ChartLinkQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type ChartLinkQuery = { readonly __typename: 'Queries', readonly charts: { readonly __typename: 'Charts', readonly chart?: { readonly __typename: 'AlbumsChart', readonly id: string, readonly title: string } | { readonly __typename: 'TracksChart', readonly id: string, readonly title: string } | null } };\n\nexport type ChartPreviewQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ChartPreviewQuery = { readonly __typename: 'Queries', readonly charts: { readonly __typename: 'Charts', readonly chart?: { readonly __typename: 'AlbumsChart', readonly cover: string, readonly id: string, readonly title: string } | { readonly __typename: 'TracksChart', readonly cover: string, readonly id: string, readonly title: string } | null } };\n\nexport type ChartPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ChartPageQuery = { readonly __typename: 'Queries', readonly charts: { readonly __typename: 'Charts', readonly chart?: { readonly __typename: 'AlbumsChart', readonly description: string, readonly cover: string, readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'TracksChart', readonly description: string, readonly cover: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type ChartItemsPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ChartItemsPaginationQuery = { readonly __typename: 'Queries', readonly charts: { readonly __typename: 'Charts', readonly chart?: { readonly __typename: 'AlbumsChart', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'TracksChart', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type FirstTrackChartQueryVariables = Exact<{\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type FirstTrackChartQuery = { readonly __typename: 'Queries', readonly charts: { readonly __typename: 'Charts', readonly charts: { readonly __typename: 'ChartConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsChart', readonly cover: string, readonly id: string, readonly title: string } | { readonly __typename: 'TracksChart', readonly cover: string, readonly id: string, readonly title: string }> | null } } };\n\nexport type TrackChartPlayQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type TrackChartPlayQuery = { readonly __typename: 'Queries', readonly charts: { readonly __typename: 'Charts', readonly chart?: { readonly __typename: 'AlbumsChart' } | { readonly __typename: 'TracksChart', readonly cover: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type EndlessPlayQueryVariables = Exact<{\n trackId: Scalars['ID']['input'];\n first: Scalars['Int']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type EndlessPlayQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly endlessPlay: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteTrack', readonly endlessPlay: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'PlaylistTrack', readonly endlessPlay: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type FavoriteTracksQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n orderBy: FavoriteTracksSorting;\n criterion?: InputMaybe<Scalars['String']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type FavoriteTracksQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly favorites: { readonly __typename: 'MyFavorites', readonly tracks: { readonly __typename: 'FavoriteTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoriteTrack', readonly favoritedAt: any, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } }, readonly deltaSync: { readonly __typename: 'MyDeltaSynchronizations', readonly favoriteTracks: { readonly __typename: 'FavoriteTracksDeltaSync', readonly deltaToken: string } } } };\n\nexport type FavoriteTracksDeltaQueryVariables = Exact<{\n deltaToken: Scalars['String']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type FavoriteTracksDeltaQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly deltaSync: { readonly __typename: 'MyDeltaSynchronizations', readonly favoriteTracks: { readonly __typename: 'FavoriteTracksDeltaSync', readonly deltaToken: string, readonly delta: { readonly __typename: 'FavoriteTracksDelta', readonly removedTrackIds: ReadonlyArray<string>, readonly newTracks: ReadonlyArray<{ readonly __typename: 'FavoriteTrack', readonly favoritedAt: any, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> } } } } };\n\nexport type FavoriteAlbumsDeltaQueryVariables = Exact<{\n deltaToken: Scalars['String']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type FavoriteAlbumsDeltaQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly deltaSync: { readonly __typename: 'MyDeltaSynchronizations', readonly favoriteAlbums: { readonly __typename: 'FavoriteAlbumsDeltaSync', readonly deltaToken: string, readonly delta: { readonly __typename: 'FavoriteAlbumsDelta', readonly removedAlbumIds: ReadonlyArray<string>, readonly newAlbums: ReadonlyArray<{ readonly __typename: 'FavoriteAlbum', readonly favoritedAt: any, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> } } } } };\n\nexport type FavoriteAlbumsQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n orderBy: FavoriteAlbumsSorting;\n criterion?: InputMaybe<Scalars['String']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type FavoriteAlbumsQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly favorites: { readonly __typename: 'MyFavorites', readonly albums: { readonly __typename: 'FavoriteAlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoriteAlbum', readonly favoritedAt: any, readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } }, readonly deltaSync: { readonly __typename: 'MyDeltaSynchronizations', readonly favoriteAlbums: { readonly __typename: 'FavoriteAlbumsDeltaSync', readonly deltaToken: string } } } };\n\nexport type FavoriteArtistsQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n orderBy: FavoriteArtistsSorting;\n criterion?: InputMaybe<Scalars['String']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type FavoriteArtistsQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly favorites: { readonly __typename: 'MyFavorites', readonly artists: { readonly __typename: 'FavoriteArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoriteArtist', readonly favoritedAt: any, readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } }, readonly deltaSync: { readonly __typename: 'MyDeltaSynchronizations', readonly favoriteArtists: { readonly __typename: 'FavoriteArtistsDeltaSync', readonly deltaToken: string } } } };\n\nexport type FavoriteArtistsDeltaQueryVariables = Exact<{\n deltaToken: Scalars['String']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type FavoriteArtistsDeltaQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly deltaSync: { readonly __typename: 'MyDeltaSynchronizations', readonly favoriteArtists: { readonly __typename: 'FavoriteArtistsDeltaSync', readonly deltaToken: string, readonly delta: { readonly __typename: 'FavoriteArtistsDelta', readonly removedArtistIds: ReadonlyArray<string>, readonly newArtists: ReadonlyArray<{ readonly __typename: 'FavoriteArtist', readonly favoritedAt: any, readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> } } } } };\n\nexport type CombinedPlaylistsPaginationQueryVariables = Exact<{\n first?: InputMaybe<Scalars['Int']['input']>;\n after?: InputMaybe<Scalars['String']['input']>;\n orderBy: CombinedPlaylistsSorting;\n criterion?: InputMaybe<Scalars['String']['input']>;\n isOwned?: InputMaybe<Scalars['Boolean']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type CombinedPlaylistsPaginationQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly playlists: { readonly __typename: 'MyPlaylists', readonly combinedPlaylists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly favoritedAt: any, readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } } };\n\nexport type CombinedPlaylistQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type CombinedPlaylistQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly playlists: { readonly __typename: 'MyPlaylists', readonly combinedPlaylist?: { readonly __typename: 'FavoritePlaylist', readonly favoritedAt: any, readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | null } } };\n\nexport type IsCombinedPlaylistQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type IsCombinedPlaylistQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly playlists: { readonly __typename: 'MyPlaylists', readonly combinedPlaylist?: { readonly __typename: 'FavoritePlaylist' } | { readonly __typename: 'MusicPlaylist' } | null } } };\n\nexport type IsFavoriteQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n type: FavoriteContentType;\n}>;\n\n\nexport type IsFavoriteQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly favorites: { readonly __typename: 'MyFavorites', readonly isFavorite?: { readonly __typename: 'IsFavorite', readonly isFavorite: boolean } | null } } };\n\nexport type OwnPlaylistsQueryVariables = Exact<{\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type OwnPlaylistsQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly playlists: { readonly __typename: 'MyPlaylists', readonly ownPlaylists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } } };\n\nexport type FavoritesStatisticsQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type FavoritesStatisticsQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly favorites: { readonly __typename: 'MyFavorites', readonly tracks: { readonly __typename: 'FavoriteTrackConnection', readonly totalCount?: number | null }, readonly albums: { readonly __typename: 'FavoriteAlbumConnection', readonly totalCount?: number | null }, readonly artists: { readonly __typename: 'FavoriteArtistConnection', readonly totalCount?: number | null }, readonly playlists: { readonly __typename: 'FavoritePlaylistConnection', readonly totalCount?: number | null } } } };\n\nexport type FavoriteTracksFullSyncInHoursQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type FavoriteTracksFullSyncInHoursQuery = { readonly __typename: 'Queries', readonly system: { readonly __typename: 'System', readonly deviceSettings: { readonly __typename: 'DeviceSettings', readonly favoriteTracksFullSyncInHours: number } } };\n\nexport type FavoriteArtistsFullSyncInHoursQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type FavoriteArtistsFullSyncInHoursQuery = { readonly __typename: 'Queries', readonly system: { readonly __typename: 'System', readonly deviceSettings: { readonly __typename: 'DeviceSettings', readonly favoriteArtistsFullSyncInHours: number } } };\n\nexport type FavoriteAlbumsFullSyncInHoursQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type FavoriteAlbumsFullSyncInHoursQuery = { readonly __typename: 'Queries', readonly system: { readonly __typename: 'System', readonly deviceSettings: { readonly __typename: 'DeviceSettings', readonly favoriteAlbumsFullSyncInHours: number } } };\n\nexport type LayoutItemSectionQueryVariables = Exact<{\n pageId: Scalars['ID']['input'];\n itemId: Scalars['ID']['input'];\n}>;\n\n\nexport type LayoutItemSectionQuery = { readonly __typename: 'Queries', readonly layout?: { readonly __typename: 'Layout', readonly item?: { readonly __typename: 'LayoutItem', readonly displayType?: PageItemDisplayType | null, readonly refreshFrequency?: number | null, readonly id: string, readonly title: string, readonly content?: { readonly __typename: 'AlbumsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'ArtistsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'BannerContentLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'ChartsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'GenresLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'LiveRadiosLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'MixRadiosLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'MixedContentLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'PlaylistsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'RecommendationsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'TracksLayoutItemContent', readonly pageItemId: string } | null } | null } | null };\n\nexport type LayoutItemPageQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n itemId: Scalars['ID']['input'];\n pageId: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LayoutItemPageQuery = { readonly __typename: 'Queries', readonly layout?: { readonly __typename: 'Layout', readonly item?: { readonly __typename: 'LayoutItem', readonly id: string, readonly title: string, readonly content?: { readonly __typename: 'AlbumsLayoutItemContent', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'ArtistsLayoutItemContent', readonly artists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'BannerContentLayoutItemContent', readonly banners: { readonly __typename: 'BannerConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'Banner', readonly description: string, readonly cover: string, readonly id: string, readonly name: string, readonly target?: { readonly __typename: 'AlbumBannerTarget', readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistBannerTarget', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'EmptyBannerTarget' } | { readonly __typename: 'ExternalBannerTarget', readonly externalLink: string } | { readonly __typename: 'LayoutPageBannerTarget', readonly page?: { readonly __typename: 'Layout', readonly id: string, readonly title: string } | null } | { readonly __typename: 'LiveRadioBannerTarget', readonly liveRadio?: { readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } } | null } | { readonly __typename: 'MixRadioBannerTarget', readonly mixRadio?: { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'MixRadioCategoryBannerTarget', readonly mixRadioCategory?: { readonly __typename: 'MixRadioCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistBannerTarget', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistCategoryBannerTarget', readonly playlistCategory?: { readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'TrackBannerTarget', readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | null }> | null } } | { readonly __typename: 'ChartsLayoutItemContent', readonly charts: { readonly __typename: 'ChartConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsChart', readonly cover: string, readonly id: string, readonly title: string } | { readonly __typename: 'TracksChart', readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'GenresLayoutItemContent' } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent', readonly liveRadioCategories: { readonly __typename: 'LiveRadioCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'LiveRadiosLayoutItemContent', readonly liveRadios: { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null } } | { readonly __typename: 'MixRadiosLayoutItemContent', readonly mixRadios: { readonly __typename: 'MixRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'MixedContentLayoutItemContent', readonly mixedContents: { readonly __typename: 'MixedContentConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixedContent', readonly cover: string, readonly id?: string | null, readonly title: string, readonly subtitle?: string | null, readonly type?: MixedContentType | null }> | null } } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent', readonly playlistCategories: { readonly __typename: 'PlaylistCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistsLayoutItemContent', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent', readonly statisticsItems: { readonly __typename: 'StatisticsItemConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'NameValueStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly items: ReadonlyArray<{ readonly __typename: 'NameValue', readonly name: string, readonly value: string }> } | { readonly __typename: 'TextStatisticsItem', readonly text?: string | null, readonly subtitle?: string | null, readonly cover: string, readonly title: string } | { readonly __typename: 'TrackStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null }> | null } } | { readonly __typename: 'RecommendationsLayoutItemContent', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'TracksLayoutItemContent', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } | null } | null };\n\nexport type LayoutItemContentPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n itemId: Scalars['ID']['input'];\n pageId: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LayoutItemContentPaginationQuery = { readonly __typename: 'Queries', readonly layout?: { readonly __typename: 'Layout', readonly item?: { readonly __typename: 'LayoutItem', readonly content?: { readonly __typename: 'AlbumsLayoutItemContent', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'ArtistsLayoutItemContent', readonly artists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'BannerContentLayoutItemContent', readonly banners: { readonly __typename: 'BannerConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'Banner', readonly description: string, readonly cover: string, readonly id: string, readonly name: string, readonly target?: { readonly __typename: 'AlbumBannerTarget', readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistBannerTarget', readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'EmptyBannerTarget' } | { readonly __typename: 'ExternalBannerTarget', readonly externalLink: string } | { readonly __typename: 'LayoutPageBannerTarget', readonly page?: { readonly __typename: 'Layout', readonly id: string, readonly title: string } | null } | { readonly __typename: 'LiveRadioBannerTarget', readonly liveRadio?: { readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } } | null } | { readonly __typename: 'MixRadioBannerTarget', readonly mixRadio?: { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'MixRadioCategoryBannerTarget', readonly mixRadioCategory?: { readonly __typename: 'MixRadioCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistBannerTarget', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | null } | { readonly __typename: 'PlaylistCategoryBannerTarget', readonly playlistCategory?: { readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'TrackBannerTarget', readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | null }> | null } } | { readonly __typename: 'ChartsLayoutItemContent', readonly charts: { readonly __typename: 'ChartConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsChart', readonly cover: string, readonly id: string, readonly title: string } | { readonly __typename: 'TracksChart', readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'GenresLayoutItemContent' } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent', readonly liveRadioCategories: { readonly __typename: 'LiveRadioCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'LiveRadiosLayoutItemContent', readonly liveRadios: { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null } } | { readonly __typename: 'MixRadiosLayoutItemContent', readonly mixRadios: { readonly __typename: 'MixRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'MixedContentLayoutItemContent', readonly mixedContents: { readonly __typename: 'MixedContentConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixedContent', readonly cover: string, readonly id?: string | null, readonly title: string, readonly subtitle?: string | null, readonly type?: MixedContentType | null }> | null } } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent', readonly playlistCategories: { readonly __typename: 'PlaylistCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistsLayoutItemContent', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent', readonly statisticsItems: { readonly __typename: 'StatisticsItemConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly album?: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } | { readonly __typename: 'ArtistStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly artist?: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } | { readonly __typename: 'NameValueStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly items: ReadonlyArray<{ readonly __typename: 'NameValue', readonly name: string, readonly value: string }> } | { readonly __typename: 'TextStatisticsItem', readonly text?: string | null, readonly subtitle?: string | null, readonly cover: string, readonly title: string } | { readonly __typename: 'TrackStatisticsItem', readonly subtitle?: string | null, readonly cover: string, readonly title: string, readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null }> | null } } | { readonly __typename: 'RecommendationsLayoutItemContent', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'TracksLayoutItemContent', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } | null } | null };\n\nexport type LayoutItemPlayQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n itemId: Scalars['ID']['input'];\n pageId: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LayoutItemPlayQuery = { readonly __typename: 'Queries', readonly layout?: { readonly __typename: 'Layout', readonly item?: { readonly __typename: 'LayoutItem', readonly id: string, readonly title: string, readonly content?: { readonly __typename: 'AlbumsLayoutItemContent' } | { readonly __typename: 'ArtistsLayoutItemContent' } | { readonly __typename: 'BannerContentLayoutItemContent' } | { readonly __typename: 'ChartsLayoutItemContent' } | { readonly __typename: 'GenresLayoutItemContent' } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent' } | { readonly __typename: 'LiveRadiosLayoutItemContent' } | { readonly __typename: 'MixRadiosLayoutItemContent' } | { readonly __typename: 'MixedContentLayoutItemContent' } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent' } | { readonly __typename: 'PlaylistsLayoutItemContent' } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent' } | { readonly __typename: 'RecommendationsLayoutItemContent' } | { readonly __typename: 'TracksLayoutItemContent', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } | null } | null };\n\nexport type LayoutPageQueryVariables = Exact<{\n pageId: Scalars['ID']['input'];\n}>;\n\n\nexport type LayoutPageQuery = { readonly __typename: 'Queries', readonly layout?: { readonly __typename: 'Layout', readonly id: string, readonly title: string, readonly groups: { readonly __typename: 'LayoutItemGroupConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LayoutItemGroup', readonly title: string, readonly items: { readonly __typename: 'LayoutItemConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LayoutItem', readonly displayType?: PageItemDisplayType | null, readonly refreshFrequency?: number | null, readonly id: string, readonly title: string, readonly content?: { readonly __typename: 'AlbumsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'ArtistsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'BannerContentLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'ChartsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'GenresLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'LiveRadioCategoriesLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'LiveRadiosLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'MixRadiosLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'MixedContentLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'PlaylistCategoriesLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'PlaylistsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'RecommendationStatisticsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'RecommendationsLayoutItemContent', readonly pageItemId: string } | { readonly __typename: 'TracksLayoutItemContent', readonly pageItemId: string } | null }> | null } }> | null } } | null };\n\nexport type LayoutPageLinkQueryVariables = Exact<{\n pageId: Scalars['ID']['input'];\n}>;\n\n\nexport type LayoutPageLinkQuery = { readonly __typename: 'Queries', readonly layout?: { readonly __typename: 'Layout', readonly id: string, readonly title: string } | null };\n\nexport type LiveRadioPlayQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LiveRadioPlayQuery = { readonly __typename: 'Queries', readonly liveRadios: { readonly __typename: 'LiveRadios', readonly radio?: { readonly __typename: 'LiveRadio', readonly stream: string, readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } } | null } };\n\nexport type LiveRadioPreviewQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LiveRadioPreviewQuery = { readonly __typename: 'Queries', readonly liveRadios: { readonly __typename: 'LiveRadios', readonly radio?: { readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } } | null } };\n\nexport type LiveRadioNowAndRecentlyPlayedQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LiveRadioNowAndRecentlyPlayedQuery = { readonly __typename: 'Queries', readonly liveRadios: { readonly __typename: 'LiveRadios', readonly radio?: { readonly __typename: 'LiveRadio', readonly tracks: { readonly __typename: 'LiveRadioTracks', readonly supportsNowPlaying: boolean, readonly nowPlaying?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null, readonly recentlyPlayed: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } | null } };\n\nexport type LiveRadioHeartbeatInSecondsQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type LiveRadioHeartbeatInSecondsQuery = { readonly __typename: 'Queries', readonly system: { readonly __typename: 'System', readonly deviceSettings: { readonly __typename: 'DeviceSettings', readonly liveRadioHeartbeatInSeconds: number } } };\n\nexport type LiveRadioCategoryLinkQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type LiveRadioCategoryLinkQuery = { readonly __typename: 'Queries', readonly liveRadios: { readonly __typename: 'LiveRadios', readonly category?: { readonly __typename: 'LiveRadioCategory', readonly id: string, readonly title: string } | null } };\n\nexport type LiveRadioCategoryPreviewQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LiveRadioCategoryPreviewQuery = { readonly __typename: 'Queries', readonly liveRadios: { readonly __typename: 'LiveRadios', readonly category?: { readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string } | null } };\n\nexport type LiveRadioCategoryPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LiveRadioCategoryPageQuery = { readonly __typename: 'Queries', readonly liveRadios: { readonly __typename: 'LiveRadios', readonly category?: { readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string, readonly radios: { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null } } | null } };\n\nexport type LiveRadioCategoryLiveRadiosPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LiveRadioCategoryLiveRadiosPaginationQuery = { readonly __typename: 'Queries', readonly liveRadios: { readonly __typename: 'LiveRadios', readonly category?: { readonly __typename: 'LiveRadioCategory', readonly radios: { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null } } | null } };\n\nexport type LiveRadioCategoryPageByLiveRadioQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LiveRadioCategoryPageByLiveRadioQuery = { readonly __typename: 'Queries', readonly liveRadios: { readonly __typename: 'LiveRadios', readonly radio?: { readonly __typename: 'LiveRadio', readonly category: { readonly __typename: 'LiveRadioCategory', readonly description: string, readonly cover: string, readonly id: string, readonly title: string, readonly radios: { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null } } } | null } };\n\nexport type LiveRadioCategoryByLiveRadioLiveRadiosPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type LiveRadioCategoryByLiveRadioLiveRadiosPaginationQuery = { readonly __typename: 'Queries', readonly liveRadios: { readonly __typename: 'LiveRadios', readonly radio?: { readonly __typename: 'LiveRadio', readonly category: { readonly __typename: 'LiveRadioCategory', readonly radios: { readonly __typename: 'LiveRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LiveRadio', readonly cover: string, readonly share: string, readonly description: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string } }> | null } } } | null } };\n\nexport type LiveRadioLiveRadioCategoryLinkQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type LiveRadioLiveRadioCategoryLinkQuery = { readonly __typename: 'Queries', readonly liveRadios: { readonly __typename: 'LiveRadios', readonly radio?: { readonly __typename: 'LiveRadio', readonly category: { readonly __typename: 'LiveRadioCategory', readonly id: string, readonly title: string } } | null } };\n\nexport type MixRadioPreviewQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type MixRadioPreviewQuery = { readonly __typename: 'Queries', readonly mixRadios: { readonly __typename: 'MixRadios', readonly radio?: { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | null } };\n\nexport type MixRadioTracksPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type MixRadioTracksPaginationQuery = { readonly __typename: 'Queries', readonly mixRadios: { readonly __typename: 'MixRadios', readonly radio?: { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type MixRadioPlayQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type MixRadioPlayQuery = { readonly __typename: 'Queries', readonly mixRadios: { readonly __typename: 'MixRadios', readonly radio?: { readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type MixRadioCategoryPageQueryVariables = Exact<{\n first?: InputMaybe<Scalars['Int']['input']>;\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type MixRadioCategoryPageQuery = { readonly __typename: 'Queries', readonly mixRadios: { readonly __typename: 'MixRadios', readonly category?: { readonly __typename: 'MixRadioCategory', readonly cover: string, readonly id: string, readonly title: string, readonly radios: { readonly __typename: 'MixRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type MixRadioCategoryPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type MixRadioCategoryPaginationQuery = { readonly __typename: 'Queries', readonly mixRadios: { readonly __typename: 'MixRadios', readonly category?: { readonly __typename: 'MixRadioCategory', readonly radios: { readonly __typename: 'MixRadioConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type MixRadiosPageQueryVariables = Exact<{\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type MixRadiosPageQuery = { readonly __typename: 'Queries', readonly mixRadios: { readonly __typename: 'MixRadios', readonly categories: { readonly __typename: 'MixRadioCategoryConnection', readonly totalCount?: number | null, readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadioCategory', readonly id: string, readonly title: string, readonly radios: { readonly __typename: 'MixRadioConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'MixRadio', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } }> | null } } };\n\nexport type RecentTracksQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type RecentTracksQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly history: { readonly __typename: 'MyHistory', readonly recentTracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } } };\n\nexport type NotificationsPollQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type NotificationsPollQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly notifications: { readonly __typename: 'MyNotifications', readonly notSeenCount: number, readonly available: { readonly __typename: 'AvailableNotifications', readonly notificationsState?: string | null } } } };\n\nexport type NotificationsQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type NotificationsQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly notifications: { readonly __typename: 'MyNotifications', readonly notSeenCount: number, readonly available: { readonly __typename: 'AvailableNotifications', readonly notificationsState?: string | null, readonly notifications: { readonly __typename: 'NotificationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'Notification', readonly cover: string, readonly availableBegin?: any | null, readonly availableEnd?: any | null, readonly eligibilityReasons: ReadonlyArray<string>, readonly seenAt?: any | null, readonly contextId?: string | null, readonly subTitle?: string | null, readonly type?: NotificationType | null, readonly eventKey?: string | null, readonly id: string, readonly title: string }> | null } } } } };\n\nexport type RecommendationsPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n mode: RecommendationMode;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type RecommendationsPageQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } } } };\n\nexport type RecommendationsPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n mode: RecommendationMode;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type RecommendationsPaginationQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } } } };\n\nexport type HistoryRecommendationsPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type HistoryRecommendationsPageQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } } } };\n\nexport type HistoryRecommendationsPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type HistoryRecommendationsPaginationQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } } } };\n\nexport type DiscoverRecommendationsPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type DiscoverRecommendationsPageQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } } } };\n\nexport type DiscoverRecommendationsPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type DiscoverRecommendationsPaginationQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendations: { readonly __typename: 'RecommendationConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string }> | null } } } };\n\nexport type PlaylistNotificationCheckQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type PlaylistNotificationCheckQuery = { readonly __typename: 'Queries', readonly playlists: { readonly __typename: 'Playlists', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly id: string }> | null } } | { readonly __typename: 'MusicPlaylist', readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly id: string }> | null } } | null } };\n\nexport type TrackRecommendationNotificationCheckQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type TrackRecommendationNotificationCheckQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendation?: { readonly __typename: 'AlbumsRecommendation' } | { readonly __typename: 'PlaylistsRecommendation' } | { readonly __typename: 'TracksRecommendation', readonly tracks: { readonly __typename: 'TrackConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly id: string } | { readonly __typename: 'FavoriteTrack', readonly id: string } | { readonly __typename: 'PlaylistTrack', readonly id: string }> | null } } | null } } };\n\nexport type TrackChartNotificationCheckQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type TrackChartNotificationCheckQuery = { readonly __typename: 'Queries', readonly charts: { readonly __typename: 'Charts', readonly chart?: { readonly __typename: 'AlbumsChart' } | { readonly __typename: 'TracksChart', readonly tracks: { readonly __typename: 'TrackConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly id: string } | { readonly __typename: 'FavoriteTrack', readonly id: string } | { readonly __typename: 'PlaylistTrack', readonly id: string }> | null } } | null } };\n\nexport type TrackRecommendationPreviewQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type TrackRecommendationPreviewQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendation?: { readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | null } } };\n\nexport type PlaybackFullQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n quality: StreamQuality;\n}>;\n\n\nexport type PlaybackFullQuery = { readonly __typename: 'Queries', readonly playback: { readonly __typename: 'Playback', readonly full?: string | null } };\n\nexport type PlaybackSampleQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type PlaybackSampleQuery = { readonly __typename: 'Queries', readonly playback: { readonly __typename: 'Playback', readonly sample?: string | null } };\n\nexport type PlaylistPreviewQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type PlaylistPreviewQuery = { readonly __typename: 'Queries', readonly playlists: { readonly __typename: 'Playlists', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | null } };\n\nexport type PlaylistPageQueryVariables = Exact<{\n first?: InputMaybe<Scalars['Int']['input']>;\n id: Scalars['ID']['input'];\n orderBy: PlaylistTracksSorting;\n criterion?: InputMaybe<Scalars['String']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type PlaylistPageQuery = { readonly __typename: 'Queries', readonly playlists: { readonly __typename: 'Playlists', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly followersCount: number, readonly duration: number, readonly cover: string, readonly share: string, readonly tracksCount: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'MusicPlaylist', readonly followersCount: number, readonly duration: number, readonly cover: string, readonly share: string, readonly tracksCount: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type PlaylistTracksPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: PlaylistTracksSorting;\n criterion?: InputMaybe<Scalars['String']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type PlaylistTracksPaginationQuery = { readonly __typename: 'Queries', readonly playlists: { readonly __typename: 'Playlists', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'MusicPlaylist', readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type PlaylistPlayQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n orderBy: PlaylistTracksSorting;\n criterion?: InputMaybe<Scalars['String']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type PlaylistPlayQuery = { readonly __typename: 'Queries', readonly playlists: { readonly __typename: 'Playlists', readonly playlist?: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'PlaylistTrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistTrack', readonly position: number, readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type PlaylistCategoriesPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type PlaylistCategoriesPageQuery = { readonly __typename: 'Queries', readonly playlists: { readonly __typename: 'Playlists', readonly playlistCategories: { readonly __typename: 'PlaylistCategories', readonly playlistCategories: { readonly __typename: 'PlaylistCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string }> | null } } } };\n\nexport type PlaylistCategoriesPaginationQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n after: Scalars['String']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type PlaylistCategoriesPaginationQuery = { readonly __typename: 'Queries', readonly playlists: { readonly __typename: 'Playlists', readonly playlistCategories: { readonly __typename: 'PlaylistCategories', readonly playlistCategories: { readonly __typename: 'PlaylistCategoryConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string }> | null } } } };\n\nexport type PlaylistCategoryPageQueryVariables = Exact<{\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type PlaylistCategoryPageQuery = { readonly __typename: 'Queries', readonly playlists: { readonly __typename: 'Playlists', readonly playlistCategories: { readonly __typename: 'PlaylistCategories', readonly playlistCategory?: { readonly __typename: 'PlaylistCategory', readonly cover: string, readonly id: string, readonly title: string, readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } | null } } };\n\nexport type PlaylistCategoryPlaylistsPaginationQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type PlaylistCategoryPlaylistsPaginationQuery = { readonly __typename: 'Queries', readonly playlists: { readonly __typename: 'Playlists', readonly playlistCategories: { readonly __typename: 'PlaylistCategories', readonly playlistCategory?: { readonly __typename: 'PlaylistCategory', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } | null } } };\n\nexport type UserProfilesQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type UserProfilesQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly user: { readonly __typename: 'User', readonly profiles: { readonly __typename: 'MyProfiles', readonly profiles?: { readonly __typename: 'ProfileConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'Profile', readonly color: string, readonly current: boolean, readonly description?: string | null, readonly id: string, readonly title: string, readonly master: boolean }> | null } | null, readonly settings: { readonly __typename: 'ProfilesSettings', readonly profilesNumberLimit: number, readonly defaultColors: ReadonlyArray<string> } } } } };\n\nexport type ProfilesColorsQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type ProfilesColorsQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly user: { readonly __typename: 'User', readonly profiles: { readonly __typename: 'MyProfiles', readonly settings: { readonly __typename: 'ProfilesSettings', readonly defaultColors: ReadonlyArray<string> } } } } };\n\nexport type RecentlyAddedQueryVariables = Exact<{\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type RecentlyAddedQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly history: { readonly __typename: 'MyHistory', readonly recentlyAdded: { readonly __typename: 'MixedContentConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixedContent', readonly cover: string, readonly id?: string | null, readonly title: string, readonly subtitle?: string | null, readonly type?: MixedContentType | null }> | null } } } };\n\nexport type RecommendationLinkQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type RecommendationLinkQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendation?: { readonly __typename: 'AlbumsRecommendation', readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly id: string, readonly title: string } | null } } };\n\nexport type RecommendationPageQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n first: Scalars['Int']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type RecommendationPageQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendation?: { readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string, readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } } };\n\nexport type RecommendationContentPaginationQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type RecommendationContentPaginationQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendation?: { readonly __typename: 'AlbumsRecommendation', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'PlaylistsRecommendation', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'TracksRecommendation', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } } };\n\nexport type RecommendationPlayQueryVariables = Exact<{\n after?: InputMaybe<Scalars['String']['input']>;\n first: Scalars['Int']['input'];\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type RecommendationPlayQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly recommendations: { readonly __typename: 'MyRecommendations', readonly recommendation?: { readonly __typename: 'AlbumsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'PlaylistsRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string } | { readonly __typename: 'TracksRecommendation', readonly cover: string, readonly subtitle?: string | null, readonly id: string, readonly title: string, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } } };\n\nexport type SearchMixedSectionsQueryVariables = Exact<{\n criterion: Scalars['String']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n itemsLimit?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type SearchMixedSectionsQuery = { readonly __typename: 'Queries', readonly search: { readonly __typename: 'Search', readonly mixed: { readonly __typename: 'MixedSearchResultConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'AlbumMixedSearchResult', readonly album: { readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } } | { readonly __typename: 'ArtistMixedSearchResult', readonly artist: { readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } } | { readonly __typename: 'TrackMixedSearchResult', readonly track: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } }> | null }, readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null }, readonly artists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null }, readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } };\n\nexport type SearchPlaylistsSectionQueryVariables = Exact<{\n criterion: Scalars['String']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n itemsLimit?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type SearchPlaylistsSectionQuery = { readonly __typename: 'Queries', readonly search: { readonly __typename: 'Search', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } };\n\nexport type SearchTracksPageQueryVariables = Exact<{\n criterion: Scalars['String']['input'];\n first?: InputMaybe<Scalars['Int']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type SearchTracksPageQuery = { readonly __typename: 'Queries', readonly search: { readonly __typename: 'Search', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } };\n\nexport type SearchAlbumsPageQueryVariables = Exact<{\n criterion: Scalars['String']['input'];\n first?: InputMaybe<Scalars['Int']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type SearchAlbumsPageQuery = { readonly __typename: 'Queries', readonly search: { readonly __typename: 'Search', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } };\n\nexport type SearchArtistsPageQueryVariables = Exact<{\n criterion: Scalars['String']['input'];\n first?: InputMaybe<Scalars['Int']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type SearchArtistsPageQuery = { readonly __typename: 'Queries', readonly search: { readonly __typename: 'Search', readonly artists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } };\n\nexport type SearchPlaylistsPageQueryVariables = Exact<{\n criterion: Scalars['String']['input'];\n first?: InputMaybe<Scalars['Int']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type SearchPlaylistsPageQuery = { readonly __typename: 'Queries', readonly search: { readonly __typename: 'Search', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } };\n\nexport type SearchTracksPaginationQueryVariables = Exact<{\n criterion: Scalars['String']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type SearchTracksPaginationQuery = { readonly __typename: 'Queries', readonly search: { readonly __typename: 'Search', readonly tracks: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } };\n\nexport type SearchAlbumsPaginationQueryVariables = Exact<{\n criterion: Scalars['String']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type SearchAlbumsPaginationQuery = { readonly __typename: 'Queries', readonly search: { readonly __typename: 'Search', readonly albums: { readonly __typename: 'AlbumConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteAlbum', readonly cover: string, readonly duration: number, readonly releaseDate: any, readonly share: string, readonly tracksCount: number, readonly available: boolean, readonly id: string, readonly title: string, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } };\n\nexport type SearchArtistsPaginationQueryVariables = Exact<{\n criterion: Scalars['String']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type SearchArtistsPaginationQuery = { readonly __typename: 'Queries', readonly search: { readonly __typename: 'Search', readonly artists: { readonly __typename: 'ArtistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly cover: string, readonly share: string, readonly id: string, readonly title: string }> | null } } };\n\nexport type SearchPlaylistsPaginationQueryVariables = Exact<{\n criterion: Scalars['String']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type SearchPlaylistsPaginationQuery = { readonly __typename: 'Queries', readonly search: { readonly __typename: 'Search', readonly playlists: { readonly __typename: 'PlaylistConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string }> | null } } };\n\nexport type TrackLinkQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type TrackLinkQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'FavoriteTrack', readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | { readonly __typename: 'PlaylistTrack', readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly id: string } } | null } };\n\nexport type TrackPreviewQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type TrackPreviewQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | null } };\n\nexport type TrackLyricsIdQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type TrackLyricsIdQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly lyrics?: { readonly __typename: 'Lyrics', readonly id: string } | null } | { readonly __typename: 'FavoriteTrack', readonly lyrics?: { readonly __typename: 'Lyrics', readonly id: string } | null } | { readonly __typename: 'PlaylistTrack', readonly lyrics?: { readonly __typename: 'Lyrics', readonly id: string } | null } | null } };\n\nexport type TrackLyricsPageQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type TrackLyricsPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly lyrics?: { readonly __typename: 'Lyrics', readonly id: string, readonly synchronizationType: SynchronizationType, readonly credits: { readonly __typename: 'LyricsCredits', readonly provider?: string | null, readonly writer?: string | null, readonly publisher?: string | null }, readonly lrc: { readonly __typename: 'LrcItemConnection', readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LrcItem', readonly startInMs?: number | null, readonly durationInMs?: number | null, readonly line: string }> | null } } | null } | { readonly __typename: 'FavoriteTrack', readonly lyrics?: { readonly __typename: 'Lyrics', readonly id: string, readonly synchronizationType: SynchronizationType, readonly credits: { readonly __typename: 'LyricsCredits', readonly provider?: string | null, readonly writer?: string | null, readonly publisher?: string | null }, readonly lrc: { readonly __typename: 'LrcItemConnection', readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LrcItem', readonly startInMs?: number | null, readonly durationInMs?: number | null, readonly line: string }> | null } } | null } | { readonly __typename: 'PlaylistTrack', readonly lyrics?: { readonly __typename: 'Lyrics', readonly id: string, readonly synchronizationType: SynchronizationType, readonly credits: { readonly __typename: 'LyricsCredits', readonly provider?: string | null, readonly writer?: string | null, readonly publisher?: string | null }, readonly lrc: { readonly __typename: 'LrcItemConnection', readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LrcItem', readonly startInMs?: number | null, readonly durationInMs?: number | null, readonly line: string }> | null } } | null } | null } };\n\nexport type TrackLyricsPaginationQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type TrackLyricsPaginationQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly lyrics?: { readonly __typename: 'Lyrics', readonly lrc: { readonly __typename: 'LrcItemConnection', readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LrcItem', readonly startInMs?: number | null, readonly durationInMs?: number | null, readonly line: string }> | null } } | null } | { readonly __typename: 'FavoriteTrack', readonly lyrics?: { readonly __typename: 'Lyrics', readonly lrc: { readonly __typename: 'LrcItemConnection', readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LrcItem', readonly startInMs?: number | null, readonly durationInMs?: number | null, readonly line: string }> | null } } | null } | { readonly __typename: 'PlaylistTrack', readonly lyrics?: { readonly __typename: 'Lyrics', readonly lrc: { readonly __typename: 'LrcItemConnection', readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'LrcItem', readonly startInMs?: number | null, readonly durationInMs?: number | null, readonly line: string }> | null } } | null } | null } };\n\nexport type TrackRadioPageQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n first?: InputMaybe<Scalars['Int']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type TrackRadioPageQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type TrackRadioPlayQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n first?: InputMaybe<Scalars['Int']['input']>;\n after?: InputMaybe<Scalars['String']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type TrackRadioPlayQuery = { readonly __typename: 'Queries', readonly catalog: { readonly __typename: 'Catalog', readonly track?: { readonly __typename: 'CatalogTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly id: string, readonly title: string, readonly trackRadio: { readonly __typename: 'TrackConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'FavoriteTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } } | { readonly __typename: 'PlaylistTrack', readonly cover: string, readonly duration: number, readonly share: string, readonly availableToStream: boolean, readonly genre: string, readonly playbackContext: string, readonly id: string, readonly title: string, readonly album: { readonly __typename: 'CatalogAlbum', readonly title: string, readonly id: string } | { readonly __typename: 'FavoriteAlbum', readonly title: string, readonly id: string }, readonly artist: { readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }, readonly featuredArtists: { readonly __typename: 'ArtistConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'CatalogArtist', readonly id: string, readonly title: string } | { readonly __typename: 'FavoriteArtist', readonly id: string, readonly title: string }> | null } }> | null } } | null } };\n\nexport type UrlTransformQueryVariables = Exact<{\n transform: UrlTransformInput;\n}>;\n\n\nexport type UrlTransformQuery = { readonly __typename: 'Queries', readonly system: { readonly __typename: 'System', readonly urlTransform: { readonly __typename: 'UrlTransform', readonly url?: string | null } } };\n\nexport type UserIdQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type UserIdQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly user: { readonly __typename: 'User', readonly id: string, readonly trackingId: string, readonly username?: string | null } } };\n\nexport type UserId2QueryVariables = Exact<{\n includeProfiles: Scalars['Boolean']['input'];\n}>;\n\n\nexport type UserId2Query = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly user: { readonly __typename: 'User', readonly id: string, readonly username?: string | null, readonly useInviteFlow: boolean, readonly trackingId: string, readonly profiles?: { readonly __typename: 'MyProfiles', readonly profiles?: { readonly __typename: 'ProfileConnection', readonly items?: ReadonlyArray<{ readonly __typename: 'Profile', readonly color: string, readonly current: boolean, readonly description?: string | null, readonly id: string, readonly title: string, readonly master: boolean }> | null } | null, readonly settings: { readonly __typename: 'ProfilesSettings', readonly profilesNumberLimit: number, readonly defaultColors: ReadonlyArray<string> } } } } };\n\nexport type UserHistoryRecentContextQueryVariables = Exact<{\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type UserHistoryRecentContextQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly history: { readonly __typename: 'MyHistory', readonly recentContexts: { readonly __typename: 'MixedContentConnection', readonly totalCount?: number | null, readonly pageInfo: { readonly __typename: 'PageInfo', readonly endCursor?: string | null, readonly hasNextPage: boolean }, readonly items?: ReadonlyArray<{ readonly __typename: 'MixedContent', readonly cover: string, readonly id?: string | null, readonly title: string, readonly subtitle?: string | null, readonly type?: MixedContentType | null }> | null } } } };\n\nexport type UseInviteFlowQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type UseInviteFlowQuery = { readonly __typename: 'Queries', readonly me: { readonly __typename: 'Me', readonly user: { readonly __typename: 'User', readonly useInviteFlow: boolean } } };\n\nexport type ReportLyricsMutationVariables = Exact<{\n report: ReportLyricsDisplayInput;\n}>;\n\n\nexport type ReportLyricsMutation = { readonly __typename: 'Mutations', readonly lyrics: { readonly __typename: 'LyricsMutation', readonly reportLyricsDisplay: { readonly __typename: 'ReportLyricsDisplayResult', readonly ok: boolean } } };\n\nexport type ConcurrencyCanPlayMutationVariables = Exact<{\n id: Scalars['String']['input'];\n}>;\n\n\nexport type ConcurrencyCanPlayMutation = { readonly __typename: 'Mutations', readonly playbackConcurrency: { readonly __typename: 'PlaybackConcurrencyMutation', readonly canPlay: { readonly __typename: 'CanPlayConcurrentlyResult', readonly canPlay: boolean } } };\n\nexport type ConcurrencyCreateTicketMutationVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type ConcurrencyCreateTicketMutation = { readonly __typename: 'Mutations', readonly playbackConcurrency: { readonly __typename: 'PlaybackConcurrencyMutation', readonly createTicket: { readonly __typename: 'CreateConcurrencyTicketResult', readonly ok: boolean, readonly ticket: string } } };\n\nexport type AddAlbumToFavoritesMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type AddAlbumToFavoritesMutation = { readonly __typename: 'Mutations', readonly favorites: { readonly __typename: 'FavoritesMutation', readonly addAlbum: { readonly __typename: 'AddFavoriteAlbumResult', readonly ok: boolean } } };\n\nexport type AddPlaylistToFavoritesMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type AddPlaylistToFavoritesMutation = { readonly __typename: 'Mutations', readonly favorites: { readonly __typename: 'FavoritesMutation', readonly addPlaylist: { readonly __typename: 'AddFavoritePlaylistResult', readonly ok: boolean } } };\n\nexport type AddArtistToFavoritesMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type AddArtistToFavoritesMutation = { readonly __typename: 'Mutations', readonly favorites: { readonly __typename: 'FavoritesMutation', readonly addArtist: { readonly __typename: 'AddFavoriteArtistResult', readonly ok: boolean } } };\n\nexport type AddTrackToFavoritesMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type AddTrackToFavoritesMutation = { readonly __typename: 'Mutations', readonly favorites: { readonly __typename: 'FavoritesMutation', readonly addTrack: { readonly __typename: 'AddFavoriteTrackResult', readonly ok: boolean } } };\n\nexport type RemoveAlbumFromFavoritesMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type RemoveAlbumFromFavoritesMutation = { readonly __typename: 'Mutations', readonly favorites: { readonly __typename: 'FavoritesMutation', readonly removeAlbum: { readonly __typename: 'RemoveFavoriteAlbumResult', readonly ok: boolean } } };\n\nexport type RemovePlaylistFromFavoritesMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type RemovePlaylistFromFavoritesMutation = { readonly __typename: 'Mutations', readonly favorites: { readonly __typename: 'FavoritesMutation', readonly removePlaylist: { readonly __typename: 'RemoveFavoritePlaylistResult', readonly ok: boolean } } };\n\nexport type RemoveTrackFromFavoritesMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type RemoveTrackFromFavoritesMutation = { readonly __typename: 'Mutations', readonly favorites: { readonly __typename: 'FavoritesMutation', readonly removeTrack: { readonly __typename: 'RemoveFavoriteTrackResult', readonly ok: boolean } } };\n\nexport type RemoveArtistFromFavoritesMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type RemoveArtistFromFavoritesMutation = { readonly __typename: 'Mutations', readonly favorites: { readonly __typename: 'FavoritesMutation', readonly removeArtist: { readonly __typename: 'RemoveFavoriteArtistResult', readonly ok: boolean } } };\n\nexport type SendFeedbackMutationVariables = Exact<{\n feedback: SendFeedbackInput;\n}>;\n\n\nexport type SendFeedbackMutation = { readonly __typename: 'Mutations', readonly feedbacks: { readonly __typename: 'FeedbacksMutation', readonly send: { readonly __typename: 'SendFeedbackResult', readonly ok: boolean } } };\n\nexport type LiveRadioHeartbeatMutationVariables = Exact<{\n heartBeat: ReportLiveRadioHeartbeatInput;\n}>;\n\n\nexport type LiveRadioHeartbeatMutation = { readonly __typename: 'Mutations', readonly liveRadios: { readonly __typename: 'LiveRadiosMutation', readonly reportHeartbeat: { readonly __typename: 'LiveRadioHeartbeatResult', readonly ok: boolean } } };\n\nexport type MarkNotificationsAsSeenMutationVariables = Exact<{\n notificationsState: Scalars['String']['input'];\n}>;\n\n\nexport type MarkNotificationsAsSeenMutation = { readonly __typename: 'Mutations', readonly notifications: { readonly __typename: 'NotificationsMutation', readonly markAsSeen: { readonly __typename: 'MarkNotificationsAsSeenResult', readonly ok: boolean } } };\n\nexport type CreatePlaylistMutationVariables = Exact<{\n input: CreatePlaylistInput;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type CreatePlaylistMutation = { readonly __typename: 'Mutations', readonly playlists: { readonly __typename: 'PlaylistsMutation', readonly create: { readonly __typename: 'CreatePlaylistResult', readonly ok: boolean, readonly playlist: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } } } };\n\nexport type UpdatePlaylistMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n input: UpdatePlaylistInput;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type UpdatePlaylistMutation = { readonly __typename: 'Mutations', readonly playlists: { readonly __typename: 'PlaylistsMutation', readonly update: { readonly __typename: 'UpdatePlaylistResult', readonly ok: boolean, readonly playlist: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } } } };\n\nexport type DeletePlaylistMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type DeletePlaylistMutation = { readonly __typename: 'Mutations', readonly playlists: { readonly __typename: 'PlaylistsMutation', readonly delete: { readonly __typename: 'DeletePlaylistResult', readonly ok: boolean } } };\n\nexport type ModifyTracksInPlaylistMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n modifications: ReadonlyArray<InputMaybe<ModifyPlaylistTrackInput>> | InputMaybe<ModifyPlaylistTrackInput>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type ModifyTracksInPlaylistMutation = { readonly __typename: 'Mutations', readonly playlists: { readonly __typename: 'PlaylistsMutation', readonly modifyTracks: { readonly __typename: 'ModifyPlaylistTracksResult', readonly ok: boolean, readonly playlist: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } } } };\n\nexport type AddTracksToPlaylistMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n trackIds: ReadonlyArray<InputMaybe<Scalars['ID']['input']>> | InputMaybe<Scalars['ID']['input']>;\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n duplicatesHandling: DuplicatesHandling;\n}>;\n\n\nexport type AddTracksToPlaylistMutation = { readonly __typename: 'Mutations', readonly playlists: { readonly __typename: 'PlaylistsMutation', readonly addTracks: { readonly __typename: 'AddTracksToPlaylistResult', readonly ok: boolean, readonly addedCount: number, readonly skippedCount: number, readonly resultingCount: number, readonly playlist: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } } } };\n\nexport type AddAlbumToPlaylistMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n albumId: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n duplicatesHandling: DuplicatesHandling;\n}>;\n\n\nexport type AddAlbumToPlaylistMutation = { readonly __typename: 'Mutations', readonly playlists: { readonly __typename: 'PlaylistsMutation', readonly addAlbum: { readonly __typename: 'AddTracksToPlaylistResult', readonly ok: boolean, readonly addedCount: number, readonly skippedCount: number, readonly resultingCount: number, readonly playlist: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } } } };\n\nexport type AddPlaylistToPlaylistMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n playlistId: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n duplicatesHandling: DuplicatesHandling;\n}>;\n\n\nexport type AddPlaylistToPlaylistMutation = { readonly __typename: 'Mutations', readonly playlists: { readonly __typename: 'PlaylistsMutation', readonly addPlaylist: { readonly __typename: 'AddTracksToPlaylistResult', readonly ok: boolean, readonly addedCount: number, readonly skippedCount: number, readonly resultingCount: number, readonly playlist: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } } } };\n\nexport type AddRecommendationToPlaylistMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n recommendationID: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n duplicatesHandling: DuplicatesHandling;\n}>;\n\n\nexport type AddRecommendationToPlaylistMutation = { readonly __typename: 'Mutations', readonly playlists: { readonly __typename: 'PlaylistsMutation', readonly addRecommendation: { readonly __typename: 'AddTracksToPlaylistResult', readonly ok: boolean, readonly addedCount: number, readonly skippedCount: number, readonly resultingCount: number, readonly playlist: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } } } };\n\nexport type AddTrackChartToPlaylistMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n chartId: Scalars['ID']['input'];\n imageSize?: InputMaybe<Scalars['Int']['input']>;\n duplicatesHandling: DuplicatesHandling;\n}>;\n\n\nexport type AddTrackChartToPlaylistMutation = { readonly __typename: 'Mutations', readonly playlists: { readonly __typename: 'PlaylistsMutation', readonly addChart: { readonly __typename: 'AddTracksToPlaylistResult', readonly ok: boolean, readonly addedCount: number, readonly skippedCount: number, readonly resultingCount: number, readonly playlist: { readonly __typename: 'FavoritePlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } | { readonly __typename: 'MusicPlaylist', readonly cover: string, readonly share: string, readonly tracksCount: number, readonly duration: number, readonly createdAt: any, readonly modifiedAt: any, readonly visibility: PlaylistVisibility, readonly isOwned: boolean, readonly id: string, readonly title: string } } } };\n\nexport type CreateProfileMutationVariables = Exact<{\n input: AddProfileInput;\n}>;\n\n\nexport type CreateProfileMutation = { readonly __typename: 'Mutations', readonly profiles: { readonly __typename: 'ProfilesMutation', readonly addProfile: { readonly __typename: 'AddProfileResult', readonly ok: boolean, readonly profile: { readonly __typename: 'Profile', readonly color: string, readonly current: boolean, readonly description?: string | null, readonly id: string, readonly title: string, readonly master: boolean } } } };\n\nexport type UpdateProfileMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n input: UpdateProfileInput;\n}>;\n\n\nexport type UpdateProfileMutation = { readonly __typename: 'Mutations', readonly profiles: { readonly __typename: 'ProfilesMutation', readonly updateProfile: { readonly __typename: 'UpdateProfileResult', readonly ok: boolean } } };\n\nexport type RemoveProfileMutationVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type RemoveProfileMutation = { readonly __typename: 'Mutations', readonly profiles: { readonly __typename: 'ProfilesMutation', readonly removeProfile: { readonly __typename: 'RemoveProfileResult', readonly ok: boolean } } };\n\nexport type ReportPlaybackMutationVariables = Exact<{\n report: ReportPlaybackInput;\n}>;\n\n\nexport type ReportPlaybackMutation = { readonly __typename: 'Mutations', readonly reportPlayback: { readonly __typename: 'ReportPlaybackResult', readonly ok: boolean } };\n\nexport declare const AlbumLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const AlbumPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const AlbumPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const AlbumPageFragment: import(\"graphql\").DocumentNode;\nexport declare const AlbumHeaderSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const AlbumTracksSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const AlbumPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const FavouriteAlbumPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const FavouriteAlbumPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const AlbumArtistAlbumsLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const AlbumArtistAlbumsSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const AlbumArtistAlbumsPageFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistPageFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistHeaderSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const FavoriteArtistPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const FavouriteArtistPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistAlbumsLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistAlbumsSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistAlbumsPageFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistAppearsOnAlbumsSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistAppearsOnAlbumsPageFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistRadioLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistRadioPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistRadioPageFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistRadioPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistSimilarArtistsSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistSimilarArtistsPageFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistSinglesSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistSinglesPageFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistPopularTracksSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistTracksPageFragment: import(\"graphql\").DocumentNode;\nexport declare const ArtistTracksPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const BannerLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const BannerPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const BannerPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const ChartLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const ChartPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const ChartPageFragment: import(\"graphql\").DocumentNode;\nexport declare const ChartPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackChartPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const FavoritePlaylistPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const FavoritePlaylistPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const LayoutLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const LayoutPageFragment: import(\"graphql\").DocumentNode;\nexport declare const LayoutItemLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const LayoutItemSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const LayoutItemPageFragment: import(\"graphql\").DocumentNode;\nexport declare const LayoutItemTracksPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const LayoutItemContentFragment: import(\"graphql\").DocumentNode;\nexport declare const LayoutItemSectionConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const liveRadioPageFragment: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioCategoriesPageFragment: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioCategoryLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioCategoryPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioCategoryPageFragment: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioCategoryPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const MixRadioLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const MixRadioPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const MixRadioPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const MixRadioPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const MixRadioCategoryLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const MixRadioCategoryPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const MixRadioCategoryPageFragment: import(\"graphql\").DocumentNode;\nexport declare const MixRadioCategoryPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const MixRadiosPageFragment: import(\"graphql\").DocumentNode;\nexport declare const MixedContentPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const MixedContentPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const DiscoverRecommendationsPageFragment: import(\"graphql\").DocumentNode;\nexport declare const HistoryRecommendationsPageFragment: import(\"graphql\").DocumentNode;\nexport declare const NameValueFragment: import(\"graphql\").DocumentNode;\nexport declare const NotificationLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const NotificationPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const NotificationPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const PageInfoFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistPageFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistCategoriesPageFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistCategoriesPaginationFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistCategoryLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistCategoryPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistCategoryPageFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistCategoryPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const ProfileFragment: import(\"graphql\").DocumentNode;\nexport declare const RecommendationLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const RecommendationPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const RecommendationPageFragment: import(\"graphql\").DocumentNode;\nexport declare const RecommendationPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const RecommendationPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const SearchMixedSectionsFragment: import(\"graphql\").DocumentNode;\nexport declare const SearchPlaylistsSectionFragment: import(\"graphql\").DocumentNode;\nexport declare const SearchTracksPageFragment: import(\"graphql\").DocumentNode;\nexport declare const SearchAlbumsPageFragment: import(\"graphql\").DocumentNode;\nexport declare const SearchArtistsPageFragment: import(\"graphql\").DocumentNode;\nexport declare const SearchPlaylistsPageFragment: import(\"graphql\").DocumentNode;\nexport declare const MixedSearchResultConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const StatisticsItemConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const StatisticsLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const StatisticsItemFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackWithoutAlbumPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackWithoutAlbumPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const FavoriteTrackWithoutAlbumPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const FavoriteTrackPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const FavoriteTrackPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistTrackPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const PlaylistTrackPreviewConnectionFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackLyricsItemsFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackLyricsPageFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackRadioLinkFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackRadioPreviewFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackRadioPageFragment: import(\"graphql\").DocumentNode;\nexport declare const TrackRadioPlayFragment: import(\"graphql\").DocumentNode;\nexport declare const albumPreview: import(\"graphql\").DocumentNode;\nexport declare const albumPage: import(\"graphql\").DocumentNode;\nexport declare const albumHeaderSection: import(\"graphql\").DocumentNode;\nexport declare const albumHeaderSectionByTrack: import(\"graphql\").DocumentNode;\nexport declare const albumTracksSection: import(\"graphql\").DocumentNode;\nexport declare const albumTracksSectionByTrack: import(\"graphql\").DocumentNode;\nexport declare const albumTracksPagination: import(\"graphql\").DocumentNode;\nexport declare const temp_albumTracksPaginationWithPreview: import(\"graphql\").DocumentNode;\nexport declare const albumTracksByTrackPagination: import(\"graphql\").DocumentNode;\nexport declare const albumPlay: import(\"graphql\").DocumentNode;\nexport declare const albumArtistAlbumsSection: import(\"graphql\").DocumentNode;\nexport declare const albumArtistAlbumsByTrackSection: import(\"graphql\").DocumentNode;\nexport declare const albumArtistAlbumsPage: import(\"graphql\").DocumentNode;\nexport declare const albumArtistAlbumsPagination: import(\"graphql\").DocumentNode;\nexport declare const artistLink: import(\"graphql\").DocumentNode;\nexport declare const artistPreview: import(\"graphql\").DocumentNode;\nexport declare const artistPage: import(\"graphql\").DocumentNode;\nexport declare const artistPageHeaderSection: import(\"graphql\").DocumentNode;\nexport declare const artistPopularTracksSection: import(\"graphql\").DocumentNode;\nexport declare const artistAlbumsSection: import(\"graphql\").DocumentNode;\nexport declare const artistSinglesSection: import(\"graphql\").DocumentNode;\nexport declare const artistSimilarArtistsSection: import(\"graphql\").DocumentNode;\nexport declare const artistAppearsOnAlbumsSection: import(\"graphql\").DocumentNode;\nexport declare const artistPlay: import(\"graphql\").DocumentNode;\nexport declare const artistAlbumsPage: import(\"graphql\").DocumentNode;\nexport declare const artistAlbumsPagination: import(\"graphql\").DocumentNode;\nexport declare const ArtistAppearsOnAlbumsPage: import(\"graphql\").DocumentNode;\nexport declare const ArtistAppearsOnAlbumsPagination: import(\"graphql\").DocumentNode;\nexport declare const artistRadioPage: import(\"graphql\").DocumentNode;\nexport declare const artistSimilarArtistsPage: import(\"graphql\").DocumentNode;\nexport declare const artistSimilarArtistsPagination: import(\"graphql\").DocumentNode;\nexport declare const artistSinglesPage: import(\"graphql\").DocumentNode;\nexport declare const artistSinglesPagination: import(\"graphql\").DocumentNode;\nexport declare const artistTracksPage: import(\"graphql\").DocumentNode;\nexport declare const artistTracksPagination: import(\"graphql\").DocumentNode;\nexport declare const artistTracksPlay: import(\"graphql\").DocumentNode;\nexport declare const authorizeUris: import(\"graphql\").DocumentNode;\nexport declare const deviceAuthorize: import(\"graphql\").DocumentNode;\nexport declare const LogoutAllDevices: import(\"graphql\").DocumentNode;\nexport declare const inviteFlowHelpUrl: import(\"graphql\").DocumentNode;\nexport declare const chartLink: import(\"graphql\").DocumentNode;\nexport declare const chartPreview: import(\"graphql\").DocumentNode;\nexport declare const chartPage: import(\"graphql\").DocumentNode;\nexport declare const chartItemsPagination: import(\"graphql\").DocumentNode;\nexport declare const firstTrackChart: import(\"graphql\").DocumentNode;\nexport declare const trackChartPlay: import(\"graphql\").DocumentNode;\nexport declare const endlessPlay: import(\"graphql\").DocumentNode;\nexport declare const favoriteTracks: import(\"graphql\").DocumentNode;\nexport declare const favoriteTracksDelta: import(\"graphql\").DocumentNode;\nexport declare const favoriteAlbumsDelta: import(\"graphql\").DocumentNode;\nexport declare const favoriteAlbums: import(\"graphql\").DocumentNode;\nexport declare const favoriteArtists: import(\"graphql\").DocumentNode;\nexport declare const favoriteArtistsDelta: import(\"graphql\").DocumentNode;\nexport declare const combinedPlaylistsPagination: import(\"graphql\").DocumentNode;\nexport declare const combinedPlaylist: import(\"graphql\").DocumentNode;\nexport declare const isCombinedPlaylist: import(\"graphql\").DocumentNode;\nexport declare const isFavorite: import(\"graphql\").DocumentNode;\nexport declare const ownPlaylists: import(\"graphql\").DocumentNode;\nexport declare const favoritesStatistics: import(\"graphql\").DocumentNode;\nexport declare const favoriteTracksFullSyncInHours: import(\"graphql\").DocumentNode;\nexport declare const favoriteArtistsFullSyncInHours: import(\"graphql\").DocumentNode;\nexport declare const favoriteAlbumsFullSyncInHours: import(\"graphql\").DocumentNode;\nexport declare const LayoutItemSection: import(\"graphql\").DocumentNode;\nexport declare const layoutItemPage: import(\"graphql\").DocumentNode;\nexport declare const LayoutItemContentPagination: import(\"graphql\").DocumentNode;\nexport declare const layoutItemPlay: import(\"graphql\").DocumentNode;\nexport declare const layoutPage: import(\"graphql\").DocumentNode;\nexport declare const LayoutPageLink: import(\"graphql\").DocumentNode;\nexport declare const liveRadioPlay: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioPreview: import(\"graphql\").DocumentNode;\nexport declare const liveRadioNowAndRecentlyPlayed: import(\"graphql\").DocumentNode;\nexport declare const liveRadioHeartbeatInSeconds: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioCategoryLink: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioCategoryPreview: import(\"graphql\").DocumentNode;\nexport declare const liveRadioCategoryPage: import(\"graphql\").DocumentNode;\nexport declare const liveRadioCategoryLiveRadiosPagination: import(\"graphql\").DocumentNode;\nexport declare const liveRadioCategoryPageByLiveRadio: import(\"graphql\").DocumentNode;\nexport declare const liveRadioCategoryByLiveRadioLiveRadiosPagination: import(\"graphql\").DocumentNode;\nexport declare const LiveRadioLiveRadioCategoryLink: import(\"graphql\").DocumentNode;\nexport declare const mixRadioPreview: import(\"graphql\").DocumentNode;\nexport declare const mixRadioTracksPagination: import(\"graphql\").DocumentNode;\nexport declare const mixRadioPlay: import(\"graphql\").DocumentNode;\nexport declare const mixRadioCategoryPage: import(\"graphql\").DocumentNode;\nexport declare const mixRadioCategoryPagination: import(\"graphql\").DocumentNode;\nexport declare const mixRadiosPage: import(\"graphql\").DocumentNode;\nexport declare const recentTracks: import(\"graphql\").DocumentNode;\nexport declare const notificationsPoll: import(\"graphql\").DocumentNode;\nexport declare const notifications: import(\"graphql\").DocumentNode;\nexport declare const recommendationsPage: import(\"graphql\").DocumentNode;\nexport declare const recommendationsPagination: import(\"graphql\").DocumentNode;\nexport declare const historyRecommendationsPage: import(\"graphql\").DocumentNode;\nexport declare const historyRecommendationsPagination: import(\"graphql\").DocumentNode;\nexport declare const discoverRecommendationsPage: import(\"graphql\").DocumentNode;\nexport declare const discoverRecommendationsPagination: import(\"graphql\").DocumentNode;\nexport declare const playlistNotificationCheck: import(\"graphql\").DocumentNode;\nexport declare const trackRecommendationNotificationCheck: import(\"graphql\").DocumentNode;\nexport declare const trackChartNotificationCheck: import(\"graphql\").DocumentNode;\nexport declare const trackRecommendationPreview: import(\"graphql\").DocumentNode;\nexport declare const playbackFull: import(\"graphql\").DocumentNode;\nexport declare const playbackSample: import(\"graphql\").DocumentNode;\nexport declare const playlistPreview: import(\"graphql\").DocumentNode;\nexport declare const playlistPage: import(\"graphql\").DocumentNode;\nexport declare const playlistTracksPagination: import(\"graphql\").DocumentNode;\nexport declare const playlistPlay: import(\"graphql\").DocumentNode;\nexport declare const playlistCategoriesPage: import(\"graphql\").DocumentNode;\nexport declare const playlistCategoriesPagination: import(\"graphql\").DocumentNode;\nexport declare const playlistCategoryPage: import(\"graphql\").DocumentNode;\nexport declare const playlistCategoryPlaylistsPagination: import(\"graphql\").DocumentNode;\nexport declare const userProfiles: import(\"graphql\").DocumentNode;\nexport declare const profilesColors: import(\"graphql\").DocumentNode;\nexport declare const recentlyAdded: import(\"graphql\").DocumentNode;\nexport declare const recommendationLink: import(\"graphql\").DocumentNode;\nexport declare const recommendationPage: import(\"graphql\").DocumentNode;\nexport declare const recommendationContentPagination: import(\"graphql\").DocumentNode;\nexport declare const recommendationPlay: import(\"graphql\").DocumentNode;\nexport declare const searchMixedSections: import(\"graphql\").DocumentNode;\nexport declare const searchPlaylistsSection: import(\"graphql\").DocumentNode;\nexport declare const searchTracksPage: import(\"graphql\").DocumentNode;\nexport declare const searchAlbumsPage: import(\"graphql\").DocumentNode;\nexport declare const searchArtistsPage: import(\"graphql\").DocumentNode;\nexport declare const searchPlaylistsPage: import(\"graphql\").DocumentNode;\nexport declare const searchTracksPagination: import(\"graphql\").DocumentNode;\nexport declare const searchAlbumsPagination: import(\"graphql\").DocumentNode;\nexport declare const searchArtistsPagination: import(\"graphql\").DocumentNode;\nexport declare const searchPlaylistsPagination: import(\"graphql\").DocumentNode;\nexport declare const trackLink: import(\"graphql\").DocumentNode;\nexport declare const trackPreview: import(\"graphql\").DocumentNode;\nexport declare const trackLyricsID: import(\"graphql\").DocumentNode;\nexport declare const trackLyricsPage: import(\"graphql\").DocumentNode;\nexport declare const trackLyricsPagination: import(\"graphql\").DocumentNode;\nexport declare const trackRadioPage: import(\"graphql\").DocumentNode;\nexport declare const trackRadioPlay: import(\"graphql\").DocumentNode;\nexport declare const urlTransform: import(\"graphql\").DocumentNode;\nexport declare const userId: import(\"graphql\").DocumentNode;\nexport declare const userId2: import(\"graphql\").DocumentNode;\nexport declare const UserHistoryRecentContext: import(\"graphql\").DocumentNode;\nexport declare const useInviteFlow: import(\"graphql\").DocumentNode;\nexport declare const reportLyrics: import(\"graphql\").DocumentNode;\nexport declare const concurrencyCanPlay: import(\"graphql\").DocumentNode;\nexport declare const concurrencyCreateTicket: import(\"graphql\").DocumentNode;\nexport declare const addAlbumToFavorites: import(\"graphql\").DocumentNode;\nexport declare const addPlaylistToFavorites: import(\"graphql\").DocumentNode;\nexport declare const addArtistToFavorites: import(\"graphql\").DocumentNode;\nexport declare const addTrackToFavorites: import(\"graphql\").DocumentNode;\nexport declare const removeAlbumFromFavorites: import(\"graphql\").DocumentNode;\nexport declare const removePlaylistFromFavorites: import(\"graphql\").DocumentNode;\nexport declare const removeTrackFromFavorites: import(\"graphql\").DocumentNode;\nexport declare const removeArtistFromFavorites: import(\"graphql\").DocumentNode;\nexport declare const sendFeedback: import(\"graphql\").DocumentNode;\nexport declare const liveRadioHeartbeat: import(\"graphql\").DocumentNode;\nexport declare const markNotificationsAsSeen: import(\"graphql\").DocumentNode;\nexport declare const createPlaylist: import(\"graphql\").DocumentNode;\nexport declare const updatePlaylist: import(\"graphql\").DocumentNode;\nexport declare const deletePlaylist: import(\"graphql\").DocumentNode;\nexport declare const modifyTracksInPlaylist: import(\"graphql\").DocumentNode;\nexport declare const addTracksToPlaylist: import(\"graphql\").DocumentNode;\nexport declare const addAlbumToPlaylist: import(\"graphql\").DocumentNode;\nexport declare const addPlaylistToPlaylist: import(\"graphql\").DocumentNode;\nexport declare const addRecommendationToPlaylist: import(\"graphql\").DocumentNode;\nexport declare const addTrackChartToPlaylist: import(\"graphql\").DocumentNode;\nexport declare const createProfile: import(\"graphql\").DocumentNode;\nexport declare const updateProfile: import(\"graphql\").DocumentNode;\nexport declare const removeProfile: import(\"graphql\").DocumentNode;\nexport declare const reportPlayback: import(\"graphql\").DocumentNode;\nexport const AlbumLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<AlbumLinkFragment, unknown>;\nexport const ArtistLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<ArtistLinkFragment, unknown>;\nexport const AlbumPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<AlbumPreviewFragment, unknown>;\nexport const PageInfoFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}}]} as unknown as DocumentNode<PageInfoFragment, unknown>;\nexport const TrackLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}}]} as unknown as DocumentNode<TrackLinkFragment, unknown>;\nexport const TrackWithoutAlbumPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<TrackWithoutAlbumPreviewFragment, unknown>;\nexport const TrackWithoutAlbumPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}}]} as unknown as DocumentNode<TrackWithoutAlbumPreviewConnectionFragment, unknown>;\nexport const AlbumPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<AlbumPlayFragment, unknown>;\nexport const AlbumHeaderSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumHeaderSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}}]} as unknown as DocumentNode<AlbumHeaderSectionFragment, unknown>;\nexport const AlbumTracksSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumTracksSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<AlbumTracksSectionFragment, unknown>;\nexport const AlbumArtistAlbumsLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]}}]} as unknown as DocumentNode<AlbumArtistAlbumsLinkFragment, unknown>;\nexport const AlbumPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}}]} as unknown as DocumentNode<AlbumPreviewConnectionFragment, unknown>;\nexport const AlbumArtistAlbumsSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<AlbumArtistAlbumsSectionFragment, unknown>;\nexport const AlbumPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumHeaderSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumTracksSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsSectionFragment\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumHeaderSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumTracksSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}}]} as unknown as DocumentNode<AlbumPageFragment, unknown>;\nexport const FavouriteAlbumPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteAlbum\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}}]} as unknown as DocumentNode<FavouriteAlbumPreviewFragment, unknown>;\nexport const FavouriteAlbumPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteAlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteAlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteAlbum\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}}]} as unknown as DocumentNode<FavouriteAlbumPreviewConnectionFragment, unknown>;\nexport const AlbumArtistAlbumsPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<AlbumArtistAlbumsPageFragment, unknown>;\nexport const ArtistPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<ArtistPreviewFragment, unknown>;\nexport const ArtistHeaderSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistHeaderSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}}]} as unknown as DocumentNode<ArtistHeaderSectionFragment, unknown>;\nexport const TrackPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}}]} as unknown as DocumentNode<TrackPreviewFragment, unknown>;\nexport const TrackPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<TrackPreviewConnectionFragment, unknown>;\nexport const ArtistPopularTracksSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPopularTracksSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"5\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistPopularTracksSectionFragment, unknown>;\nexport const ArtistAlbumsLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<ArtistAlbumsLinkFragment, unknown>;\nexport const ArtistAlbumsSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"REGULAR\"},{\"kind\":\"EnumValue\",\"value\":\"COMPILATION\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"NEWEST\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistAlbumsSectionFragment, unknown>;\nexport const ArtistSinglesSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSinglesSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"singles\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"SINGLE\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"NEWEST\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistSinglesSectionFragment, unknown>;\nexport const ArtistPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}}]} as unknown as DocumentNode<ArtistPreviewConnectionFragment, unknown>;\nexport const ArtistSimilarArtistsSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSimilarArtistsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"similarArtists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistSimilarArtistsSectionFragment, unknown>;\nexport const ArtistAppearsOnAlbumsSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"appearsOnAlbums\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredIn\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistAppearsOnAlbumsSectionFragment, unknown>;\nexport const ArtistPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistHeaderSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPopularTracksSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSinglesSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSimilarArtistsSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsSectionFragment\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistHeaderSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPopularTracksSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"5\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"REGULAR\"},{\"kind\":\"EnumValue\",\"value\":\"COMPILATION\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"NEWEST\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSinglesSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"singles\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"SINGLE\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"NEWEST\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSimilarArtistsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"similarArtists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"appearsOnAlbums\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredIn\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistPageFragment, unknown>;\nexport const ArtistPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistPlayFragment, unknown>;\nexport const FavoriteArtistPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}}]} as unknown as DocumentNode<FavoriteArtistPreviewFragment, unknown>;\nexport const FavouriteArtistPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}}]} as unknown as DocumentNode<FavouriteArtistPreviewConnectionFragment, unknown>;\nexport const ArtistAlbumsPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"REGULAR\"},{\"kind\":\"EnumValue\",\"value\":\"COMPILATION\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistAlbumsPageFragment, unknown>;\nexport const ArtistAppearsOnAlbumsPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"appearsOnAlbums\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredIn\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistAppearsOnAlbumsPageFragment, unknown>;\nexport const ArtistRadioLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<ArtistRadioLinkFragment, unknown>;\nexport const ArtistRadioPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<ArtistRadioPreviewFragment, unknown>;\nexport const ArtistRadioPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artistRadio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistRadioPageFragment, unknown>;\nexport const ArtistRadioPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artistRadio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistRadioPlayFragment, unknown>;\nexport const ArtistSimilarArtistsPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSimilarArtistsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"similarArtists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistSimilarArtistsPageFragment, unknown>;\nexport const ArtistSinglesPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSinglesPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"singles\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"SINGLE\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistSinglesPageFragment, unknown>;\nexport const ArtistTracksPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistTracksPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistTracksPageFragment, unknown>;\nexport const ArtistTracksPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistTracksPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistTracksPlayFragment, unknown>;\nexport const ChartLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]} as unknown as DocumentNode<ChartLinkFragment, unknown>;\nexport const ChartPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]} as unknown as DocumentNode<ChartPreviewFragment, unknown>;\nexport const ChartPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksChart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsChart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ChartPageFragment, unknown>;\nexport const TrackChartPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackChartPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksChart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<TrackChartPlayFragment, unknown>;\nexport const PlaylistLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<PlaylistLinkFragment, unknown>;\nexport const PlaylistPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<PlaylistPreviewFragment, unknown>;\nexport const FavoritePlaylistPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<FavoritePlaylistPreviewFragment, unknown>;\nexport const FavoritePlaylistPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}}]}}]} as unknown as DocumentNode<FavoritePlaylistPreviewConnectionFragment, unknown>;\nexport const LayoutLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<LayoutLinkFragment, unknown>;\nexport const LayoutItemLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<LayoutItemLinkFragment, unknown>;\nexport const LayoutItemSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"displayType\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageItemId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refreshFrequency\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<LayoutItemSectionFragment, unknown>;\nexport const LayoutItemSectionConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"displayType\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageItemId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refreshFrequency\"}}]}}]} as unknown as DocumentNode<LayoutItemSectionConnectionFragment, unknown>;\nexport const LayoutPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"groups\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"displayType\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageItemId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refreshFrequency\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionFragment\"}}]}}]}}]} as unknown as DocumentNode<LayoutPageFragment, unknown>;\nexport const ChartPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<ChartPreviewConnectionFragment, unknown>;\nexport const LiveRadioCategoryLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<LiveRadioCategoryLinkFragment, unknown>;\nexport const LiveRadioCategoryPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<LiveRadioCategoryPreviewFragment, unknown>;\nexport const LiveRadioCategoryPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<LiveRadioCategoryPreviewConnectionFragment, unknown>;\nexport const LiveRadioLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}}]} as unknown as DocumentNode<LiveRadioLinkFragment, unknown>;\nexport const LiveRadioPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}}]} as unknown as DocumentNode<LiveRadioPreviewFragment, unknown>;\nexport const LiveRadioPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}}]} as unknown as DocumentNode<LiveRadioPreviewConnectionFragment, unknown>;\nexport const PlaylistCategoryLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<PlaylistCategoryLinkFragment, unknown>;\nexport const PlaylistCategoryPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<PlaylistCategoryPreviewFragment, unknown>;\nexport const PlaylistCategoryPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<PlaylistCategoryPreviewConnectionFragment, unknown>;\nexport const PlaylistPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<PlaylistPreviewConnectionFragment, unknown>;\nexport const MixRadioLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<MixRadioLinkFragment, unknown>;\nexport const MixRadioPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<MixRadioPreviewFragment, unknown>;\nexport const MixRadioPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}}]} as unknown as DocumentNode<MixRadioPreviewConnectionFragment, unknown>;\nexport const RecommendationLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]} as unknown as DocumentNode<RecommendationLinkFragment, unknown>;\nexport const RecommendationPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]} as unknown as DocumentNode<RecommendationPreviewFragment, unknown>;\nexport const RecommendationPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}}]} as unknown as DocumentNode<RecommendationPreviewConnectionFragment, unknown>;\nexport const MixedContentPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}]}}]} as unknown as DocumentNode<MixedContentPreviewFragment, unknown>;\nexport const MixedContentPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}]}}]} as unknown as DocumentNode<MixedContentPreviewConnectionFragment, unknown>;\nexport const BannerLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]} as unknown as DocumentNode<BannerLinkFragment, unknown>;\nexport const MixRadioCategoryLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<MixRadioCategoryLinkFragment, unknown>;\nexport const MixRadioCategoryPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<MixRadioCategoryPreviewFragment, unknown>;\nexport const BannerPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3696\"}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"target\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EmptyBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ExternalBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalLink\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutPageBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"page\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}}]} as unknown as DocumentNode<BannerPreviewFragment, unknown>;\nexport const BannerPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3696\"}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"target\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EmptyBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ExternalBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalLink\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutPageBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"page\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<BannerPreviewConnectionFragment, unknown>;\nexport const StatisticsLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<StatisticsLinkFragment, unknown>;\nexport const NameValueFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValue\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}}]} as unknown as DocumentNode<NameValueFragment, unknown>;\nexport const StatisticsItemFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1400\"}}]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TextStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValue\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<StatisticsItemFragment, unknown>;\nexport const StatisticsItemConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValue\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1400\"}}]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TextStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"}}]}}]}}]} as unknown as DocumentNode<StatisticsItemConnectionFragment, unknown>;\nexport const LayoutItemContentFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemContentFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoriesLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadiosLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoriesLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadiosLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixedContents\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerContentLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"banners\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationStatisticsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"statisticsItems\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3696\"}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"target\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EmptyBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ExternalBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalLink\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutPageBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"page\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValue\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1400\"}}]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TextStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"}}]}}]}}]} as unknown as DocumentNode<LayoutItemContentFragment, unknown>;\nexport const LayoutItemPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemContentFragment\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3696\"}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"target\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EmptyBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ExternalBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalLink\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutPageBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"page\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValue\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1400\"}}]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TextStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemContentFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoriesLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadiosLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoriesLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadiosLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixedContents\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerContentLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"banners\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationStatisticsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"statisticsItems\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnectionFragment\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<LayoutItemPageFragment, unknown>;\nexport const LayoutItemTracksPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemTracksPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<LayoutItemTracksPlayFragment, unknown>;\nexport const LiveRadioCategoryPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<LiveRadioCategoryPageFragment, unknown>;\nexport const LiveRadioPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPageFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<LiveRadioPageFragment, unknown>;\nexport const LiveRadioPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stream\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}}]} as unknown as DocumentNode<LiveRadioPlayFragment, unknown>;\nexport const LiveRadioCategoriesPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoriesPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadios\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"categories\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<LiveRadioCategoriesPageFragment, unknown>;\nexport const MixRadioPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<MixRadioPlayFragment, unknown>;\nexport const MixRadioCategoryPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<MixRadioCategoryPageFragment, unknown>;\nexport const MixRadioCategoryPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<MixRadioCategoryPreviewConnectionFragment, unknown>;\nexport const MixRadiosPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadiosPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadios\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"categories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1000\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}}]} as unknown as DocumentNode<MixRadiosPageFragment, unknown>;\nexport const DiscoverRecommendationsPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"DiscoverRecommendationsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MyRecommendations\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"DISCOVER\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<DiscoverRecommendationsPageFragment, unknown>;\nexport const HistoryRecommendationsPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"HistoryRecommendationsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MyRecommendations\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"HISTORY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<HistoryRecommendationsPageFragment, unknown>;\nexport const NotificationLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Notification\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<NotificationLinkFragment, unknown>;\nexport const NotificationPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Notification\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableBegin\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableEnd\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eligibilityReasons\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"seenAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"contextId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subTitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eventKey\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eligibilityReasons\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Notification\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<NotificationPreviewFragment, unknown>;\nexport const NotificationPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Notification\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Notification\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableBegin\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableEnd\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eligibilityReasons\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"seenAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"contextId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subTitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eventKey\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eligibilityReasons\"}}]}}]} as unknown as DocumentNode<NotificationPreviewConnectionFragment, unknown>;\nexport const PlaylistTrackPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"position\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<PlaylistTrackPreviewFragment, unknown>;\nexport const PlaylistTrackPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"position\"}}]}}]} as unknown as DocumentNode<PlaylistTrackPreviewConnectionFragment, unknown>;\nexport const PlaylistPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"followersCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"position\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistPageFragment, unknown>;\nexport const PlaylistPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"position\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistPlayFragment, unknown>;\nexport const PlaylistCategoriesPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoriesPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategories\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistCategoriesPageFragment, unknown>;\nexport const PlaylistCategoriesPaginationFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoriesPaginationFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategories\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistCategoriesPaginationFragment, unknown>;\nexport const PlaylistCategoryPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistCategoryPageFragment, unknown>;\nexport const ProfileFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ProfileFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Profile\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"color\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"current\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"master\"}}]}}]} as unknown as DocumentNode<ProfileFragment, unknown>;\nexport const RecommendationPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistsRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<RecommendationPageFragment, unknown>;\nexport const RecommendationPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<RecommendationPlayFragment, unknown>;\nexport const MixedSearchResultConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedSearchResultConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedSearchResultConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackMixedSearchResult\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumMixedSearchResult\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistMixedSearchResult\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}}]} as unknown as DocumentNode<MixedSearchResultConnectionFragment, unknown>;\nexport const SearchMixedSectionsFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchMixedSectionsFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixed\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedSearchResultConnectionFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemsLimit\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemsLimit\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemsLimit\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedSearchResultConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedSearchResultConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackMixedSearchResult\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumMixedSearchResult\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistMixedSearchResult\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchMixedSectionsFragment, unknown>;\nexport const SearchPlaylistsSectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchPlaylistsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemsLimit\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchPlaylistsSectionFragment, unknown>;\nexport const SearchTracksPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchTracksPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchTracksPageFragment, unknown>;\nexport const SearchAlbumsPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchAlbumsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchAlbumsPageFragment, unknown>;\nexport const SearchArtistsPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchArtistsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchArtistsPageFragment, unknown>;\nexport const SearchPlaylistsPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchPlaylistsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchPlaylistsPageFragment, unknown>;\nexport const FavoriteTrackWithoutAlbumPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}}]} as unknown as DocumentNode<FavoriteTrackWithoutAlbumPreviewFragment, unknown>;\nexport const FavoriteTrackPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<FavoriteTrackPreviewFragment, unknown>;\nexport const FavoriteTrackPreviewConnectionFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}}]} as unknown as DocumentNode<FavoriteTrackPreviewConnectionFragment, unknown>;\nexport const TrackLyricsItemsFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLyricsItemsFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Lyrics\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lrc\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startInMs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"durationInMs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"line\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}}]} as unknown as DocumentNode<TrackLyricsItemsFragment, unknown>;\nexport const TrackLyricsPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLyricsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Lyrics\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"synchronizationType\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"credits\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"provider\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"writer\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"publisher\"}}]}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLyricsItemsFragment\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLyricsItemsFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Lyrics\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lrc\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startInMs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"durationInMs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"line\"}}]}}]}}]}}]} as unknown as DocumentNode<TrackLyricsPageFragment, unknown>;\nexport const TrackRadioLinkFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<TrackRadioLinkFragment, unknown>;\nexport const TrackRadioPreviewFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<TrackRadioPreviewFragment, unknown>;\nexport const TrackRadioPageFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"trackRadio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<TrackRadioPageFragment, unknown>;\nexport const TrackRadioPlayFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"trackRadio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<TrackRadioPlayFragment, unknown>;\nexport const AlbumPreviewDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumPreview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}}]} as unknown as DocumentNode<AlbumPreviewQuery, AlbumPreviewQueryVariables>;\nexport const AlbumPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumHeaderSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumTracksSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumHeaderSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumTracksSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsSectionFragment\"}}]}}]} as unknown as DocumentNode<AlbumPageQuery, AlbumPageQueryVariables>;\nexport const AlbumHeaderSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumHeaderSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumHeaderSectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumHeaderSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"}}]}}]} as unknown as DocumentNode<AlbumHeaderSectionQuery, AlbumHeaderSectionQueryVariables>;\nexport const AlbumHeaderSectionByTrackDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumHeaderSectionByTrack\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumHeaderSectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumHeaderSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"}}]}}]} as unknown as DocumentNode<AlbumHeaderSectionByTrackQuery, AlbumHeaderSectionByTrackQueryVariables>;\nexport const AlbumTracksSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumTracksSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumTracksSectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumTracksSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<AlbumTracksSectionQuery, AlbumTracksSectionQueryVariables>;\nexport const AlbumTracksSectionByTrackDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumTracksSectionByTrack\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumTracksSectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumTracksSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<AlbumTracksSectionByTrackQuery, AlbumTracksSectionByTrackQueryVariables>;\nexport const AlbumTracksPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumTracksPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<AlbumTracksPaginationQuery, AlbumTracksPaginationQueryVariables>;\nexport const Temp_AlbumTracksPaginationWithPreviewDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"temp_albumTracksPaginationWithPreview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<Temp_AlbumTracksPaginationWithPreviewQuery, Temp_AlbumTracksPaginationWithPreviewQueryVariables>;\nexport const AlbumTracksByTrackPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumTracksByTrackPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<AlbumTracksByTrackPaginationQuery, AlbumTracksByTrackPaginationQueryVariables>;\nexport const AlbumPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPlayFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<AlbumPlayQuery, AlbumPlayQueryVariables>;\nexport const AlbumArtistAlbumsSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumArtistAlbumsSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsSectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}}]} as unknown as DocumentNode<AlbumArtistAlbumsSectionQuery, AlbumArtistAlbumsSectionQueryVariables>;\nexport const AlbumArtistAlbumsByTrackSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumArtistAlbumsByTrackSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsSectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}}]} as unknown as DocumentNode<AlbumArtistAlbumsByTrackSectionQuery, AlbumArtistAlbumsByTrackSectionQueryVariables>;\nexport const AlbumArtistAlbumsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumArtistAlbumsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}}]} as unknown as DocumentNode<AlbumArtistAlbumsPageQuery, AlbumArtistAlbumsPageQueryVariables>;\nexport const AlbumArtistAlbumsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"albumArtistAlbumsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<AlbumArtistAlbumsPaginationQuery, AlbumArtistAlbumsPaginationQueryVariables>;\nexport const ArtistLinkDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistLink\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<ArtistLinkQuery, ArtistLinkQueryVariables>;\nexport const ArtistPreviewDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistPreview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}}]} as unknown as DocumentNode<ArtistPreviewQuery, ArtistPreviewQueryVariables>;\nexport const ArtistPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistHeaderSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPopularTracksSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"5\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"REGULAR\"},{\"kind\":\"EnumValue\",\"value\":\"COMPILATION\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"NEWEST\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSinglesSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"singles\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"SINGLE\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"NEWEST\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSimilarArtistsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"similarArtists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"appearsOnAlbums\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredIn\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistHeaderSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPopularTracksSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSinglesSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSimilarArtistsSectionFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsSectionFragment\"}}]}}]} as unknown as DocumentNode<ArtistPageQuery, ArtistPageQueryVariables>;\nexport const ArtistPageHeaderSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistPageHeaderSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistHeaderSectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistHeaderSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]} as unknown as DocumentNode<ArtistPageHeaderSectionQuery, ArtistPageHeaderSectionQueryVariables>;\nexport const ArtistPopularTracksSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistPopularTracksSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPopularTracksSectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPopularTracksSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"5\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistPopularTracksSectionQuery, ArtistPopularTracksSectionQueryVariables>;\nexport const ArtistAlbumsSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistAlbumsSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsSectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"REGULAR\"},{\"kind\":\"EnumValue\",\"value\":\"COMPILATION\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"NEWEST\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistAlbumsSectionQuery, ArtistAlbumsSectionQueryVariables>;\nexport const ArtistSinglesSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistSinglesSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSinglesSectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSinglesSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"singles\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"SINGLE\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"NEWEST\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistSinglesSectionQuery, ArtistSinglesSectionQueryVariables>;\nexport const ArtistSimilarArtistsSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistSimilarArtistsSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSimilarArtistsSectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSimilarArtistsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"similarArtists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistSimilarArtistsSectionQuery, ArtistSimilarArtistsSectionQueryVariables>;\nexport const ArtistAppearsOnAlbumsSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistAppearsOnAlbumsSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsSectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"appearsOnAlbums\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredIn\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistAppearsOnAlbumsSectionQuery, ArtistAppearsOnAlbumsSectionQueryVariables>;\nexport const ArtistPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPlayFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"POPULARITY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistPlayQuery, ArtistPlayQueryVariables>;\nexport const ArtistAlbumsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistAlbumsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAlbumsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"REGULAR\"},{\"kind\":\"EnumValue\",\"value\":\"COMPILATION\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistAlbumsPageQuery, ArtistAlbumsPageQueryVariables>;\nexport const ArtistAlbumsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistAlbumsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"COMPILATION\"},{\"kind\":\"EnumValue\",\"value\":\"REGULAR\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistAlbumsPaginationQuery, ArtistAlbumsPaginationQueryVariables>;\nexport const ArtistAppearsOnAlbumsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"appearsOnAlbums\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredIn\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistAppearsOnAlbumsPageQuery, ArtistAppearsOnAlbumsPageQueryVariables>;\nexport const ArtistAppearsOnAlbumsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistAppearsOnAlbumsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredIn\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistAppearsOnAlbumsPaginationQuery, ArtistAppearsOnAlbumsPaginationQueryVariables>;\nexport const ArtistRadioPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistRadioPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artistRadio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistRadioPageQuery, ArtistRadioPageQueryVariables>;\nexport const ArtistSimilarArtistsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistSimilarArtistsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSimilarArtistsPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSimilarArtistsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"similarArtists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistSimilarArtistsPageQuery, ArtistSimilarArtistsPageQueryVariables>;\nexport const ArtistSimilarArtistsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistSimilarArtistsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"similarArtists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistSimilarArtistsPaginationQuery, ArtistSimilarArtistsPaginationQueryVariables>;\nexport const ArtistSinglesPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistSinglesPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSinglesPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistSinglesPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"singles\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"SINGLE\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistSinglesPageQuery, ArtistSinglesPageQueryVariables>;\nexport const ArtistSinglesPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistSinglesPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"singles\"},\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"SINGLE\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistSinglesPaginationQuery, ArtistSinglesPaginationQueryVariables>;\nexport const ArtistTracksPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistTracksPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistTracksPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistTracksPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistTracksPageQuery, ArtistTracksPageQueryVariables>;\nexport const ArtistTracksPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistTracksPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistTracksPaginationQuery, ArtistTracksPaginationQueryVariables>;\nexport const ArtistTracksPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"artistTracksPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistTracksPlayFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistTracksPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<ArtistTracksPlayQuery, ArtistTracksPlayQueryVariables>;\nexport const AuthorizeUrisDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"authorizeUris\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"authorize\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"authorize\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"token\"}}]}}]}}]} as unknown as DocumentNode<AuthorizeUrisQuery, AuthorizeUrisQueryVariables>;\nexport const DeviceAuthorizeDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"deviceAuthorize\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"authorize\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deviceAuthorize\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"token\"}}]}}]}}]} as unknown as DocumentNode<DeviceAuthorizeQuery, DeviceAuthorizeQueryVariables>;\nexport const LogoutAllDevicesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"LogoutAllDevices\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"authorize\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"logoutAllDevices\"}}]}}]}}]} as unknown as DocumentNode<LogoutAllDevicesQuery, LogoutAllDevicesQueryVariables>;\nexport const InviteFlowHelpUrlDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"inviteFlowHelpUrl\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"authorize\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"inviteFlowHelpUrl\"}}]}}]}}]} as unknown as DocumentNode<InviteFlowHelpUrlQuery, InviteFlowHelpUrlQueryVariables>;\nexport const ChartLinkDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"chartLink\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"chart\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]} as unknown as DocumentNode<ChartLinkQuery, ChartLinkQueryVariables>;\nexport const ChartPreviewDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"chartPreview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"chart\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<ChartPreviewQuery, ChartPreviewQueryVariables>;\nexport const ChartPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"chartPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"chart\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksChart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsChart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}}]} as unknown as DocumentNode<ChartPageQuery, ChartPageQueryVariables>;\nexport const ChartItemsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"chartItemsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"chart\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksChart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsChart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<ChartItemsPaginationQuery, ChartItemsPaginationQueryVariables>;\nexport const FirstTrackChartDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"firstTrackChart\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"contentType\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"TRACKS\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<FirstTrackChartQuery, FirstTrackChartQueryVariables>;\nexport const TrackChartPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackChartPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"chart\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksChart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackChartPlayFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackChartPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksChart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<TrackChartPlayQuery, TrackChartPlayQueryVariables>;\nexport const EndlessPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"endlessPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"trackId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"trackId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endlessPlay\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<EndlessPlayQuery, EndlessPlayQueryVariables>;\nexport const FavoriteTracksDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteTracks\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTracksSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaSync\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteTracks\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<FavoriteTracksQuery, FavoriteTracksQueryVariables>;\nexport const FavoriteTracksDeltaDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteTracksDelta\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaSync\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteTracks\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delta\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"newTracks\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackPreviewFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"removedTrackIds\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}}]} as unknown as DocumentNode<FavoriteTracksDeltaQuery, FavoriteTracksDeltaQueryVariables>;\nexport const FavoriteAlbumsDeltaDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteAlbumsDelta\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaSync\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteAlbums\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delta\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"newAlbums\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteAlbumPreviewFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"removedAlbumIds\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteAlbum\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}}]} as unknown as DocumentNode<FavoriteAlbumsDeltaQuery, FavoriteAlbumsDeltaQueryVariables>;\nexport const FavoriteAlbumsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteAlbums\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteAlbumsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteAlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaSync\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteAlbums\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteAlbum\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteAlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteAlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteAlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<FavoriteAlbumsQuery, FavoriteAlbumsQueryVariables>;\nexport const FavoriteArtistsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteArtists\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtistsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteArtistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaSync\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavouriteArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<FavoriteArtistsQuery, FavoriteArtistsQueryVariables>;\nexport const FavoriteArtistsDeltaDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteArtistsDelta\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaSync\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delta\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"newArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtistPreviewFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"removedArtistIds\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deltaToken\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteArtist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}}]} as unknown as DocumentNode<FavoriteArtistsDeltaQuery, FavoriteArtistsDeltaQueryVariables>;\nexport const CombinedPlaylistsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"combinedPlaylistsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CombinedPlaylistsSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"combinedPlaylists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylistPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<CombinedPlaylistsPaginationQuery, CombinedPlaylistsPaginationQueryVariables>;\nexport const CombinedPlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"combinedPlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"combinedPlaylist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylistPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoritePlaylist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritedAt\"}}]}}]}}]} as unknown as DocumentNode<CombinedPlaylistQuery, CombinedPlaylistQueryVariables>;\nexport const IsCombinedPlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"isCombinedPlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"combinedPlaylist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<IsCombinedPlaylistQuery, IsCombinedPlaylistQueryVariables>;\nexport const IsFavoriteDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"isFavorite\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FavoriteContentType\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isFavorite\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isFavorite\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<IsFavoriteQuery, IsFavoriteQueryVariables>;\nexport const OwnPlaylistsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"ownPlaylists\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ownPlaylists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<OwnPlaylistsQuery, OwnPlaylistsQueryVariables>;\nexport const FavoritesStatisticsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"favoritesStatistics\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<FavoritesStatisticsQuery, FavoritesStatisticsQueryVariables>;\nexport const FavoriteTracksFullSyncInHoursDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteTracksFullSyncInHours\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"system\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deviceSettings\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteTracksFullSyncInHours\"}}]}}]}}]}}]} as unknown as DocumentNode<FavoriteTracksFullSyncInHoursQuery, FavoriteTracksFullSyncInHoursQueryVariables>;\nexport const FavoriteArtistsFullSyncInHoursDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteArtistsFullSyncInHours\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"system\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deviceSettings\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteArtistsFullSyncInHours\"}}]}}]}}]}}]} as unknown as DocumentNode<FavoriteArtistsFullSyncInHoursQuery, FavoriteArtistsFullSyncInHoursQueryVariables>;\nexport const FavoriteAlbumsFullSyncInHoursDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteAlbumsFullSyncInHours\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"system\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deviceSettings\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favoriteAlbumsFullSyncInHours\"}}]}}]}}]}}]} as unknown as DocumentNode<FavoriteAlbumsFullSyncInHoursQuery, FavoriteAlbumsFullSyncInHoursQueryVariables>;\nexport const LayoutItemSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"layout\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"displayType\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageItemId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refreshFrequency\"}}]}}]} as unknown as DocumentNode<LayoutItemSectionQuery, LayoutItemSectionQueryVariables>;\nexport const LayoutItemPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"layoutItemPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"layout\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3696\"}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"target\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EmptyBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ExternalBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalLink\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutPageBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"page\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValue\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1400\"}}]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TextStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemContentFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoriesLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadiosLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoriesLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadiosLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixedContents\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerContentLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"banners\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationStatisticsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"statisticsItems\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemContentFragment\"}}]}}]} as unknown as DocumentNode<LayoutItemPageQuery, LayoutItemPageQueryVariables>;\nexport const LayoutItemContentPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemContentPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"layout\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemContentFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Chart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Banner\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3696\"}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"target\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EmptyBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ExternalBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalLink\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutPageBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"page\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategory\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioBannerTarget\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadio\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValue\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1400\"}}]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NameValueFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TextStatisticsItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemContentFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ChartPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoriesLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadiosLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoriesLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadiosLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixedContents\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerContentLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"banners\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"BannerPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationStatisticsLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"statisticsItems\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StatisticsItemConnectionFragment\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<LayoutItemContentPaginationQuery, LayoutItemContentPaginationQueryVariables>;\nexport const LayoutItemPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"layoutItemPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"layout\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemTracksPlayFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemTracksPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksLayoutItemContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<LayoutItemPlayQuery, LayoutItemPlayQueryVariables>;\nexport const LayoutPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"layoutPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"layout\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutPageFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItem\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"displayType\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"content\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageItemId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refreshFrequency\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"groups\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutItemSectionConnectionFragment\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<LayoutPageQuery, LayoutPageQueryVariables>;\nexport const LayoutPageLinkDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutPageLink\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"layout\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LayoutLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Layout\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<LayoutPageLinkQuery, LayoutPageLinkQueryVariables>;\nexport const LiveRadioPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPlayFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stream\"}}]}}]} as unknown as DocumentNode<LiveRadioPlayQuery, LiveRadioPlayQueryVariables>;\nexport const LiveRadioPreviewDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}}]} as unknown as DocumentNode<LiveRadioPreviewQuery, LiveRadioPreviewQueryVariables>;\nexport const LiveRadioNowAndRecentlyPlayedDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioNowAndRecentlyPlayed\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"supportsNowPlaying\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nowPlaying\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recentlyPlayed\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<LiveRadioNowAndRecentlyPlayedQuery, LiveRadioNowAndRecentlyPlayedQueryVariables>;\nexport const LiveRadioHeartbeatInSecondsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioHeartbeatInSeconds\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"system\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deviceSettings\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioHeartbeatInSeconds\"}}]}}]}}]}}]} as unknown as DocumentNode<LiveRadioHeartbeatInSecondsQuery, LiveRadioHeartbeatInSecondsQueryVariables>;\nexport const LiveRadioCategoryLinkDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLink\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<LiveRadioCategoryLinkQuery, LiveRadioCategoryLinkQueryVariables>;\nexport const LiveRadioCategoryPreviewDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<LiveRadioCategoryPreviewQuery, LiveRadioCategoryPreviewQueryVariables>;\nexport const LiveRadioCategoryPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioCategoryPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<LiveRadioCategoryPageQuery, LiveRadioCategoryPageQueryVariables>;\nexport const LiveRadioCategoryLiveRadiosPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioCategoryLiveRadiosPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<LiveRadioCategoryLiveRadiosPaginationQuery, LiveRadioCategoryLiveRadiosPaginationQueryVariables>;\nexport const LiveRadioCategoryPageByLiveRadioDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioCategoryPageByLiveRadio\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPageFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<LiveRadioCategoryPageByLiveRadioQuery, LiveRadioCategoryPageByLiveRadioQueryVariables>;\nexport const LiveRadioCategoryByLiveRadioLiveRadiosPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioCategoryByLiveRadioLiveRadiosPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<LiveRadioCategoryByLiveRadioLiveRadiosPaginationQuery, LiveRadioCategoryByLiveRadioLiveRadiosPaginationQueryVariables>;\nexport const LiveRadioLiveRadioCategoryLinkDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioLiveRadioCategoryLink\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LiveRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]} as unknown as DocumentNode<LiveRadioLiveRadioCategoryLinkQuery, LiveRadioLiveRadioCategoryLinkQueryVariables>;\nexport const MixRadioPreviewDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioPreview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}}]} as unknown as DocumentNode<MixRadioPreviewQuery, MixRadioPreviewQueryVariables>;\nexport const MixRadioTracksPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioTracksPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPlayFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<MixRadioTracksPaginationQuery, MixRadioTracksPaginationQueryVariables>;\nexport const MixRadioPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPlayFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<MixRadioPlayQuery, MixRadioPlayQueryVariables>;\nexport const MixRadioCategoryPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioCategoryPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioCategoryPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<MixRadioCategoryPageQuery, MixRadioCategoryPageQueryVariables>;\nexport const MixRadioCategoryPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadioCategoryPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<MixRadioCategoryPaginationQuery, MixRadioCategoryPaginationQueryVariables>;\nexport const MixRadiosPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadiosPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadiosPageFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadio\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadiosPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadios\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"categories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1000\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"radios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixRadioPreviewFragment\"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode<MixRadiosPageQuery, MixRadiosPageQueryVariables>;\nexport const RecentTracksDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"recentTracks\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"history\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recentTracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<RecentTracksQuery, RecentTracksQueryVariables>;\nexport const NotificationsPollDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"notificationsPoll\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"notifications\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"notSeenCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"notificationsState\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<NotificationsPollQuery, NotificationsPollQueryVariables>;\nexport const NotificationsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"notifications\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"notifications\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"notSeenCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"notificationsState\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"notifications\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationPreviewConnectionFragment\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Notification\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Notification\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableBegin\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableEnd\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eligibilityReasons\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"seenAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"contextId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subTitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eventKey\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eligibilityReasons\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NotificationPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<NotificationsQuery, NotificationsQueryVariables>;\nexport const RecommendationsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendationsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationMode\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<RecommendationsPageQuery, RecommendationsPageQueryVariables>;\nexport const RecommendationsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendationsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationMode\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<RecommendationsPaginationQuery, RecommendationsPaginationQueryVariables>;\nexport const HistoryRecommendationsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"historyRecommendationsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"HistoryRecommendationsPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"HistoryRecommendationsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MyRecommendations\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"HISTORY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<HistoryRecommendationsPageQuery, HistoryRecommendationsPageQueryVariables>;\nexport const HistoryRecommendationsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"historyRecommendationsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"HISTORY\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<HistoryRecommendationsPaginationQuery, HistoryRecommendationsPaginationQueryVariables>;\nexport const DiscoverRecommendationsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"discoverRecommendationsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"DiscoverRecommendationsPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"DiscoverRecommendationsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MyRecommendations\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"DISCOVER\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<DiscoverRecommendationsPageQuery, DiscoverRecommendationsPageQueryVariables>;\nexport const DiscoverRecommendationsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"discoverRecommendationsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<DiscoverRecommendationsPaginationQuery, DiscoverRecommendationsPaginationQueryVariables>;\nexport const PlaylistNotificationCheckDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistNotificationCheck\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode<PlaylistNotificationCheckQuery, PlaylistNotificationCheckQueryVariables>;\nexport const TrackRecommendationNotificationCheckDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackRecommendationNotificationCheck\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendation\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode<TrackRecommendationNotificationCheckQuery, TrackRecommendationNotificationCheckQueryVariables>;\nexport const TrackChartNotificationCheckDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackChartNotificationCheck\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"charts\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"chart\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksChart\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode<TrackChartNotificationCheckQuery, TrackChartNotificationCheckQueryVariables>;\nexport const TrackRecommendationPreviewDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackRecommendationPreview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendation\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}}]} as unknown as DocumentNode<TrackRecommendationPreviewQuery, TrackRecommendationPreviewQueryVariables>;\nexport const PlaybackFullDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackFull\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"quality\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StreamQuality\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playback\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"trackId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"full\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"quality\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"quality\"}}}]}]}}]}}]} as unknown as DocumentNode<PlaybackFullQuery, PlaybackFullQueryVariables>;\nexport const PlaybackSampleDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackSample\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playback\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"trackId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sample\"}}]}}]}}]} as unknown as DocumentNode<PlaybackSampleQuery, PlaybackSampleQueryVariables>;\nexport const PlaylistPreviewDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistPreview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<PlaylistPreviewQuery, PlaylistPreviewQueryVariables>;\nexport const PlaylistPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTracksSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"position\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"followersCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}}]}}]} as unknown as DocumentNode<PlaylistPageQuery, PlaylistPageQueryVariables>;\nexport const PlaylistTracksPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistTracksPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTracksSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"position\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistTracksPaginationQuery, PlaylistTracksPaginationQueryVariables>;\nexport const PlaylistPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTracksSorting\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPlayFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrack\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"position\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistTrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistPlayQuery, PlaylistPlayQueryVariables>;\nexport const PlaylistCategoriesPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategoriesPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoriesPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoriesPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategories\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistCategoriesPageQuery, PlaylistCategoriesPageQueryVariables>;\nexport const PlaylistCategoriesPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategoriesPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoriesPaginationFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoriesPaginationFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategories\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistCategoriesPaginationQuery, PlaylistCategoriesPaginationQueryVariables>;\nexport const PlaylistCategoryPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategoryPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategory\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPageFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategory\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistCategoryPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistCategoryPageQuery, PlaylistCategoryPageQueryVariables>;\nexport const PlaylistCategoryPlaylistsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategoryPlaylistsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategories\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistCategory\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<PlaylistCategoryPlaylistsPaginationQuery, PlaylistCategoryPlaylistsPaginationQueryVariables>;\nexport const UserProfilesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"userProfiles\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profiles\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profiles\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ProfileFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"settings\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profilesNumberLimit\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"defaultColors\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ProfileFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Profile\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"color\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"current\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"master\"}}]}}]} as unknown as DocumentNode<UserProfilesQuery, UserProfilesQueryVariables>;\nexport const ProfilesColorsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"profilesColors\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profiles\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"settings\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"defaultColors\"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode<ProfilesColorsQuery, ProfilesColorsQueryVariables>;\nexport const RecentlyAddedDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"recentlyAdded\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"history\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recentlyAdded\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<RecentlyAddedQuery, RecentlyAddedQueryVariables>;\nexport const RecommendationLinkDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendationLink\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendation\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]} as unknown as DocumentNode<RecommendationLinkQuery, RecommendationLinkQueryVariables>;\nexport const RecommendationPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendationPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendation\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPageFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistsRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}}]}}]} as unknown as DocumentNode<RecommendationPageQuery, RecommendationPageQueryVariables>;\nexport const RecommendationContentPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendationContentPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendation\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumsRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistsRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<RecommendationContentPaginationQuery, RecommendationContentPaginationQueryVariables>;\nexport const RecommendationPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendationPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendations\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendation\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPlayFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Recommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RecommendationPreviewFragment\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TracksRecommendation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]}}]} as unknown as DocumentNode<RecommendationPlayQuery, RecommendationPlayQueryVariables>;\nexport const SearchMixedSectionsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchMixedSections\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemsLimit\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"3\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchMixedSectionsFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedSearchResultConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedSearchResultConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackMixedSearchResult\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumMixedSearchResult\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistMixedSearchResult\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchMixedSectionsFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mixed\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"3\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedSearchResultConnectionFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemsLimit\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemsLimit\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemsLimit\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchMixedSectionsQuery, SearchMixedSectionsQueryVariables>;\nexport const SearchPlaylistsSectionDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchPlaylistsSection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemsLimit\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"3\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchPlaylistsSectionFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchPlaylistsSectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"itemsLimit\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchPlaylistsSectionQuery, SearchPlaylistsSectionQueryVariables>;\nexport const SearchTracksPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchTracksPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchTracksPageFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchTracksPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchTracksPageQuery, SearchTracksPageQueryVariables>;\nexport const SearchAlbumsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchAlbumsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchAlbumsPageFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchAlbumsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchAlbumsPageQuery, SearchAlbumsPageQueryVariables>;\nexport const SearchArtistsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchArtistsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchArtistsPageFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchArtistsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchArtistsPageQuery, SearchArtistsPageQueryVariables>;\nexport const SearchPlaylistsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchPlaylistsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchPlaylistsPageFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SearchPlaylistsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Search\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchPlaylistsPageQuery, SearchPlaylistsPageQueryVariables>;\nexport const SearchTracksPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchTracksPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchTracksPaginationQuery, SearchTracksPaginationQueryVariables>;\nexport const SearchAlbumsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchAlbumsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"albums\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Album\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseDate\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"available\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AlbumPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchAlbumsPaginationQuery, SearchAlbumsPaginationQueryVariables>;\nexport const SearchArtistsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchArtistsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchArtistsPaginationQuery, SearchArtistsPaginationQueryVariables>;\nexport const SearchPlaylistsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchPlaylistsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"criterion\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<SearchPlaylistsPaginationQuery, SearchPlaylistsPaginationQueryVariables>;\nexport const TrackLinkDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackLink\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}}]} as unknown as DocumentNode<TrackLinkQuery, TrackLinkQueryVariables>;\nexport const TrackPreviewDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackPreview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}}]} as unknown as DocumentNode<TrackPreviewQuery, TrackPreviewQueryVariables>;\nexport const TrackLyricsIdDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackLyricsID\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lyrics\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<TrackLyricsIdQuery, TrackLyricsIdQueryVariables>;\nexport const TrackLyricsPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackLyricsPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lyrics\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLyricsPageFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLyricsItemsFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Lyrics\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lrc\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startInMs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"durationInMs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"line\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLyricsPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Lyrics\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"synchronizationType\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"credits\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"provider\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"writer\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"publisher\"}}]}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLyricsItemsFragment\"}}]}}]} as unknown as DocumentNode<TrackLyricsPageQuery, TrackLyricsPageQueryVariables>;\nexport const TrackLyricsPaginationDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackLyricsPagination\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lyrics\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLyricsItemsFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLyricsItemsFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Lyrics\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lrc\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startInMs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"durationInMs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"line\"}}]}}]}}]}}]} as unknown as DocumentNode<TrackLyricsPaginationQuery, TrackLyricsPaginationQueryVariables>;\nexport const TrackRadioPageDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackRadioPage\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPageFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPageFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"trackRadio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<TrackRadioPageQuery, TrackRadioPageQueryVariables>;\nexport const TrackRadioPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"trackRadioPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"catalog\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"track\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPlayFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Artist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableToStream\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"genre\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"featuredArtists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ArtistLinkFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackContext\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackWithoutAlbumPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"album\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPlayFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Track\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackRadioPreviewFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"trackRadio\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TrackPreviewConnectionFragment\"}}]}}]}}]} as unknown as DocumentNode<TrackRadioPlayQuery, TrackRadioPlayQueryVariables>;\nexport const UrlTransformDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"urlTransform\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"transform\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"UrlTransformInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"system\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"urlTransform\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"transform\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"transform\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"}}]}}]}}]}}]} as unknown as DocumentNode<UrlTransformQuery, UrlTransformQueryVariables>;\nexport const UserIdDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"userId\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"trackingId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"}}]}}]}}]}}]} as unknown as DocumentNode<UserIdQuery, UserIdQueryVariables>;\nexport const UserId2Document = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"userId2\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"includeProfiles\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"useInviteFlow\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"trackingId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profiles\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"includeProfiles\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profiles\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ProfileFragment\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"settings\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profilesNumberLimit\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"defaultColors\"}}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ProfileFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Profile\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"color\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"current\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"master\"}}]}}]} as unknown as DocumentNode<UserId2Query, UserId2QueryVariables>;\nexport const UserHistoryRecentContextDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"UserHistoryRecentContext\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"history\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"recentContexts\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContent\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subtitle\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewConnectionFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentConnection\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfoFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MixedContentPreviewFragment\"}}]}}]}}]} as unknown as DocumentNode<UserHistoryRecentContextQuery, UserHistoryRecentContextQueryVariables>;\nexport const UseInviteFlowDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"useInviteFlow\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"me\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"useInviteFlow\"}}]}}]}}]}}]} as unknown as DocumentNode<UseInviteFlowQuery, UseInviteFlowQueryVariables>;\nexport const ReportLyricsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"reportLyrics\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"report\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ReportLyricsDisplayInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lyrics\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reportLyricsDisplay\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"report\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"report\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<ReportLyricsMutation, ReportLyricsMutationVariables>;\nexport const ConcurrencyCanPlayDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"concurrencyCanPlay\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackConcurrency\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canPlay\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"ticket\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canPlay\"}}]}}]}}]}}]} as unknown as DocumentNode<ConcurrencyCanPlayMutation, ConcurrencyCanPlayMutationVariables>;\nexport const ConcurrencyCreateTicketDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"concurrencyCreateTicket\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playbackConcurrency\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createTicket\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ticket\"}}]}}]}}]}}]} as unknown as DocumentNode<ConcurrencyCreateTicketMutation, ConcurrencyCreateTicketMutationVariables>;\nexport const AddAlbumToFavoritesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"addAlbumToFavorites\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addAlbum\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<AddAlbumToFavoritesMutation, AddAlbumToFavoritesMutationVariables>;\nexport const AddPlaylistToFavoritesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"addPlaylistToFavorites\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addPlaylist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<AddPlaylistToFavoritesMutation, AddPlaylistToFavoritesMutationVariables>;\nexport const AddArtistToFavoritesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"addArtistToFavorites\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addArtist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<AddArtistToFavoritesMutation, AddArtistToFavoritesMutationVariables>;\nexport const AddTrackToFavoritesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"addTrackToFavorites\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addTrack\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<AddTrackToFavoritesMutation, AddTrackToFavoritesMutationVariables>;\nexport const RemoveAlbumFromFavoritesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"removeAlbumFromFavorites\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"removeAlbum\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<RemoveAlbumFromFavoritesMutation, RemoveAlbumFromFavoritesMutationVariables>;\nexport const RemovePlaylistFromFavoritesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"removePlaylistFromFavorites\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"removePlaylist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<RemovePlaylistFromFavoritesMutation, RemovePlaylistFromFavoritesMutationVariables>;\nexport const RemoveTrackFromFavoritesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"removeTrackFromFavorites\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"removeTrack\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<RemoveTrackFromFavoritesMutation, RemoveTrackFromFavoritesMutationVariables>;\nexport const RemoveArtistFromFavoritesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"removeArtistFromFavorites\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favorites\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"removeArtist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<RemoveArtistFromFavoritesMutation, RemoveArtistFromFavoritesMutationVariables>;\nexport const SendFeedbackDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"sendFeedback\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"feedback\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SendFeedbackInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"feedbacks\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"send\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"feedback\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"feedback\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<SendFeedbackMutation, SendFeedbackMutationVariables>;\nexport const LiveRadioHeartbeatDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadioHeartbeat\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"heartBeat\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ReportLiveRadioHeartbeatInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveRadios\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reportHeartbeat\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"heartbeat\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"heartBeat\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<LiveRadioHeartbeatMutation, LiveRadioHeartbeatMutationVariables>;\nexport const MarkNotificationsAsSeenDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"markNotificationsAsSeen\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"notificationsState\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"notifications\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"markAsSeen\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"notificationsState\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"notificationsState\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<MarkNotificationsAsSeenMutation, MarkNotificationsAsSeenMutationVariables>;\nexport const CreatePlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"createPlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CreatePlaylistInput\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"create\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<CreatePlaylistMutation, CreatePlaylistMutationVariables>;\nexport const UpdatePlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"updatePlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"UpdatePlaylistInput\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"update\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<UpdatePlaylistMutation, UpdatePlaylistMutationVariables>;\nexport const DeletePlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"deletePlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"delete\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<DeletePlaylistMutation, DeletePlaylistMutationVariables>;\nexport const ModifyTracksInPlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"modifyTracksInPlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"modifications\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ModifyPlaylistTrackInput\"}}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifyTracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"modifications\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"modifications\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<ModifyTracksInPlaylistMutation, ModifyTracksInPlaylistMutationVariables>;\nexport const AddTracksToPlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"addTracksToPlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"trackIds\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"DuplicatesHandling\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addTracks\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"trackIds\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"trackIds\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addedCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"skippedCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resultingCount\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<AddTracksToPlaylistMutation, AddTracksToPlaylistMutationVariables>;\nexport const AddAlbumToPlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"addAlbumToPlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"albumId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"DuplicatesHandling\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addAlbum\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"albumId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"albumId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addedCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"skippedCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resultingCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<AddAlbumToPlaylistMutation, AddAlbumToPlaylistMutationVariables>;\nexport const AddPlaylistToPlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"addPlaylistToPlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"DuplicatesHandling\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addPlaylist\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"playlistId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addedCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"skippedCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resultingCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<AddPlaylistToPlaylistMutation, AddPlaylistToPlaylistMutationVariables>;\nexport const AddRecommendationToPlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"addRecommendationToPlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendationID\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"DuplicatesHandling\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addRecommendation\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"recommendationID\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addedCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"skippedCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resultingCount\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<AddRecommendationToPlaylistMutation, AddRecommendationToPlaylistMutationVariables>;\nexport const AddTrackChartToPlaylistDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"addTrackChartToPlaylist\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"chartId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"defaultValue\":{\"kind\":\"IntValue\",\"value\":\"512\"}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"DuplicatesHandling\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlists\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addChart\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"chartId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"chartId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"duplicatesHandling\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addedCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"skippedCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resultingCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playlist\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistPreviewFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Playlist\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PlaylistLinkFragment\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cover\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"imageSize\"}}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"share\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tracksCount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"modifiedAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOwned\"}}]}}]} as unknown as DocumentNode<AddTrackChartToPlaylistMutation, AddTrackChartToPlaylistMutationVariables>;\nexport const CreateProfileDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"createProfile\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AddProfileInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profiles\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"addProfile\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"profile\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profile\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ProfileFragment\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ProfileFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Profile\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"color\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"current\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"master\"}}]}}]} as unknown as DocumentNode<CreateProfileMutation, CreateProfileMutationVariables>;\nexport const UpdateProfileDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"updateProfile\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"UpdateProfileInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profiles\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updateProfile\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"profileId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"profile\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<UpdateProfileMutation, UpdateProfileMutationVariables>;\nexport const RemoveProfileDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"removeProfile\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profiles\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"removeProfile\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"profileId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]}}]} as unknown as DocumentNode<RemoveProfileMutation, RemoveProfileMutationVariables>;\nexport const ReportPlaybackDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"reportPlayback\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"report\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ReportPlaybackInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reportPlayback\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"report\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"report\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ok\"}}]}}]}}]} as unknown as DocumentNode<ReportPlaybackMutation, ReportPlaybackMutationVariables>;","import type {\n AnalyticsPlayedErrorEventAction,\n AnalyticsPlayedEventAction,\n AudioInputAudioEndReasonAction,\n AudioInputAudioPlayChangeAction,\n AudioInputAudioPositionResetAction,\n AudioInputAudioSrcChangeAction,\n AudioInputAudiosChangeAction,\n AudioInputSetAndPlayAction,\n AudioInputTypeChangeAction,\n AudioOutputAudioDurationChangeAction,\n AudioOutputAudioEndedAction,\n AudioOutputAudioFailedAction,\n AudioOutputAudioPlayChangeAction,\n BannerToggleAction,\n CastSetAvailableAction,\n ContextMenuCloseAction,\n ContextMenuCloseAllAction,\n ContextMenuHoverAction,\n ContextMenuOpenAction,\n ContextMenuSetVisibleAction,\n ContextMenuUpdatePositionAction,\n EnableLogTypesAction,\n EventMessageAction,\n FavoritesUpdateAction,\n LiveRadioNowAndRecentlyPlayedUpdateSection,\n LiveRadioSetAndPlayAction,\n LiveRadioUpdateAction,\n LoggingEventAnalyticsAction,\n LoggingEventMessageAction,\n LoggingEventPlaybackReportAction,\n LoggingEventPlaybackReportForceAction,\n LoggingEventPlaybackReportSentAction,\n MaintenanceDataUpdateAction,\n ModalCloseAction,\n SentryCutoffShown,\n ModalOpenAction,\n NavigatePageContextUpdateAction,\n NavigatedAction,\n NotificationFeedNotificationsConversionAction,\n NotificationFeedNotificationsSeenAction,\n NotificationPwaInstallMessageWaitingAction,\n PageClickAction,\n PlayQueueAddToLastAction,\n PlayQueueAddToQueueAction,\n PlayQueueClearAction,\n PlayQueueDragAddToQueueAction,\n PlayQueueEndlessPlayToggleAction,\n PlayQueueEndlessPlayUpdateAction,\n PlayQueueEndlessPlayUpdateTrackIdAction,\n PlayQueuePlayTrack,\n PlayQueuePriorityLaneWarningToggleAction,\n PlayQueuePlayTrackAction,\n PlayQueueRemoveTrackAction,\n PlayQueueUpdateAction,\n PlayQueueUpdateMixRadioSessionAction,\n PlayeSetMuteAction,\n PlayerConcurrencyLostAction,\n PlayerNextAction,\n PlayerPreviousAction,\n PlayerRepeatAction,\n PlayerRewindAction,\n PlayerSeekAction,\n PlayerUiSeekingAction,\n PlayerSetControllerAndOutputTypeAction,\n PlayerSetVolumeAction,\n PlayerShuffleAction,\n PlaylistCollectionAddedAction,\n PlaylistCreatedAction,\n PlaylistDeletedAction,\n PlaylistModifiedAction,\n PlaylistTrackAddedAction,\n PlaylistTrackRemovedAction,\n PlaylistTrackReorderedAction,\n RecentTracksAddIdAction,\n RecentTracksUpdateAction,\n RehydrateAction,\n RouterRedirectingAction,\n SetDesktopQueueOpenAction,\n SetFavoritesSortingAction,\n SetLocalizationAction,\n SetLocalizationSettingAction,\n SetMaxiPlayerOpenAction,\n SetMiniPlayerOpenAction,\n SetThemeSettingAction,\n SetUserDraggingAction,\n TabFocusChangeAction,\n ToastOpenAction,\n TracingNewTraceAction,\n UpdateAppAction,\n UpdateCachedPlaylistsAction,\n UpdateControlPanelAction,\n UserAddSearchHistoryAction,\n UserClickSearchResultAction,\n UserChangedAction,\n UserLoggedInAction,\n UserLoggingOutAction,\n UserLoginErrorAction,\n UserUpdatedTokensAction,\n PlayerPreviousOrRewindAction,\n PlayerSetPlayAction,\n PlayerToggleFavoriteAction,\n PlayerTogglePlayAction,\n NotificationFeedSetNotificationsAction,\n AudioInputPlayAudioAction,\n PlaylistTracksAddedAction,\n PlayqueueClearPriorityLaneAction,\n PlayqueueKeepPriorityLaneAction,\n SetMyplaylistsSelection,\n SetDesktopLyricsVisibleAction,\n SetMyPlaylistTracksSorting,\n PlaylistCancelledAddingDuplicateItemsAction,\n DisplayedLyricsAction,\n UserProfilesChangedAction,\n SetSoundQualitySettingAction,\n ProfileCreatedAction,\n ProfileUpdatedAction,\n ProfileDeletedAction\n} from \"./actionTypes\";\n\n// general input\nexport const AUDIO_INPUT_AUDIOS_CHANGE = \"AUDIO_INPUT_AUDIOS_CHANGE\";\nexport const AUDIO_INPUT_AUDIO_END_REASON = \"AUDIO_INPUT_AUDIO_END_REASON\";\nexport const AUDIO_INPUT_AUDIO_PLAY_CHANGE = \"AUDIO_INPUT_AUDIO_PLAY_CHANGE\";\nexport const AUDIO_INPUT_AUDIO_POSITION_RESET = \"AUDIO_INPUT_AUDIO_POSITION_RESET\";\nexport const AUDIO_INPUT_AUDIO_SRC_CHANGE = \"AUDIO_INPUT_AUDIO_SRC_CHANGE\";\nexport const AUDIO_INPUT_SET_AND_PLAY = \"AUDIO_INPUT_SET_AND_PLAY\";\nexport const AUDIO_INPUT_PLAY_AUDIO = \"AUDIO_INPUT_PLAY_AUDIO\";\nexport const AUDIO_INPUT_TYPE_CHANGE = \"AUDIO_INPUT_TYPE_CHANGE\";\n\n// input/playQueue\nexport const PLAYQUEUE_ADD = \"PLAYQUEUE_ADD\";\nexport const PLAYQUEUE_ADD_TO_LAST = \"PLAYQUEUE_ADD_TO_LAST\";\nexport const PLAYQUEUE_CLEAR = \"PLAYQUEUE_CLEAR\";\nexport const PLAYQUEUE_CLEAR_PRIORITY_LANE = \"PLAYQUEUE_CLEAR_PRIORITY_LANE\";\nexport const PLAYQUEUE_KEEP_PRIORITY_LANE = \"PLAYQUEUE_KEEP_PRIORITY_LANE\";\nexport const PLAYQUEUE_DROP = \"PLAYQUEUE_DROP\";\nexport const PLAYQUEUE_PLAY_TRACK = \"PLAYQUEUE_PLAY_TRACK\";\nexport const PLAYQUEUE_REMOVE_TRACK = \"PLAYQUEUE_REMOVE_TRACK\";\nexport const PLAYQUEUE_SET_AND_PLAY = \"PLAYQUEUE_SET_AND_PLAY\";\nexport const PLAYQUEUE_PRIORITY_LANE_WARNING_TOGGLE = \"PLAYQUEUE_PRIORITY_LANE_WARNING_TOGGLE\";\nexport const PLAYQUEUE_UPDATE = \"PLAYQUEUE_UPDATE\";\nexport const PLAYQUEUE_UPDATE_MIXRADIO_SESSION = \"PLAYQUEUE_UPDATE_MIXRADIO_SESSION\";\n\n// input/liveRadio\nexport const LIVERADIO_NOW_AND_RECENTLY_PLAYED_UPDATE = \"LIVERADIO_NOW_AND_RECENTLY_PLAYED_UPDATE\";\nexport const LIVERADIO_SET_AND_PLAY = \"LIVERADIO_SET_AND_PLAY\";\nexport const LIVERADIO_UPDATE = \"LIVERADIO_UPDATE\";\n\n// input/playQueue/endlessPlay\nexport const PLAYQUEUE_ENDLESSPLAY_TOGGLE = \"PLAYQUEUE_ENDLESSPLAY_TOGGLE\";\nexport const PLAYQUEUE_ENDLESSPLAY_TRACK_ID_UPDATE = \"PLAYQUEUE_ENDLESSPLAY_TRACK_ID_UPDATE\";\nexport const PLAYQUEUE_ENDLESSPLAY_UPDATE = \"PLAYQUEUE_ENDLESSPLAY_UPDATE\";\nexport const PLAYQUEUE_HISTORY_TOGGLE = \"PLAYQUEUE_HISTORY_TOGGLE\";\n\n// general output\nexport const AUDIO_OUTPUT_AUDIO_DURATION_CHANGE = \"AUDIO_OUTPUT_AUDIO_DURATION_CHANGE\";\nexport const AUDIO_OUTPUT_AUDIO_ENDED = \"AUDIO_OUTPUT_AUDIO_ENDED\";\nexport const AUDIO_OUTPUT_AUDIO_PLAY_CHANGE = \"AUDIO_OUTPUT_AUDIO_PLAY_CHANGE\";\nexport const AUDIO_OUTPUT_AUDIO_FAILED = \"AUDIO_OUTPUT_AUDIO_FAILED\";\n\n// player\nexport const PLAYER_CONCURRENCY_LOST = \"PLAYER_CONCURRENCY_LOST\";\nexport const PLAYER_NEXT = \"PLAYER_NEXT\";\nexport const PLAYER_PREVIOUS = \"PLAYER_PREVIOUS\";\nexport const PLAYER_PREVIOUS_OR_REWIND = \"PLAYER_PREVIOUS_OR_REWIND\";\nexport const PLAYER_REPEAT = \"PLAYER_REPEAT\";\nexport const PLAYER_REWIND = \"PLAYER_REWIND\";\nexport const PLAYER_SEEK = \"PLAYER_SEEK\";\nexport const PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE = \"PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE\";\nexport const PLAYER_SET_MUTE = \"PLAYER_SET_MUTE\";\nexport const PLAYER_SET_PLAY = \"PLAYER_SET_PLAY\";\nexport const PLAYER_SET_VOLUME = \"PLAYER_SET_VOLUME\";\nexport const PLAYER_SHUFFLE = \"PLAYER_SHUFFLE\";\nexport const PLAYER_STARTED_BY_USER = \"PLAYER_STARTED_BY_USER\";\nexport const PLAYER_TOGGLE_FAVORITE = \"PLAYER_TOGGLE_FAVORITE\";\nexport const PLAYER_TOGGLE_PLAY = \"PLAYER_TOGGLE_PLAY\";\nexport const PLAYER_TOGGLE_VOLUME_EXPAND = \"PLAYER_TOGGLE_VOLUME_EXPAND\";\nexport const PLAYER_UI_SEEKING = \"PLAYER_UI_SEEKING\";\n\nexport const RECENT_TRACKS_UPDATE = \"RECENT_TRACKS_UPDATE\";\nexport const RECENT_TRACKS_ADD_ID = \"RECENT_TRACKS_ADD_ID\";\n\nexport const CLEAR_APP_STATE = \"CLEAR_APP_STATE\";\nexport const UPDATE_CONTROL_PANEL = \"UPDATE_CONTROL_PANEL\";\nexport const ENABLE_LOGTYPE = \"ENABLE_LOGTYPE\";\n\nexport const PAGE_CLICK = \"PAGE_CLICK\";\n\nexport const NAVIGATION_NAVIGATED = \"NAVIGATION_NAVIGATED\";\nexport const NAVIGATION_PAGECONTEXT_UPDATE = \"NAVIGATION_PAGECONTEXT_UPDATE\";\n\nexport const NOTIFICATION_BANNER_TOGGLE = \"NOTIFICATION_BANNER_TOGGLE\";\nexport const NOTIFICATION_MAINTENANCE_DATA_UPDATE = \"NOTIFICATION_MAINTENANCE_DATA_UPDATE\";\nexport const NOTIFICATION_PWA_INSTALL_MESSAGE_WAITING = \"NOTIFICATION_PWA_INSTALL_MESSAGE_WAITING\";\nexport const NOTIFICATION_WELCOME_MESSAGE_SHOWN = \"NOTIFICATION_WELCOME_MESSAGE_SHOWN\";\n\nexport const NOTIFICATION_FEED_SET_NOTIFICATIONS = \"NOTIFICATION_FEED_SET_NOTIFICATIONS\";\nexport const NOTIFICATION_FEED_NOTIFICATIONS_SEEN = \"NOTIFICATION_FEED_NOTIFICATIONS_SEEN\";\nexport const NOTIFICATION_FEED_NOTIFICATION_CONVERTED = \"NOTIFICATION_FEED_NOTIFICATION_CONVERTED\";\n\n// chromecast\nexport const CAST_SET_AVAILABLE = \"CAST_SET_AVAILABLE\";\n\n// context menu\nexport const CONTEXT_MENU_OPEN = \"CONTEXT_MENU_OPEN\";\nexport const CONTEXT_MENU_CLOSE = \"CONTEXT_MENU_CLOSE\";\nexport const CONTEXT_MENU_CLOSE_ALL = \"CONTEXT_MENU_CLOSE_ALL\";\nexport const CONTEXT_MENU_UPDATE_POSITION = \"CONTEXT_MENU_UPDATE_POSITION\";\nexport const CONTEXT_MENU_HOVER = \"CONTEXT_MENU_HOVER\";\nexport const CONTEXT_MENU_SET_VISIBLE = \"CONTEXT_MENU_SET_VISIBLE\";\nexport const CONTEXT_MENU_REPOSITION = \"CONTEXT_MENU_REPOSITION\";\n\nexport const MODAL_OPEN = \"MODAL_OPEN\";\nexport const MODAL_CLOSE = \"MODAL_CLOSE\";\n\n// analytics\nexport const ANALYTICS_PLAYED_ERROR_EVENT = \"ANALYTICS_PLAYED_ERROR_EVENT\";\nexport const ANALYTICS_PLAYED_EVENT = \"ANALYTICS_PLAYED_EVENT\";\nexport const ANALYTICS_PLAYQUEUE_SAVE_TO_PLAYLIST = \"PLAYQUEUE_SAVE_TO_PLAYLIST\";\nexport const ANALYTICS_PLAYQUEUE_CLEAR_QUEUE = \"ANALYTICS_PLAYQUEUE_CLEAR_QUEUE\";\n\n// app\nexport const UPDATE_APP_VERSION = \"UPDATE_APP\";\nexport const REHYDRATE = \"REHYDRATE\";\n\n//user\nexport const USER_ADD_SEARCH_HISTORY = \"USER_ADD_SEARCH_HISTORY\";\nexport const USER_CLICK_SEARCH_RESULT = \"USER_CLICK_SEARCH_RESULT\";\nexport const USER_CLEAR_SEARCH_HISTORY = \"USER_CLEAR_SEARCH_HISTORY\";\nexport const USER_CHANGED = \"USER_CHANGED\";\nexport const USER_LOGGED_IN = \"USER_LOGGED_IN\";\nexport const USER_LOGGING_OUT = \"USER_LOGGING_OUT\";\nexport const USER_LOGGED_OUT = \"USER_LOGGED_OUT\";\nexport const USER_UPDATED_TOKENS = \"USER_UPDATED_TOKENS\";\nexport const USER_HAS_BAD_TOKENS = \"USER_HAS_BAD_TOKENS\";\nexport const USER_LOGIN_ERROR = \"USER_LOGIN_ERROR\";\nexport const SENTRY_CUTOFF_SHOWN = \"SENTRY_CUTOFF_SHOWN\";\n\n//profile\nexport const USER_PROFILES_CHANGED = \"USER_PROFILES_CHANGED\";\nexport const PROFILE_CREATED = \"PROFILE_CREATED\";\nexport const PROFILE_UPDATED = \"PROFILE_UPDATED\";\nexport const PROFILE_DELETED = \"PROFILE_DELETED\";\n\nexport const ROUTER_REDIRECTING = \"ROUTER_REDIRECTING\";\n\n//ui\nexport const SET_ALBUMS_SORTING = \"SET_ALBUMS_SORTING\";\nexport const SET_DESKTOP_QUEUE_OPEN = \"SET_DESKTOP_QUEUE_OPEN\";\nexport const SET_DESKTOP_LYRICS_VISIBLE = \"SET_DESKTOP_LYRICS_VISIBLE\";\nexport const DISPLAYED_LYRICS = \"DISPLAYED_LYRICS\";\nexport const SET_MY_MUSIC_SORTING = \"SET_MY_MUSIC_SORTING\";\nexport const SET_MY_PLAYLISTS_SELECTION = \"SET_MY_PLAYLISTS_SELECTION\";\nexport const SET_MY_PLAYLIST_TRACKS_SORTING = \"SET_MY_PLAYLIST_TRACKS_SORTING\";\nexport const SET_MAXIPLAYER_OPEN = \"SET_MAXIPLAYER_OPEN\";\nexport const SET_MINIPLAYER_OPEN = \"SET_MINIPLAYER_OPEN\";\nexport const SET_THEME_SETTING = \"SET_THEME\";\nexport const SET_BROWSER_LANGUAGE = \"SET_BROWSER_LANGUAGE\";\nexport const SET_LOCALIZATION_SETTING = \"SET_LOCALIZATION_SETTING\";\nexport const SET_SOUNDQUALITY_SETTING = \"SET_SOUNDQUALITY_SETTING\";\nexport const SET_USER_DRAGGING = \"SET_USER_DRAGGING\";\nexport const TOGGLE_MAXIPLAYER_QUEUE_OPEN = \"TOGGLE_MAXIPLAYER_QUEUE_OPEN\";\n\n//logger\nexport const EVENT_MESSAGE = \"EVENT_MESSAGE\";\nexport const LOGGING_EVENT_MESSAGE = \"LOGGING_EVENT_MESSAGE\";\nexport const LOGGING_EVENT_ANALYTICS = \"LOGGING_EVENT_ANALYTICS\";\n\n// playback report\nexport const LOGGING_EVENT_PLAYBACK_REPORT_FINISHED = \"LOGGING_EVENT_PLAYBACK_REPORT_FINISHED\";\nexport const LOGGING_EVENT_PLAYBACK_REPORT_FORCE_FINISHED = \"LOGGING_EVENT_PLAYBACK_REPORT_FORCE_FINISHED\";\nexport const LOGGING_EVENT_PLAYBACK_REPORT_SENT = \"LOGGING_EVENT_PLAYBACK_REPORT_SENT\";\n\n//favorites\nexport const FAVORITES_UPDATED = \"FAVORITES_UPDATED\";\nexport const PLAYLIST_CREATED = \"PLAYLIST_CREATED\";\nexport const PLAYLIST_DELETED = \"PLAYLIST_DELETED\";\nexport const PLAYLIST_MODIFIED = \"PLAYLIST_MODIFIED\";\nexport const PLAYLIST_COLLECTION_ADDED = \"PLAYLIST_COLLECTION_ADDED\";\nexport const PLAYLIST_CANCELLED_ADDING_DUPLICATE_ITEMS = \"PLAYLIST_CANCELLED_ADDING_DUPLICATE_ITEMS\";\nexport const PLAYLIST_TRACK_ADDED = \"PLAYLIST_TRACK_ADDED\";\nexport const PLAYLIST_TRACKS_ADDED = \"PLAYLIST_TRACKS_ADDED\";\nexport const PLAYLIST_TRACKS_REMOVED = \"PLAYLIST_TRACKS_REMOVED\";\nexport const PLAYLIST_TRACK_REORDERED = \"PLAYLIST_TRACK_REORDERED\";\n\nexport const UPDATE_CACHED_PLAYLISTS = \"UPDATE_CACHED_PLAYLISTS\";\n\nexport const TOAST_OPEN = \"TOAST_OPEN\";\nexport const TOAST_CLOSE = \"TOAST_CLOSE\";\n\nexport const TAB_FOCUS_CHANGE = \"TAB_FOCUS_CHANGE\";\n\n// tracing\nexport const TRACING_NEW_TRACE = \"TRACING_NEW_TRACE\";\n\n// The actions that have no payload\ntype SimpleActionType =\n | typeof ANALYTICS_PLAYQUEUE_SAVE_TO_PLAYLIST\n | typeof ANALYTICS_PLAYQUEUE_CLEAR_QUEUE\n | typeof CLEAR_APP_STATE\n | typeof CONTEXT_MENU_REPOSITION\n | typeof NOTIFICATION_WELCOME_MESSAGE_SHOWN\n | typeof PLAYER_STARTED_BY_USER\n | typeof PLAYER_TOGGLE_VOLUME_EXPAND\n | typeof PLAYQUEUE_HISTORY_TOGGLE\n | typeof TOAST_CLOSE\n | typeof TOGGLE_MAXIPLAYER_QUEUE_OPEN\n | typeof USER_CLEAR_SEARCH_HISTORY\n | typeof USER_HAS_BAD_TOKENS\n | typeof USER_LOGGED_OUT;\n\n// The actions that have a payload\ntype ComplexActionType =\n | typeof ANALYTICS_PLAYED_ERROR_EVENT\n | typeof ANALYTICS_PLAYED_EVENT\n | typeof AUDIO_INPUT_AUDIOS_CHANGE\n | typeof AUDIO_INPUT_AUDIO_END_REASON\n | typeof AUDIO_INPUT_AUDIO_PLAY_CHANGE\n | typeof AUDIO_INPUT_AUDIO_POSITION_RESET\n | typeof AUDIO_INPUT_AUDIO_SRC_CHANGE\n | typeof AUDIO_INPUT_PLAY_AUDIO\n | typeof AUDIO_INPUT_SET_AND_PLAY\n | typeof AUDIO_INPUT_TYPE_CHANGE\n | typeof AUDIO_OUTPUT_AUDIO_DURATION_CHANGE\n | typeof AUDIO_OUTPUT_AUDIO_ENDED\n | typeof AUDIO_OUTPUT_AUDIO_FAILED\n | typeof AUDIO_OUTPUT_AUDIO_PLAY_CHANGE\n | typeof CAST_SET_AVAILABLE\n | typeof CONTEXT_MENU_CLOSE\n | typeof CONTEXT_MENU_CLOSE_ALL\n | typeof CONTEXT_MENU_HOVER\n | typeof CONTEXT_MENU_OPEN\n | typeof CONTEXT_MENU_UPDATE_POSITION\n | typeof ENABLE_LOGTYPE\n | typeof EVENT_MESSAGE\n | typeof FAVORITES_UPDATED\n | typeof LIVERADIO_SET_AND_PLAY\n | typeof LIVERADIO_UPDATE\n | typeof LOGGING_EVENT_ANALYTICS\n | typeof LOGGING_EVENT_PLAYBACK_REPORT_FINISHED\n | typeof LOGGING_EVENT_PLAYBACK_REPORT_FORCE_FINISHED\n | typeof LOGGING_EVENT_PLAYBACK_REPORT_SENT\n | typeof MODAL_CLOSE\n | typeof MODAL_OPEN\n | typeof NAVIGATION_NAVIGATED\n | typeof NAVIGATION_PAGECONTEXT_UPDATE\n | typeof NOTIFICATION_BANNER_TOGGLE\n | typeof NOTIFICATION_FEED_NOTIFICATIONS_SEEN\n | typeof NOTIFICATION_FEED_NOTIFICATION_CONVERTED\n | typeof NOTIFICATION_MAINTENANCE_DATA_UPDATE\n | typeof NOTIFICATION_PWA_INSTALL_MESSAGE_WAITING\n | typeof PAGE_CLICK\n | typeof PLAYER_CONCURRENCY_LOST\n | typeof PLAYER_REPEAT\n | typeof PLAYER_SEEK\n | typeof PLAYER_UI_SEEKING\n | typeof PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE\n | typeof PLAYER_SET_MUTE\n | typeof PLAYER_SET_PLAY\n | typeof PLAYER_SET_VOLUME\n | typeof PLAYER_TOGGLE_FAVORITE\n | typeof PLAYER_TOGGLE_PLAY\n | typeof PLAYLIST_CREATED\n | typeof PLAYLIST_DELETED\n | typeof PLAYLIST_MODIFIED\n | typeof PLAYLIST_TRACKS_ADDED\n | typeof PLAYLIST_TRACKS_REMOVED\n | typeof PLAYLIST_TRACK_ADDED\n | typeof PLAYLIST_TRACK_REORDERED\n | typeof PLAYQUEUE_ADD\n | typeof PLAYQUEUE_ADD_TO_LAST\n | typeof PLAYQUEUE_CLEAR\n | typeof PLAYQUEUE_CLEAR_PRIORITY_LANE\n | typeof PLAYQUEUE_DROP\n | typeof PLAYQUEUE_ENDLESSPLAY_TOGGLE\n | typeof PLAYQUEUE_ENDLESSPLAY_TRACK_ID_UPDATE\n | typeof PLAYQUEUE_ENDLESSPLAY_UPDATE\n | typeof PLAYQUEUE_KEEP_PRIORITY_LANE\n | typeof PLAYQUEUE_PLAY_TRACK\n | typeof PLAYQUEUE_PRIORITY_LANE_WARNING_TOGGLE\n | typeof PLAYQUEUE_REMOVE_TRACK\n | typeof PLAYQUEUE_SET_AND_PLAY\n | typeof PLAYQUEUE_UPDATE\n | typeof PLAYQUEUE_UPDATE_MIXRADIO_SESSION\n | typeof PROFILE_CREATED\n | typeof PROFILE_UPDATED\n | typeof PROFILE_DELETED\n | typeof RECENT_TRACKS_ADD_ID\n | typeof RECENT_TRACKS_UPDATE\n | typeof REHYDRATE\n | typeof ROUTER_REDIRECTING\n | typeof SET_BROWSER_LANGUAGE\n | typeof SET_DESKTOP_QUEUE_OPEN\n | typeof SET_LOCALIZATION_SETTING\n | typeof SET_MAXIPLAYER_OPEN\n | typeof SET_MY_MUSIC_SORTING\n | typeof SET_THEME_SETTING\n | typeof SET_USER_DRAGGING\n | typeof TAB_FOCUS_CHANGE\n | typeof TRACING_NEW_TRACE\n | typeof UPDATE_APP_VERSION\n | typeof UPDATE_CONTROL_PANEL\n | typeof USER_CHANGED\n | typeof USER_LOGGED_IN\n | typeof USER_LOGGING_OUT\n | typeof USER_PROFILES_CHANGED\n | typeof USER_LOGIN_ERROR\n | typeof USER_UPDATED_TOKENS;\n\n// Include the actions that contain a payload\nexport type ActionType = SimpleActionType | ComplexActionType;\n\nexport type Action =\n | AnalyticsPlayedErrorEventAction\n | AnalyticsPlayedEventAction\n | AudioInputAudioEndReasonAction\n | AudioInputAudioPlayChangeAction\n | AudioInputAudioPositionResetAction\n | AudioInputAudioSrcChangeAction\n | AudioInputAudiosChangeAction\n | AudioInputSetAndPlayAction\n | AudioInputPlayAudioAction\n | AudioInputTypeChangeAction\n | AudioOutputAudioDurationChangeAction\n | AudioOutputAudioEndedAction\n | AudioOutputAudioFailedAction\n | AudioOutputAudioPlayChangeAction\n | BannerToggleAction\n | CastSetAvailableAction\n | ContextMenuCloseAction\n | ContextMenuCloseAllAction\n | ContextMenuHoverAction\n | ContextMenuOpenAction\n | ContextMenuSetVisibleAction\n | ContextMenuUpdatePositionAction\n | EnableLogTypesAction\n | EventMessageAction\n | FavoritesUpdateAction\n | LiveRadioNowAndRecentlyPlayedUpdateSection\n | LiveRadioSetAndPlayAction\n | LiveRadioUpdateAction\n | LoggingEventAnalyticsAction\n | LoggingEventMessageAction\n | LoggingEventPlaybackReportAction\n | LoggingEventPlaybackReportForceAction\n | LoggingEventPlaybackReportSentAction\n | MaintenanceDataUpdateAction\n | ModalCloseAction\n | SentryCutoffShown\n | ModalOpenAction\n | NavigatePageContextUpdateAction\n | NavigatedAction\n | NotificationFeedSetNotificationsAction\n | NotificationFeedNotificationsConversionAction\n | NotificationFeedNotificationsSeenAction\n | NotificationPwaInstallMessageWaitingAction\n | PageClickAction\n | PlayQueueAddToLastAction\n | PlayQueueAddToQueueAction\n | PlayQueueClearAction\n | PlayQueueDragAddToQueueAction\n | PlayQueueEndlessPlayToggleAction\n | PlayQueueEndlessPlayUpdateAction\n | PlayqueueClearPriorityLaneAction\n | PlayqueueKeepPriorityLaneAction\n | PlayQueueEndlessPlayUpdateTrackIdAction\n | PlayQueuePriorityLaneWarningToggleAction\n | PlayQueuePlayTrack\n | PlayQueuePlayTrackAction\n | PlayQueueRemoveTrackAction\n | PlayQueueUpdateAction\n | PlayQueueUpdateMixRadioSessionAction\n | PlayeSetMuteAction\n | PlayerConcurrencyLostAction\n | PlayerNextAction\n | PlayerPreviousAction\n | PlayerPreviousOrRewindAction\n | PlayerRepeatAction\n | PlayerRewindAction\n | PlayerSeekAction\n | PlayerUiSeekingAction\n | PlayerSetControllerAndOutputTypeAction\n | PlayerSetPlayAction\n | PlayerSetVolumeAction\n | PlayerShuffleAction\n | PlayerToggleFavoriteAction\n | PlayerTogglePlayAction\n | PlaylistCollectionAddedAction\n | PlaylistCreatedAction\n | PlaylistDeletedAction\n | PlaylistCancelledAddingDuplicateItemsAction\n | PlaylistModifiedAction\n | PlaylistTracksAddedAction\n | PlaylistTrackAddedAction\n | PlaylistTrackRemovedAction\n | PlaylistTrackReorderedAction\n | ProfileCreatedAction\n | ProfileUpdatedAction\n | ProfileDeletedAction\n | RecentTracksAddIdAction\n | RecentTracksUpdateAction\n | RehydrateAction\n | RouterRedirectingAction\n | SetDesktopLyricsVisibleAction\n | DisplayedLyricsAction\n | SetDesktopQueueOpenAction\n | SetFavoritesSortingAction\n | SetMyPlaylistTracksSorting\n | SetMyplaylistsSelection\n | SetLocalizationAction\n | SetLocalizationSettingAction\n | SetSoundQualitySettingAction\n | SetMaxiPlayerOpenAction\n | SetMiniPlayerOpenAction\n | SetThemeSettingAction\n | SetUserDraggingAction\n | TabFocusChangeAction\n | ToastOpenAction\n | TracingNewTraceAction\n | UpdateAppAction\n | UpdateCachedPlaylistsAction\n | UpdateControlPanelAction\n | UserAddSearchHistoryAction\n | UserClickSearchResultAction\n | UserChangedAction\n | UserLoggedInAction\n | UserLoggingOutAction\n | UserLoginErrorAction\n | UserProfilesChangedAction\n | UserUpdatedTokensAction\n | { type: SimpleActionType };\n","export * from \"./actions\";\nexport * from \"./actionTypes\";\n","import { h } from \"preact\";\nimport { useEffect, useState } from \"preact/hooks\";\nimport type { RoutableProps, RouteProps } from \"preact-router\";\nimport { route } from \"preact-router\";\nimport { useSelector } from \"react-redux\";\nimport type { RootModel } from \"models/app\";\nimport { LoginState } from \"models/app/LoginState\";\nimport { showLoginUi } from \"components/organisms/login\";\n\ninterface Props extends RouteProps<RoutableProps> {\n previous: string;\n}\nexport const PrivateRoute = (props: Props) => {\n const { component: Component, path, previous } = props;\n const [wasLoggedIn, setWasLoggedIn] = useState(false);\n const loginState = useSelector((root: RootModel) => root.user.state);\n const showContent = loginState === LoginState.LoggedIn;\n\n useEffect(() => {\n if (loginState === LoginState.LoggedIn) {\n setWasLoggedIn(true);\n } else if (loginState === LoginState.LoggedOut) {\n if (wasLoggedIn) {\n route(\"/\", true);\n } else {\n showLoginUi()\n .then(() => setWasLoggedIn(true))\n .catch(() => route(previous, true));\n }\n }\n return;\n }, [wasLoggedIn, loginState, previous]);\n\n return showContent ? <Component {...props} /> : null;\n};\n","import { h } from \"preact\";\nimport { useEffect, useState } from \"preact/hooks\";\nimport type { RoutableProps, RouteProps } from \"preact-router\";\nimport { getCurrentUrl, route, Route } from \"preact-router\";\nimport { dispatch } from \"global\";\nimport { ROUTER_REDIRECTING } from \"global/actions\";\nimport { getRedirectUrl } from \"services/backend\";\nimport { UrlTransformVersion } from \"generated/graphql-types\";\nimport { NotFoundPage } from \"components/pages/errorPages/NotFoundPage\";\n\nexport const UnhandledRoute = (props: RouteProps<RoutableProps>) => {\n const [redirectUrl, setRedirectUrl] = useState<string | null>();\n const [hasResult, setHasResult] = useState(false);\n\n const fetchData = async () => {\n try {\n const url = getCurrentUrl();\n const path = await getRedirectedUrl(url);\n\n setRedirectUrl(path);\n setHasResult(true);\n } catch (e) {\n setHasResult(true);\n console.error(e);\n }\n };\n\n useEffect(() => {\n fetchData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (redirectUrl == undefined) return;\n if (redirectUrl.startsWith(\"http\")) {\n window.location.href = redirectUrl;\n } else {\n const url = getCurrentUrl();\n dispatch({ type: ROUTER_REDIRECTING, payload: { from: url, to: redirectUrl } });\n route(redirectUrl);\n }\n }, [redirectUrl]);\n\n if (!hasResult || redirectUrl) return null;\n return <Route default component={NotFoundPage} />;\n};\n\nasync function getRedirectedUrl(url: string) {\n const origin = window.location.origin;\n const wholeUrl = origin + url;\n\n const result = (await getRedirectUrl({ transform: { transformTo: UrlTransformVersion.V_2, url: wholeUrl } })).model;\n\n if (result == null) return;\n\n if (!result.startsWith(origin)) return result;\n const path = result.substring(origin.length);\n\n return path;\n}\n","import * as Sentry from \"@sentry/react\";\nimport { render } from \"preact\";\nimport { unloadStoreAndPersist } from \".\";\nimport { configcmsInit } from \"./configcms\";\nimport { deleteSessionDbState, initStoreAndPersist } from \"./configureStore\";\nimport { App } from \"components/app\";\nimport { WebAppBrand, WebAppEnvironment } from \"shared/models\";\nimport { getAppVersionString } from \"shared/services\";\nimport { initAppSession, unloadAppSesssion } from \"services/appSession\";\nimport { unloadTokenLock } from \"services/appSession/operations/sessionTokens\";\nimport { initAppVersionService } from \"services/appVersion\";\nimport { initGraphQLClient as initGraphqlClient, initGraphqlSubscriptions } from \"services/backend\";\nimport { initGraphqlCacheService } from \"services/cache\";\nimport { initCacheQuotaService } from \"services/cache/cacheQuota\";\nimport { initConcurrency } from \"services/concurrency\";\nimport { initConcurrencyPolling } from \"services/concurrency/polling\";\nimport { initControlPanelService } from \"services/controlPanel/initControlPanelService\";\nimport type { BuildEnvironment, Environment } from \"services/environment\";\nimport { initEnvironment } from \"services/environment\";\nimport { initFavorites, initializeCachedFavoritesStatistics } from \"services/favorites\";\nimport { initLanguageService } from \"services/language/\";\nimport {\n initKibanaLoggerService,\n initLyricsReportService,\n initAnalyticsService,\n initConsoleLoggerService,\n initFbPerformance,\n initEventLogService,\n log, initMpLoggerService,\n initPlaybackReportSendService,\n initPlaybackReportService,\n startPlaybackReporting\n} from \"services/logger\";\nimport { initNavigationStack } from \"services/navigationStack/navigationStack\";\nimport { initNotificationFeedService } from \"services/notificationFeed\";\nimport { initCastService } from \"services/player/controllers/chromeCast/initChromeCastPlayerControllerService\";\nimport { playerControllerService } from \"services/player/controllers/initPlayerControllerService\";\nimport { initLocalPlayerControllerService } from \"services/player/controllers/local/initLocalPlayerControllerService\";\nimport { initPlayerDebug } from \"services/player/helpers/debug\";\nimport { initInputAudioService } from \"services/player/inputs\";\nimport { initLiveRadioAudioInputService } from \"services/player/inputs/inputs/liveRadio\";\nimport { initPlayQueueAudioInputService } from \"services/player/inputs/inputs/playQueue/initPlayQueueAudioInputService\";\nimport { initBrowserAudio } from \"services/player/outputs/browserAudio/browserAudioOutputService\";\nimport { initLiveRadioHeartbeatService } from \"services/player/relatedServices\";\nimport { initMediaSessionService } from \"services/player/relatedServices/initMediaSessionService\";\nimport { initRecentTracksService } from \"services/player/relatedServices/initRecentTracksService\";\nimport { initCachedUserPlaylists } from \"services/playlist\";\nimport { initPWAService } from \"services/pwa/initPWAService\";\nimport { initRemoteConfigService } from \"services/remoteConfig\";\nimport { initServiceWorker } from \"services/serviceWorker/initServiceWorker\";\nimport { initShortcutService } from \"services/shortcuts\";\nimport { initTabActiveService } from \"services/tabActive/initTabActiveService\";\nimport { initUserService, initLoginFromPageLoad } from \"services/user\";\nimport { initUserDebug } from \"services/user/debug\";\nimport { initDelegatedLoginListener } from \"components/organisms/login\";\n\nexport const appInit = async (environment: BuildEnvironment) => {\n await appInit1(environment);\n render(App(), document.body);\n await appInit2();\n};\n\nexport let isUnloading = false;\nwindow.addEventListener(\"beforeunload\", () => {\n isUnloading = true;\n});\n\nfunction dsnFromBrand(brand: WebAppBrand): string {\n switch (brand) {\n case WebAppBrand.Telmore:\n return \"https://44fc53efe92242e28a32ea75055d4e8c@o252631.ingest.sentry.io/4505346557739008\";\n case WebAppBrand.YouSee:\n return \"https://8849cdbfc28b4a8192ecc0f09ae1edf1@o252631.ingest.sentry.io/4505346556624896\";\n }\n}\nfunction getTraceTargets(brand: WebAppBrand) {\n switch (brand) {\n case WebAppBrand.Telmore:\n return [\"localhost\", \"musik.telmore.dk\"];\n case WebAppBrand.YouSee:\n return [\"localhost\", \"musik.yousee.dk\"];\n }\n}\nconst initSentry = (environment: Environment) => {\n const isBuildDevelopment = environment.buildEnvironment === WebAppEnvironment.Development;\n\n const appVersion = getAppVersionString();\n const release = `${environment.webAppBrand.toLowerCase}@${appVersion}`;\n const dsn = dsnFromBrand(environment.webAppBrand);\n const targets = getTraceTargets(environment.webAppBrand);\n\n Sentry.init({\n dsn,\n integrations: [\n new Sentry.BrowserTracing({\n // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled\n tracePropagationTargets: targets\n }),\n new Sentry.Replay()\n ],\n release,\n environment: environment.buildEnvironment,\n debug: false, // isBuildDevelopment,\n transport: Sentry.makeBrowserOfflineTransport(Sentry.makeFetchTransport),\n // Performance Monitoring\n tracesSampleRate: isBuildDevelopment ? 1.0 : 0.1, // Capture 100% of the transactions, reduce in production!\n // Session Replay\n replaysSessionSampleRate: isBuildDevelopment ? 1.0 : 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n replaysOnErrorSampleRate: 1.0 // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n });\n};\n\nconst appInit1 = async (environment: BuildEnvironment) => {\n try {\n initEnvironment(environment);\n initSentry(environment.environment);\n\n const sessionTask = initAppSession();\n\n initNavigationStack();\n\n initEventLogService();\n initAnalyticsService();\n initConsoleLoggerService();\n\n // initFbLoggerService(); disbaled because ghostery extention crashes site when logging to firebase/google analytics\n initMpLoggerService();\n\n await sessionTask;\n await initStoreAndPersist();\n } catch (e) {\n console.error(\"web-220927-1237\", e);\n }\n try {\n // log.info({\n // code: \"web-210219-1345\",\n // msg: \"app init 1\",\n // data: {\n // environment: JSON.stringify(environment),\n // browser: JSON.stringify(getBrowserNameAndVersion())\n // }\n // });\n\n initKibanaLoggerService();\n initRemoteConfigService();\n initAppVersionService();\n\n initControlPanelService();\n\n initGraphqlCacheService();\n initGraphqlClient();\n\n initFbPerformance();\n\n await configcmsInit();\n initServiceWorker();\n initPWAService();\n\n window.addEventListener(\"beforeunload\", () => {\n unloadTokenLock();\n });\n\n initTabActiveService(); // todo: should be after login?\n initLanguageService();\n } catch (e) {\n log.error({ code: \"web-210518-1536\", msg: \"App init failed\", error: e });\n deleteSessionDbState();\n\n // setTimeout(() => window.location.reload(), 3000);\n }\n};\n\nconst appInit2 = async () => {\n try {\n // log.info({ code: \"web-210219-1345\", msg: \"app init 2\" });\n await initLoginFromPageLoad();\n await initUserService();\n\n initGraphqlSubscriptions();\n\n initConcurrencyPolling();\n initConcurrency();\n initRecentTracksService();\n\n initFavorites();\n initializeCachedFavoritesStatistics();\n initCachedUserPlaylists();\n\n //initPlayer;\n initMediaSessionService();\n initShortcutService();\n playerControllerService();\n initLocalPlayerControllerService();\n initLiveRadioHeartbeatService();\n\n //initPlayQueue;\n initPlayerDebug();\n initInputAudioService();\n initPlayQueueAudioInputService();\n\n initLiveRadioAudioInputService();\n\n //initBrowserAudio;\n initNotificationFeedService();\n initPlaybackReportService();\n initPlaybackReportSendService();\n initLyricsReportService();\n initBrowserAudio();\n\n initCastService();\n\n // initEndlessPlay(); TODO remove if it works...\n startPlaybackReporting();\n\n // Delegated login\n initDelegatedLoginListener();\n\n initCacheQuotaService();\n initUserDebug();\n } catch (e) {\n log.error({ code: \"web-210518-1537\", msg: \"App init 2 failed\", error: e });\n deleteSessionDbState();\n\n // setTimeout(() => window.location.reload(), 3000);\n }\n\n window.addEventListener(\"beforeunload\", () => {\n unloadStoreAndPersist();\n unloadAppSesssion();\n });\n};\n","import { getLangFromState, useLocalization } from \"components/app/hooks\";\nimport * as _analyticsKeys from \"generated/analyticsKeys.json\";\nimport type { NuuApps } from \"generated/localization\";\nimport type { Language } from \"models/view/Localization\";\n\n// todo: This is just something quick'n'dirty to get the ball rolling.\n// It'll be replaced by something that fetches and caches the json, and checks for updates if already cached.\n\nexport const analyticsKeys = _analyticsKeys;\n\nlet translations: { [key in Language]: NuuApps } = {\n Danish: {} as NuuApps,\n English: {} as NuuApps\n};\n\nexport const setTranslations = (values: typeof translations) => {\n translations = values;\n};\n\nexport type TranslationKey = keyof NuuApps;\nexport type AnalyticsKey = keyof typeof analyticsKeys;\n\nexport const translate = (key: TranslationKey) => {\n const lang = getLangFromState();\n return translations[lang][key];\n};\nexport const translateWithReplacement = (key: TranslationKey, name: string, value: string) => translate(key).replace(`\\${${name}}`, value);\n\nexport const analyticKey = (key: AnalyticsKey) => analyticsKeys[key];\n\nconst translationsPromise = new Promise<void>((resolve) => resolve());\n\nexport const configcmsInit = () => translationsPromise;\n\nexport function useTranslations() {\n const local = useLocalization();\n return translations[local];\n}\nexport function useTranslateKey(key: TranslationKey) {\n const local = useLocalization();\n return translations[local][key];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { composeWithDevTools } from \"@redux-devtools/extension\";\nimport type { Dispatch, Store } from \"redux\";\nimport { createStore, applyMiddleware } from \"redux\";\nimport { getConfiguredCache } from \"./dbService\";\nimport { persistMiddleware, saveCurrentState } from \"./persistMiddleWare\";\nimport type { Action } from \"../actions\";\nimport { REHYDRATE } from \"global/actions\";\nimport { rootReducer } from \"global/reducers\";\nimport { getSessionDbKey } from \"services/appSession/helpers\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { createMessageBusMiddleware, TypedMessageBus } from \"services/messagebus\";\nimport type { RootModel } from \"models/app\";\n\nexport const messageBus = new TypedMessageBus<Action>();\nexport const preLoadedStore: Store<RootModel> | null = null;\n// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\nexport let store: Store<RootModel> = null!;\nconst blacklist = [\"menu\", \"modal\", \"cache\"];\n\nexport async function initStoreAndPersist(retry = true) {\n try {\n store = await createNewStore();\n } catch (e) {\n log.error({ code: \"web-220217-1331\", msg: \"redux store could not initiate\", error: e });\n if (retry) {\n await deleteSessionDbState();\n initStoreAndPersist(false);\n } else throw e;\n }\n}\n\nexport async function unloadStoreAndPersist() {\n saveSessionState(\"beforeUnload\");\n}\n\nexport async function createNewStore() {\n const cache = getSessionCache();\n const data = await cache.getAll();\n const state = convertDbKeyValuesToState(data) as unknown as RootModel;\n\n const newStore = createStore(\n rootReducer,\n state as unknown as any,\n composeWithDevTools(applyMiddleware(persistMiddleware(cache.setMany, blacklist), createMessageBusMiddleware(messageBus)))\n );\n\n const storeDispatch = newStore.dispatch;\n newStore.dispatch = function (action: Action) {\n try {\n storeDispatch(action);\n } catch (e) {\n window.setTimeout(() => log.error({ code: \"web-210217-1436\", msg: \"dispatch error\", data: { action }, error: e }), 0);\n }\n } as Dispatch<Action>;\n\n await new Promise<void>((resolve) => {\n window.setTimeout(() => {\n newStore.dispatch({ type: REHYDRATE, payload: state });\n resolve();\n }, 0);\n });\n\n return newStore;\n}\n\nexport async function saveSessionState(initiator: string) {\n const cache = getSessionCache();\n await saveCurrentState(cache.setMany, blacklist, initiator);\n}\n\nexport async function copyDbState(fromDatabaseName: string, toDatabaseName: string) {\n const from = getConfiguredCache(fromDatabaseName);\n const to = getConfiguredCache(toDatabaseName);\n\n const data = await from.getAll();\n await to.setMany(data);\n}\n\nexport async function deleteDbState(databaseName: string) {\n const cache = getConfiguredCache(databaseName);\n await cache.deleteDatabase();\n}\n\nexport async function deleteSessionDbState() {\n const databaseName = getSessionDbKey();\n\n const cache = getConfiguredCache(databaseName);\n await cache.deleteDatabase();\n}\n\nfunction convertDbKeyValuesToState(keyValues: [IDBValidKey, unknown][]): Record<string, unknown> {\n const object: Record<string, unknown> = {};\n keyValues.forEach((keyValues) => {\n const [key, value] = keyValues;\n if (typeof key !== \"string\") {\n log.error({ code: \"web-211129-1705\", msg: DefaultLogMessage.UnexpectedValue });\n return;\n }\n object[key] = value;\n });\n return object;\n}\n\nfunction getSessionCache() {\n const databaseName = getSessionDbKey();\n return getConfiguredCache(databaseName);\n}\n","import * as idbKeyVal from \"idb-keyval\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\n\nconst get = async (key: IDBValidKey, store: idbKeyVal.UseStore) => {\n return idbKeyVal.get(key, store).catch((e: unknown) => log.error({ code: \"web-091221-1147\", msg: DefaultLogMessage.UnexpectedValue, error: e }));\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst getMany = async (keys: IDBValidKey[], store: idbKeyVal.UseStore): Promise<unknown[]> => {\n return idbKeyVal.getMany(keys, store).catch((e: unknown) => {\n log.error({ code: \"web-091221-1148\", msg: DefaultLogMessage.UnexpectedValue, error: e });\n return [];\n });\n};\n\nconst set = async (key: IDBValidKey, data: unknown, store: idbKeyVal.UseStore) => {\n return idbKeyVal.set(key, data, store).catch((e: unknown) => log.error({ code: \"web-091221-1149\", msg: DefaultLogMessage.UnexpectedValue, error: e }));\n};\n\nconst setMany = async (entries: [IDBValidKey, unknown][], store: idbKeyVal.UseStore) => {\n return idbKeyVal.setMany(entries, store).catch((e: unknown) => {\n log.error({ code: \"web-091221-1150\", msg: \"error setting entries in db\", data: { entries }, error: e });\n });\n};\n\nconst getAll = async (store: idbKeyVal.UseStore): Promise<[IDBValidKey, unknown][]> => {\n try {\n const keys = await idbKeyVal.keys(store);\n const values = await getMany(keys, store);\n\n const keyValues: [IDBValidKey, unknown][] = [];\n values.forEach((data, index) => {\n const key = keys[index];\n keyValues.push([key, data]);\n });\n\n return keyValues;\n } catch (e) {\n log.error({ code: \"web-211210-1705\", msg: \"error in getAll\", error: e });\n return [];\n }\n};\n\nexport const getConfiguredCache = (databaseName: string) => {\n const { store, database } = createDatabaseAndStore(databaseName, \"state\");\n\n return {\n get: (key: IDBValidKey) => get(key, store),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set: (key: IDBValidKey, val: any) => set(key, val, store),\n setMany: (entries: [IDBValidKey, unknown][]) => setMany(entries, store),\n getAll: () => getAll(store),\n del: (key: IDBValidKey) => idbKeyVal.del(key, store),\n clear: () => idbKeyVal.clear(store),\n keys: () => idbKeyVal.keys(store),\n deleteDatabase: async () => closeAndDeleteDatabase(await database),\n database\n };\n};\n\nasync function closeAndDeleteDatabase(database: IDBDatabase): Promise<void> {\n database.close();\n await deleteDatabase(database.name);\n}\n\nasync function deleteDatabase(name: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const request = indexedDB.deleteDatabase(name);\n request.onsuccess = () => resolve();\n request.onerror = () => reject();\n });\n}\n\nfunction createDatabaseAndStore(dbName: string, storeName: string) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = idbKeyVal.promisifyRequest(request) as Promise<IDBDatabase>;\n\n const store = (txMode: IDBTransactionMode, callback: (store: IDBObjectStore) => void) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dbp.then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName))) as any;\n\n return { store, database: dbp };\n}\n\n// function databaseExists(dbname: string): Promise<boolean> {\n// return new Promise((resolve) => {\n// const req = indexedDB.open(dbname);\n// let existed = true;\n// req.onsuccess = () => {\n// req.result.close();\n// if (!existed) indexedDB.deleteDatabase(dbname);\n// resolve(existed);\n// };\n// req.onupgradeneeded = () => {\n// existed = false;\n// };\n// });\n// }\n\n// setTimeout(async () => {\n// testCreateAndDeleteDatabase();\n// }, 5000);\n\n// async function testCreateAndDeleteDatabase() {\n// const cache = getConfiguredCache(\"test4\");\n\n// await cache.set(\"hej\", \"hej\");\n// await cache.del(\"hej\");\n\n// alert(\"created\");\n\n// setTimeout(async () => {\n// await cache.deleteDatabase();\n\n// alert(\"test db deleted\");\n// alert(\"check: \" + (await databaseExists(\"test4\")));\n// }, 5000);\n// }\n","// todo: move this to ControlPanelModel with console.settings support, and consider fetching it from the server\n\ndeclare const WEBPACK_FORCE_REMOTE_BACKEND: boolean;\n\nexport enum Feature {\n ClientsideFiltering,\n Multiselect,\n LiveradioHeartbeat,\n APQ,\n SessionFrame,\n ForceRemoteBackend,\n Lyrics,\n LyricsIconWhenNotAvailable,\n Profiles,\n SoundQuality,\n BottomSheetMenus,\n ForceLogout\n}\n\nexport function isFeatureEnabled(feature: Feature) {\n switch (feature) {\n case Feature.LiveradioHeartbeat:\n return true;\n case Feature.ClientsideFiltering:\n return false;\n case Feature.Multiselect:\n return false;\n case Feature.APQ:\n return false;\n case Feature.SessionFrame:\n // only enable on stage, where the backend also enables ping login\n return -1 !== document.location.hostname.indexOf(\"stage\");\n case Feature.ForceRemoteBackend: {\n const isLocalhost = document.location.hostname === \"localhost\";\n return isLocalhost && !!WEBPACK_FORCE_REMOTE_BACKEND;\n }\n case Feature.Lyrics:\n return true;\n case Feature.LyricsIconWhenNotAvailable:\n return false;\n case Feature.Profiles:\n return true;\n case Feature.SoundQuality:\n return false;\n case Feature.BottomSheetMenus:\n return false;\n case Feature.ForceLogout:\n return true;\n }\n}\n","export * from \"./appInit\";\nexport * from \"./configcms\";\nexport * from \"./configureStore\";\nexport * from \"./featuretoggle\";\nexport * from \"./PrivateRoute\";\nexport * from \"./UnhandledRoute\";\n","import { Store, Action, MiddlewareAPI } from \"redux\";\nimport { Dispatch, store } from \"global\";\nimport { RootModel } from \"models/app\";\nconst equal = require(\"fast-deep-equal\");\n\nconst fallback = (cb: IdleRequestCallback) => setTimeout(cb, 0);\nconst requestIdleCallbackFn = typeof requestIdleCallback === \"undefined\" ? fallback : requestIdleCallback;\n\nlet firstLoad = true;\nlet timerId: number | null = null;\nlet dbCompareState: Record<string, unknown> | null = null;\n\nexport async function saveCurrentState(cacheFn: (entries: [IDBValidKey, unknown][]) => Promise<void | null>, blacklist: string[], initiator: string) {\n if (dbCompareState == null) return;\n const currentState = convertToObjectFromState();\n await saveStateChanges(currentState, blacklist, cacheFn, initiator);\n}\n\nexport function persistMiddleware<S extends Store<RootModel>, A extends Action>(cacheFn: (entries: [IDBValidKey, unknown][]) => Promise<void | null>, blacklist: string[]) {\n return (store: MiddlewareAPI<Dispatch, S>) => (next: Dispatch) => (action: A) => {\n if (dbCompareState == null) {\n dbCompareState = removeBlacklistedReducers(convertToObject(store.getState()), blacklist);\n }\n\n const res = next(action);\n\n requestIdleCallbackFn(\n () => {\n if (timerId != null) window.clearTimeout(timerId);\n timerId = window.setTimeout(() => {\n timerId = null;\n\n if (dbCompareState == null) return;\n const newState = convertToObject(store.getState());\n\n saveStateChanges(newState, blacklist, cacheFn, action.type);\n }, 100);\n },\n { timeout: 0 }\n );\n\n return res;\n };\n}\n\nasync function saveStateChanges(\n currentState: Record<string, unknown>,\n blacklist: string[],\n cacheFn: (entries: [IDBValidKey, unknown][]) => Promise<void | null>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n initiator: string\n) {\n if (dbCompareState == null) return;\n const compareState = dbCompareState;\n dbCompareState = null;\n const newState = removeBlacklistedReducers(currentState, blacklist);\n const reducersToUpdate = firstLoad ? newState : getReducersWithChanges(newState, compareState);\n firstLoad = false;\n\n const reducersToSave = convertToDbKeyValues(reducersToUpdate);\n if (reducersToSave.length == 0) return;\n\n await cacheFn(reducersToSave);\n\n // log.info({code: \"web-261121-1728\", `saved reducers in idb`, [\n // { key: \"initiated by\", value: initiator },\n // { key: \"reducers updated\", value: reducersToSave }\n // ]);\n}\n\nfunction convertToObjectFromState(): Record<string, unknown> {\n const state: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(store.getState())) {\n state[key] = value;\n }\n return state;\n}\nfunction convertToObject<S extends Store<RootModel>>(state: S): Record<string, unknown> {\n const reducers: Record<string, unknown> = {};\n\n for (const reducerKey in state) {\n reducers[reducerKey] = state[reducerKey];\n }\n return reducers;\n}\n\nfunction convertToDbKeyValues(state: Record<string, unknown>): [IDBValidKey, unknown][] {\n const reducers: [IDBValidKey, unknown][] = [];\n for (const reducerKey in state) {\n const item: [IDBValidKey, unknown] = [reducerKey as IDBValidKey, state[reducerKey]];\n\n reducers.push(item);\n }\n return reducers;\n}\n\nfunction removeBlacklistedReducers(state: Record<string, unknown>, blacklist: string[]): Record<string, unknown> {\n const reducers: Record<string, unknown> = {};\n\n for (const reducerKey in state) {\n const isBlacklisted = blacklist.indexOf(reducerKey) !== -1;\n\n if (!isBlacklisted) {\n reducers[reducerKey] = state[reducerKey];\n }\n }\n\n return reducers;\n}\n\nfunction getReducersWithChanges(state: Record<string, unknown>, compareState: Record<string, unknown>): Record<string, unknown> {\n const reducers: Record<string, unknown> = {};\n for (const reducerKey in state) {\n const isReducerEqual = equal(compareState[reducerKey], state[reducerKey]);\n if (!isReducerEqual) {\n reducers[reducerKey] = state[reducerKey];\n }\n }\n return reducers;\n}\n","export const animations = {\n durationStandard: 100,\n durationLong: 600,\n timingStandard: \"ease\",\n toastDurationShort: 3000,\n toastDurationLong: 4000,\n spinnerPageLoad: 200,\n animateQueue: false\n};\n","export const api = {\n graphqlMaxItemsFetchFallback: 10000,\n graphqlMaxPlayItemsFetch: 500,\n mixRadioCountFetch: 20,\n mixRadioMinFetch: 3\n};\n","export const assetPaths = {\n iconSprites: \"/assets/icon_sprite.svg\",\n logoLight: \"/assets/logo_light.svg\",\n logoDark: \"/assets/logo_dark.svg\",\n coverPlaceholderDark: \"/assets/placeholder_dark.svg\",\n coverPlaceholderLight: \"/assets/placeholder_light.svg\",\n appStore: \"/assets/app-store.svg\",\n googlePlay: \"/assets/google-play.svg\"\n};\n","export const catalog = {\n playlistTitleMaxLength: 100\n};\n","export const fbaseConfig = {\n MaxTraceValueLength: 100\n};\n","export const locale = \"da\";\n","export * from \"./animations\";\nexport * from \"./api\";\nexport * from \"./assets\";\nexport * from \"./fbase\";\nexport * from \"./globalization\";\nexport * from \"./mpanel\";\nexport * from \"./player\";\nexport * from \"./search\";\nexport * from \"./sessionStorage\";\nexport * from \"./sidebar\";\nexport * from \"./testLocator\";\n","export const liveRadioConstant = {\n recentlyPlayedTracksPollInterval: 10000,\n coverSize: 480\n};\n","export const mpanelConfigDevelopment = {\n apiKey: \"f4827103766d490eafa5b9f8bbe3caaf\"\n};\n\nexport const mpanelConfigProduction = {\n apiKey: \"8f08b02d8cc1764dd701b05dba894ae4\"\n};\n","export const pageContent = {\n artistPopularTracksShowAllPageItemsLimit: 2000,\n artistRadioPageItemsLimit: 50,\n resourceHighlightCap: 100,\n searchAlbumPageItemsLimit: 1000,\n searchArtistPageItemsLimit: 1000,\n searchHistoryItemLength: 15,\n searchPlaylistPageItemsLimit: 1000,\n searchTracksPageItemsLimit: 1000,\n trackRadioPageItemsLimit: 50\n};\n","import { api } from \"./api\";\n\nexport const pagination = {\n paginationDefaultInit: 50,\n paginationDefaultMore: 50,\n paginationBufferHeight: 1,\n paginationOn: true,\n eagerLoadingTrackCount: 200\n};\n\nexport const getPaginationInit = (max?: number) => {\n let initCount = !pagination.paginationOn ? api.graphqlMaxItemsFetchFallback : pagination.paginationDefaultInit;\n if (max != null && max < initCount) initCount = max;\n\n return initCount;\n};\n","import { BrowserAudioItemPreloadSize } from \"models/app/player/output/browserAudio/BrowserAudioItemModel\";\n\nexport const playerConfig = {\n rewindLimit: 2,\n endlessPlayLength: 20,\n lastPositionUpdateIntervalMs: 100,\n playbackReportChunkUpdateIntervalMs: 1000,\n playerMultiSkipTimeoutMs: 600,\n hlsRetryTimeoutMs: 1000,\n smallPreloadDurationSec: 5,\n maxPreloadDuratioSec: 30 * 60,\n expectedHlsStreamValidSec: 30 * 60,\n chromecastQueueMaxCount: 100,\n chromecastQueueMaxLookbackCount: 19\n};\n\nexport const preloadOrderConfig = [\n { index: 0, order: 0, size: BrowserAudioItemPreloadSize.Full },\n //{ index: 1, order: 1, size: BrowserAudioItemPreloadSize.Full }\n];\n\nexport const playQueueShuffleCoefficients = {\n relativeWeightMax: 0.8,\n relativeWeightMin: 0.2\n};\n","export const search = {\n filterDebounceMs: 200,\n searchDebounceMs: 350,\n initialDelayBeforeSpinnerMs: 200,\n mainSearchPriorityMs: 2800,\n expirationMs: 60 * 60 * 1000,\n maxCriterionLength: 1024\n};\n","export const sessionStorageKeys = {\n lastPosition: \"lastPosition\"\n};\n","export const sidebarConfig = {\n playlistShortcutLimit: 50\n};\n","// locator names for Cypress. Format: {location}-{elementName}-{elementType}. Add on elements with data-cy attribute key. Use location \"global\" tf the locator has no specific location.\n\nimport type { SectionContextModel } from \"models/app/resourceContextModel\";\nimport { ContentType } from \"models/ModelType\";\n\nexport type TestLocatorValue = TestLocator | string;\n\nexport enum TestLocator {\n AccountMenuLoginButton = \"accountMenu-login-button\",\n AccountMenuLogoutButton = \"accountMenu-logout-button\",\n AccountMenuProfileButton = \"accountMenu-profile-button\",\n AccountMenuAddProfileButton = \"accountMenu-addprofile-button\",\n NavigationAlbumsButton = \"navigation-albums-button\",\n NavigationArtistsButton = \"navigation-artists-button\",\n NavigationHomeButton = \"navigation-home-button\",\n NavigationMyMusicButton = \"navigation-myMusic-button\",\n NavigationPlaylistButton = \"navigation-playlist-button\",\n NavigationPlaylistsButton = \"navigation-playlists-button\",\n NavigationRadioButton = \"navigation-radio-button\",\n NavigationSearchButton = \"navigation-search-button\",\n NavigationTracksButton = \"navigation-tracks-button\",\n PageHeaderAccountButton = \"pageHeader-account-button\",\n PageHeaderLoginButton = \"pageHeader-login-button\",\n PageHeaderNotificationFeedButton = \"pageHeader-notificationFeed-button\",\n PlayerChromecastButton = \"player-chromecast-button\",\n PlayerFavoriteButton = \"player-favorite-button\",\n PlayerMoreButton = \"player-more-button\",\n PlayerNextButton = \"player-next-button\",\n PlayerPlayPauseButton = \"player-playPause-button\",\n PlayerPreviousButton = \"player-previous-button\",\n PlayerQueueToggleButton = \"player-queueToggle-button\",\n PlayerLyricsToggleButton = \"player-lyricsToggle-button\",\n PlayerRepeatButton = \"player-repeat-button\",\n PlayerShuffleButton = \"player-shuffle-button\",\n PreviewMoreButton = \"preview-more-button\",\n PreviewPlayButton = \"preview-play-button\",\n ProductPageFavoriteButton = \"productPage-favorite-button\",\n ProductPageMoreButton = \"productPage-more-button\",\n ProductPagePlayButton = \"productPage-play-button\",\n ProductPageShufflePlayButton = \"productPage-shufflePlay-button\",\n QueueClearButton = \"queue-clear-button\",\n QueueHistoryButton = \"queue-history-button\",\n QueueSaveButton = \"queue-save-button\",\n ResourceSectionBackwardButton = \"resourceSection-backward-button\",\n ResourceSectionForwardButton = \"resourceSection-forward-button\",\n ResourceSectionShowAllButton = \"resourceSection-showAll-button\",\n SearchClearHistory = \"search-clearHistory-button\"\n}\n\nexport const CoverTestLocator = (type: ContentType | null) => `global-${type}-cover`;\nexport const PreviewRowTestLocator = (type: ContentType | null) => `global-${type}-previewRow`;\nexport const PreviewSingleTestLocator = (type: ContentType | null) => `global-${type}-previewSingle`;\nexport const PreviewSquareTestLocator = (type: ContentType | null) => `global-${type}-previewSquare`;\nexport const ResourceLinkGroupTestLocator = (name: number) => `global-${name}-resourceLinkGroup`;\nexport const ResourceLinkTestLocator = (name: number) => `global-${name}-resourceLink`;\nexport const ResourceSectionTestLocator = (model: SectionContextModel) => {\n const type = model.type === ContentType.LayoutItem && model.resource?.contentType === ContentType.LayoutItem\n ? `LayoutItem-${model.resource?.domainItemType}`\n : model.type;\n return `global-${type}-resourceSection`\n};\nexport const EndlessPlaySwitchTestLocator = (on: boolean) => `queue-endlessPlay-button${on ? \"On\" : \"Off\"}`;\n","\n\nexport * from \"./useMessageBus\";\n","import { useEffect } from \"preact/hooks\";\nimport type { Action } from \"global/actions\";\nimport { messageBus } from \"global/config/configureStore\";\nimport type { Message, MessageListener } from \"services/messagebus\";\n\nexport function useMessageBus<K extends Action[\"type\"]>(message: K, listener: (payload: Extract<Action, { type: K }>) => void): void;\nexport function useMessageBus<T extends Message>(message: string, listener: (message: T) => void): void;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useMessageBus(message: any, listener: any): void {\n useEffect(() => {\n return messageBus.subscribeEvery(message, listener as MessageListener);\n }, [message, listener]);\n}\n\nexport function useMessageBusOne<K extends Action[\"type\"]>(message: K, listener: (payload: Extract<Action, { type: K }>) => void): void;\nexport function useMessageBusOne<T extends Message>(message: string, listener: (message: T) => void): void;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useMessageBusOne(message: any, listener: any): void {\n useEffect(() => {\n return messageBus.subscribeOne(message, listener as MessageListener);\n }, [message, listener]);\n}\n\nexport function useMessageBusAll(listener: (message: Action) => void): void;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useMessageBusAll(listener: any): void {\n useEffect(() => {\n return messageBus.subscribeAll(listener as MessageListener);\n }, [listener]);\n}\n","import type { Dispatch as ReduxDispatch } from \"redux\";\nimport type { Action } from \"global/actions\";\nimport { messageBus, store } from \"global/config/configureStore\";\n\nexport { store, messageBus } from \"./config/configureStore\";\n\n// eslint-disable-next-line prefer-const\nexport let dispatch = async (action: Action) => {\n if (!store) {\n console.error(\"store not ready\", action);\n return;\n }\n\n messageBus.setStoreSync();\n store.dispatch(action);\n await messageBus.sync();\n};\nexport type Dispatch = ReduxDispatch<Action>;\n\nexport function waitForState(evaluate: (reduxStore: typeof store) => boolean): Promise<void> {\n return new Promise<void>((resolve) => {\n if (evaluate(store)) {\n resolve();\n } else {\n const unsubscribe = store.subscribe(() => {\n if (evaluate(store)) {\n unsubscribe();\n resolve();\n }\n });\n }\n });\n}\n","import type { Action } from \"../actions\";\nimport { getCurrentAppVersion } from \"shared/services/appSettings\";\nimport { UPDATE_APP_VERSION, REHYDRATE } from \"global/actions\";\nimport { getNewInstallationId } from \"services/app/appService\";\nimport type { AppModel } from \"models/app/AppModel\";\n\nconst initialState: AppModel = {\n version: getCurrentAppVersion(),\n installationId: getNewInstallationId(),\n dbVersion: 1\n};\n\nexport function appReducer(state: AppModel = initialState, action: Action): AppModel {\n switch (action.type) {\n case UPDATE_APP_VERSION:\n return { ...state, version: action.payload.version };\n case REHYDRATE: {\n const app = action.payload?.app;\n\n let result: AppModel;\n if (app == null) result = initialState;\n else if (app.dbVersion == undefined) result = { ...state, dbVersion: initialState.dbVersion };\n else result = app;\n\n // let us specify the it as part of the querystring, to facilitate CIAM testing\n const params = new URLSearchParams(window.location.search);\n const newXClientId = params.get(\"x-client-id\");\n if (newXClientId) {\n result.installationId = newXClientId;\n }\n\n return result;\n }\n default:\n return state;\n }\n}\n","import type { Action} from \"../actions\";\nimport { AUDIO_OUTPUT_AUDIO_DURATION_CHANGE ,\n AUDIO_INPUT_AUDIO_SRC_CHANGE,\n PLAYQUEUE_CLEAR,\n AUDIO_INPUT_AUDIOS_CHANGE,\n AUDIO_INPUT_AUDIO_PLAY_CHANGE,\n AUDIO_OUTPUT_AUDIO_FAILED,\n REHYDRATE\n} from \"../actions\";\nimport { tryUpdateArray } from \"services/arrayHelper\";\nimport { updateNormalizedAnalyticsQueueAdded } from \"services/normalizeData\";\nimport { getNewCastItemId } from \"services/player/controllers/chromeCast/service/helpers\";\nimport { getLastPositionFromSessionStorage } from \"services/player/inputs/service/actions\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport type { AudioInputReducerModel } from \"models/app/player/input\";\n\nconst initialState: AudioInputReducerModel = {\n audios: [],\n analytics2: {},\n version: 1\n};\n\nexport function audioInputReducer(state: AudioInputReducerModel = initialState, action: Action): AudioInputReducerModel {\n switch (action.type) {\n case AUDIO_OUTPUT_AUDIO_FAILED: {\n const { audio } = action.payload;\n\n audio.errorCount++;\n audio.url2 = null;\n\n const audios = tryUpdateArray(\n state.audios,\n (item) => item.audioId === audio.audioId,\n () => audio,\n \"web-210916-1317\"\n );\n return { ...state, audios };\n }\n case AUDIO_INPUT_AUDIO_PLAY_CHANGE: {\n const { audio } = action.payload;\n\n const audios = tryUpdateArray(\n state.audios,\n (item) => item.audioId === audio.audioId,\n () => audio,\n \"web-210715-1155\"\n );\n return { ...state, audios };\n }\n case AUDIO_OUTPUT_AUDIO_DURATION_CHANGE: {\n const { audioId, duration } = action.payload;\n\n const audios = tryUpdateArray(\n state.audios,\n (item) => item.audioId === audioId,\n (item) => ({ ...item, duration }),\n \"web-210715-1157\"\n );\n\n return { ...state, audios };\n }\n case AUDIO_INPUT_AUDIO_SRC_CHANGE: {\n const { audio } = action.payload;\n\n const audios = tryUpdateArray(\n state.audios,\n (item) => item.audioId === audio.audioId,\n () => audio,\n \"web-210715-1157\"\n );\n\n return { ...state, audios };\n }\n case AUDIO_INPUT_AUDIOS_CHANGE: {\n const { audios, queueAddData: queueAdded } = action.payload;\n const analytics2 = updateNormalizedAnalyticsQueueAdded(audios, state.analytics2, queueAdded);\n return { ...state, audios, analytics2 };\n }\n case PLAYQUEUE_CLEAR: {\n return { ...state, analytics2: {} };\n }\n case REHYDRATE: {\n let newState = action.payload?.audioInput;\n if (!newState) return initialState;\n if (newState.version === undefined) return initialState;\n if (!newState.analytics2) newState.analytics2 = {};\n newState = pauseAndRecoverPositionOnPageLoad(newState);\n newState = resetErrorCountOnPageLoad(newState);\n newState.audios.forEach((audio) => {\n if (audio.chromecastId == null) audio.chromecastId = getNewCastItemId();\n });\n\n return newState;\n }\n default:\n return state;\n }\n}\n\n// todo move this logic to player service\nfunction pauseAndRecoverPositionOnPageLoad(state: AudioInputReducerModel) {\n if (state.audios.length === 0) return state;\n const lastPosition = getLastPositionFromSessionStorage();\n //todo: haci - should this happen when resuming cc session\n const audios = tryUpdateArray(\n state.audios,\n (item) => item.playState === PlayState.Buffering || item.playState === PlayState.Playing,\n (item) => {\n const newItem = { ...item, playState: PlayState.Paused };\n if (newItem.input === AudioInputType.PlayQueue) {\n let pausePosition = newItem.position.pausePosition;\n if (pausePosition == null) {\n pausePosition = lastPosition?.audioId === item.audioId ? lastPosition.pausePosition : 0;\n }\n newItem.position = {\n pausePosition\n };\n }\n return newItem;\n },\n \"web-210715-1159\"\n );\n return { ...state, audios };\n}\n\nfunction resetErrorCountOnPageLoad(state: AudioInputReducerModel) {\n const audios = state.audios.map((audio) => ({ ...audio, errorCount: 0 }));\n return { ...state, audios };\n}\n","import type { Action } from \"global/actions\";\nimport { REHYDRATE, UPDATE_CACHED_PLAYLISTS } from \"global/actions\";\nimport type { CacheModel } from \"models/app\";\n\nconst initialState: CacheModel = {\n userPlaylistPreviews: null,\n version: 1\n};\n\nexport function cacheReducer(state: CacheModel = initialState, action: Action): CacheModel {\n switch (action.type) {\n case UPDATE_CACHED_PLAYLISTS: {\n return { ...state, userPlaylistPreviews: action.payload.playlists };\n }\n case REHYDRATE: {\n const cache = action.payload?.cache ?? null;\n if (cache == null) return initialState;\n if (cache.version === undefined) return initialState;\n return cache;\n }\n }\n return state;\n}\n","import type { Action } from \"../actions\";\nimport { REHYDRATE, CAST_SET_AVAILABLE } from \"global/actions\";\nimport type { CastModel } from \"models/app\";\n\nconst initialState: CastModel = {\n isAvailable: false,\n};\n\nexport function castReducer(state: CastModel = initialState, action: Action): CastModel {\n switch (action.type) {\n case CAST_SET_AVAILABLE: {\n const { isAvailable } = action.payload;\n return { ...state, isAvailable };\n }\n case REHYDRATE: {\n const cast = action.payload?.cast ?? null;\n if (cast == null) return initialState;\n return { ...cast, isAvailable: false };\n }\n default:\n return state;\n }\n}\n","import type { Action } from \"../actions\";\nimport {\n CONTEXT_MENU_CLOSE_ALL,\n CONTEXT_MENU_OPEN,\n CONTEXT_MENU_CLOSE,\n CONTEXT_MENU_UPDATE_POSITION,\n CONTEXT_MENU_HOVER,\n CONTEXT_MENU_SET_VISIBLE,\n NAVIGATION_NAVIGATED\n} from \"global/actions\";\nimport { OpenMenuResultAction } from \"services/contextMenus/open\";\nimport { closeAllContextMenus, openContextMenu, closeContextMenuSheet, onNavigated } from \"services/contextMenus/reducers\";\nimport { hoverContextMenuItem } from \"services/contextMenus/reducers/hoverContextMenuItem\";\nimport { setVisibleContextMenu } from \"services/contextMenus/reducers/setVisibleContextMenu\";\nimport { updateContextMenuPosition } from \"services/contextMenus/reducers/updateContextMenuPosition\";\nimport type { AppContextMenuModel } from \"models/view/contextMenu\";\n\nconst initialState: AppContextMenuModel = { open: null, visible: [], hovers: [], closeOnNavigation: true };\n\nexport const contextMenuReducer: (state: AppContextMenuModel | undefined, action: Action) => AppContextMenuModel = (state = initialState, action) => {\n switch (action.type) {\n case CONTEXT_MENU_OPEN:\n return openContextMenu(state, action.payload.sheet, action.payload.closeOnNavigation);\n case CONTEXT_MENU_CLOSE:\n return closeContextMenuSheet(state, action.payload.sheet, action.payload.result);\n case CONTEXT_MENU_CLOSE_ALL:\n return closeAllContextMenus(state, { action: OpenMenuResultAction.Cancel });\n case CONTEXT_MENU_UPDATE_POSITION:\n return updateContextMenuPosition(state, action.payload.item, action.payload.position);\n case CONTEXT_MENU_HOVER:\n return hoverContextMenuItem(state, action.payload.itemId, action.payload.on);\n case CONTEXT_MENU_SET_VISIBLE:\n return setVisibleContextMenu(state, action.payload.sheet, action.payload.visible);\n case NAVIGATION_NAVIGATED:\n return onNavigated(state);\n }\n return state;\n};\n","import type { Action } from \"../actions\";\nimport { ENABLE_LOGTYPE } from \"../actions\";\nimport { UPDATE_CONTROL_PANEL, REHYDRATE } from \"global/actions\";\nimport { arrayDifference } from \"services/arrayHelper\";\nimport { LogTag } from \"services/logger\";\nimport type { ControlPanelModel } from \"models/app\";\n\nconst initialState: ControlPanelModel = {\n enabledLogTypes: [LogTag.Info],\n enableAudioCachePool: false,\n enableAudioPreload: true,\n enableFeedbackResponse: true,\n enableNotificationFeed: true,\n enableNotificationFeedTestMode: false\n};\n\nexport function controlPanelReducer(state: ControlPanelModel = initialState, action: Action): ControlPanelModel {\n switch (action.type) {\n case UPDATE_CONTROL_PANEL: {\n const { controlPanel } = action.payload;\n return { ...state, ...controlPanel };\n }\n case ENABLE_LOGTYPE: {\n const { type, enable } = action.payload;\n const enabledLogTypes = enable ? [...state.enabledLogTypes, type] : state.enabledLogTypes.filter((item) => item !== type);\n\n return { ...state, enabledLogTypes };\n }\n case REHYDRATE: {\n const controlPanelState = action.payload?.controlPanel;\n if (!controlPanelState) return initialState;\n\n const cleanedControlPanelState = cleanHydrateState(initialState, controlPanelState);\n\n return {\n ...initialState,\n ...cleanedControlPanelState,\n enableAudioCachePool: false,\n enableAudioPreload: true,\n enableFeedbackResponse: true,\n enableNotificationFeed: true\n };\n }\n }\n return state;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst findKeysToDiscard = (keep: any, discard: any) => {\n const keysToKeep = Object.keys(keep);\n const keysToDiscard = Object.keys(discard);\n return arrayDifference(keysToKeep, keysToDiscard);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst cleanHydrateState = (initialState: any, rehydrateState: any) => {\n const diff = findKeysToDiscard(initialState, rehydrateState);\n diff.forEach((key) => delete rehydrateState[key]);\n return rehydrateState;\n};\n","export * from \"./audioInputReducer\";\nexport * from \"./castReducer\";\nexport * from \"./contextMenuReducer\";\nexport * from \"./controlPanelReducer\";\nexport * from \"./liveRadioReducer\";\nexport * from \"./notificationFeedReducer\";\nexport * from \"./notificationsReducer\";\nexport * from \"./playQueueReducer\";\nexport * from \"./playerReducer\";\nexport * from \"./rootReducer\";\nexport * from \"./uiReducer\";\n","import type { Action } from \"../actions\";\nimport { LIVERADIO_NOW_AND_RECENTLY_PLAYED_UPDATE, LIVERADIO_UPDATE, REHYDRATE } from \"global/actions\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { LiveRadioAudioInputModel } from \"models/app/player/input\";\nimport type { LiveRadioTrackPreviewModel, ConnectionModel } from \"models/domain\";\nimport { DomainModelType } from \"models/ModelType\";\n\nconst initialState: LiveRadioAudioInputModel = {\n type: AudioInputType.LiveRadio,\n currentRadio: null,\n currentRadioContext: null,\n currentRadioAnalytics: null,\n version: 1\n};\n\nexport function liveRadioReducer(state: LiveRadioAudioInputModel = initialState, action: Action): LiveRadioAudioInputModel {\n switch (action.type) {\n case LIVERADIO_NOW_AND_RECENTLY_PLAYED_UPDATE: {\n const { tracks } = action.payload;\n if (!state.currentRadio) return state;\n const stateCurrentRadio = { ...state.currentRadio };\n stateCurrentRadio.liveRadio = { ...stateCurrentRadio.liveRadio };\n if (tracks != null) {\n stateCurrentRadio.liveRadio.tracks = {\n nowPlaying: tracks?.nowPlaying ?? null,\n recentlyPlayedTracks: tracks?.recentlyPlayedTracks ?? null\n };\n\n return { ...state, currentRadio: stateCurrentRadio };\n }\n const currentLiveRadioTrack = stateCurrentRadio.liveRadio.tracks?.nowPlaying;\n const recentlyPlayedLiveRadioTracks = stateCurrentRadio.liveRadio.tracks?.recentlyPlayedTracks;\n if (currentLiveRadioTrack == null) return state;\n\n let recentlyPlayedTracks: ConnectionModel<LiveRadioTrackPreviewModel> | null = null;\n if (recentlyPlayedLiveRadioTracks != null) {\n const items = [currentLiveRadioTrack, ...recentlyPlayedLiveRadioTracks.items];\n recentlyPlayedTracks = { ...recentlyPlayedLiveRadioTracks, items };\n } else {\n recentlyPlayedTracks = {\n totalCount: stateCurrentRadio.trackCount,\n items: [currentLiveRadioTrack],\n type: DomainModelType.Preview,\n pageInfo: {\n endCursor: null,\n hasNextPage: false,\n endCursorIndex: null\n }\n };\n }\n stateCurrentRadio.liveRadio.tracks = {\n nowPlaying: null,\n recentlyPlayedTracks\n };\n return { ...state, currentRadio: stateCurrentRadio };\n }\n case LIVERADIO_UPDATE: {\n const { radio, radioContext, analytics } = action.payload;\n return { ...state, currentRadio: radio, currentRadioContext: radioContext, currentRadioAnalytics: analytics };\n }\n case REHYDRATE: {\n const liveRadio = action.payload?.liveRadio ?? null;\n if (liveRadio == null) return initialState;\n if (liveRadio.version === undefined) return initialState;\n return liveRadio;\n }\n default:\n return state;\n }\n}\n","import type { Action } from \"../actions\";\nimport { MODAL_OPEN, MODAL_CLOSE } from \"global/actions\";\nimport { AppModalModel } from \"models/view/AppModalModel\";\n\nconst initialState: AppModalModel = { open: null };\n\nexport const modalReducer: (state: AppModalModel | undefined, action: Action) => AppModalModel = (state = initialState, action) => {\n switch (action.type) {\n case MODAL_OPEN:\n return { ...state, open: action.payload.modal };\n case MODAL_CLOSE:\n return { ...state, open: null };\n }\n return state;\n};\n","import type { Action } from \"../actions\";\nimport {\n NOTIFICATION_FEED_SET_NOTIFICATIONS,\n NOTIFICATION_FEED_NOTIFICATIONS_SEEN,\n REHYDRATE,\n USER_LOGGED_IN\n} from \"../actions\";\nimport type { AppNotificationFeedModel } from \"models/app/AppNotificationFeedModel\";\n\nconst initialState: AppNotificationFeedModel = {\n notSeenCount: undefined,\n notifications: [],\n notificationState: undefined,\n version: 1\n};\n\nexport function notificationFeedReducer(state: AppNotificationFeedModel = initialState, action: Action): AppNotificationFeedModel {\n switch (action.type) {\n case USER_LOGGED_IN: {\n return action.payload.isNewUser\n ? { ...state, notSeenCount: undefined }\n : state;\n }\n case NOTIFICATION_FEED_SET_NOTIFICATIONS: {\n const { notSeenCount, notificationState, notifications } = action.payload;\n return {\n ...state,\n notSeenCount,\n notificationState: notificationState ?? state.notificationState,\n notifications: notifications ?? state.notifications\n };\n }\n case NOTIFICATION_FEED_NOTIFICATIONS_SEEN: {\n return { ...state, notSeenCount: 0 };\n }\n // case NOTIFICATION_FEED_NOTIFICATION_CONVERTED: {\n // const { feed, converted } = action.payload;\n\n // const feeds = tryUpdateArray(\n // state.feeds,\n // (n) => n.userId === feed.userId,\n // (n) => markNotificationsConverted(n, converted),\n // \"web-220504-2231\"\n // );\n\n // return { ...state, feeds };\n // }\n\n case REHYDRATE: {\n let newState = action.payload?.notificationFeed;\n if (!newState) return initialState;\n\n newState = updateFeedVersion(newState);\n return newState;\n }\n default:\n return state;\n }\n}\n\nfunction updateFeedVersion(appFeed: AppNotificationFeedModel): AppNotificationFeedModel {\n return appFeed.version !== undefined ? appFeed : initialState;\n}\n","import type { Action } from \"../actions\";\nimport { NOTIFICATION_MAINTENANCE_DATA_UPDATE } from \"../actions\";\nimport { NOTIFICATION_BANNER_TOGGLE, NOTIFICATION_PWA_INSTALL_MESSAGE_WAITING, NOTIFICATION_WELCOME_MESSAGE_SHOWN, REHYDRATE } from \"global/actions\";\nimport type { BannerWarning, NotificationsModel } from \"models/app\";\n\nconst initialState: NotificationsModel = {\n banners: [],\n welcomeMessageShown: false,\n pwaInstallMessageWaiting: false,\n maintenanceBannerData: null\n};\n\nexport function notificationsReducer(state: NotificationsModel = initialState, action: Action): NotificationsModel {\n switch (action.type) {\n case NOTIFICATION_BANNER_TOGGLE: {\n const { banners } = state;\n const { warning, show } = action.payload;\n\n let newBanners: BannerWarning[];\n const has = banners.indexOf(warning) !== -1;\n if (show == has) return state;\n\n if (show) newBanners = [...banners, warning];\n else newBanners = banners.filter((b) => b !== warning);\n\n return { ...state, banners: newBanners };\n }\n case NOTIFICATION_MAINTENANCE_DATA_UPDATE: {\n return { ...state, maintenanceBannerData: action.payload.data };\n }\n case NOTIFICATION_PWA_INSTALL_MESSAGE_WAITING:\n return { ...state, pwaInstallMessageWaiting: action.payload.waiting };\n case NOTIFICATION_WELCOME_MESSAGE_SHOWN:\n return { ...state, welcomeMessageShown: true };\n case REHYDRATE: {\n state = action.payload?.notifications ?? state;\n if (state.pwaInstallMessageWaiting == undefined) state = { ...state, pwaInstallMessageWaiting: false };\n if (state.welcomeMessageShown == undefined) state = { ...state, welcomeMessageShown: false };\n if (state.maintenanceBannerData == undefined) state = { ...state, maintenanceBannerData: null };\n return state;\n }\n default:\n return state;\n }\n}\n","import type { Action } from \"../actions\";\nimport {\n PLAYLIST_TRACK_REORDERED,\n PLAYQUEUE_PRIORITY_LANE_WARNING_TOGGLE,\n PLAYQUEUE_PLAY_TRACK,\n PLAYQUEUE_HISTORY_TOGGLE,\n LIVERADIO_SET_AND_PLAY,\n RECENT_TRACKS_ADD_ID,\n RECENT_TRACKS_UPDATE,\n PLAYQUEUE_ENDLESSPLAY_TOGGLE,\n PLAYQUEUE_ENDLESSPLAY_TRACK_ID_UPDATE,\n PLAYQUEUE_SET_AND_PLAY,\n PLAYQUEUE_UPDATE,\n PLAYQUEUE_UPDATE_MIXRADIO_SESSION,\n REHYDRATE,\n SET_DESKTOP_QUEUE_OPEN\n} from \"../actions\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { PlayQueueModel } from \"models/app/player/input\";\nimport { QueueMode } from \"models/app/player/input\";\nimport { ContentType } from \"models/ModelType\";\n\nconst initialState: PlayQueueModel = {\n type: AudioInputType.PlayQueue,\n playQueue: [],\n endlessPlay: [],\n isEndlessPlayOn: true,\n endlessPlayTrackId: null,\n context: null,\n trackParent: null,\n trackParents: [],\n mixRadioSession: null,\n mode: QueueMode.Default,\n firstQueueSession: true,\n recentTracksLastUpdated: 0,\n recentTrackIds: [],\n version: 1,\n historyOpen: false,\n priorityLaneWarning: true\n};\n\nexport function playQueueReducer(state: PlayQueueModel = initialState, action: Action): PlayQueueModel {\n switch (action.type) {\n case RECENT_TRACKS_ADD_ID: {\n const { id } = action.payload;\n\n const recentTrackIdsSet = new Set(state.recentTrackIds);\n recentTrackIdsSet.delete(id);\n recentTrackIdsSet.add(id);\n\n return { ...state, recentTrackIds: [...recentTrackIdsSet] };\n }\n case PLAYLIST_TRACK_REORDERED: {\n const { trackId, fromPosition, toPosition } = action.payload;\n const playQueue = state.playQueue.map((item) => {\n const isTrackEqual = item.track.id === trackId && item.track.position === fromPosition;\n if (isTrackEqual) {\n item.track = { ...item.track, position: toPosition };\n }\n return item;\n });\n return { ...state, playQueue };\n }\n case PLAYQUEUE_PRIORITY_LANE_WARNING_TOGGLE: {\n return { ...state, priorityLaneWarning: action.payload.on };\n }\n case RECENT_TRACKS_UPDATE: {\n const { recentTrackIds, lastUpdated } = action.payload;\n\n return { ...state, recentTracksLastUpdated: lastUpdated, recentTrackIds };\n }\n case PLAYQUEUE_SET_AND_PLAY: {\n const { playable } = action.payload;\n\n if (playable.contentType === ContentType.MixRadio) {\n return { ...state, mode: QueueMode.MixRadio };\n }\n return { ...state, mode: QueueMode.Default, mixRadioSession: null };\n }\n case LIVERADIO_SET_AND_PLAY: {\n return { ...state, mode: QueueMode.Default };\n }\n case SET_DESKTOP_QUEUE_OPEN: {\n const { autoOpen } = action.payload;\n if (!autoOpen) return { ...state, historyOpen: false };\n return { ...state, firstQueueSession: false, historyOpen: false };\n }\n case PLAYQUEUE_UPDATE: {\n const { playQueue, endlessPlay, trackParent, trackParents } = action.payload;\n return { ...state, playQueue, endlessPlay, trackParent, trackParents };\n }\n case PLAYQUEUE_PLAY_TRACK: {\n if (state.historyOpen) return state;\n return { ...state, historyOpen: false };\n }\n case PLAYQUEUE_HISTORY_TOGGLE: {\n return { ...state, historyOpen: !state.historyOpen };\n }\n case PLAYQUEUE_ENDLESSPLAY_TOGGLE: {\n return { ...state, isEndlessPlayOn: action.payload.on };\n }\n case PLAYQUEUE_ENDLESSPLAY_TRACK_ID_UPDATE: {\n const { trackId } = action.payload;\n return { ...state, endlessPlayTrackId: trackId };\n }\n case PLAYQUEUE_UPDATE_MIXRADIO_SESSION: {\n const { mixRadioSession } = action.payload;\n return { ...state, mixRadioSession };\n }\n case REHYDRATE: {\n const queue = action.payload?.queue ?? null;\n if (queue == null) return initialState;\n if (queue.version === undefined) {\n return {\n ...initialState,\n firstQueueSession: queue.firstQueueSession\n };\n }\n return { ...initialState, ...queue, historyOpen: false };\n }\n\n default:\n return state;\n }\n}\n","import type { Action } from \"../actions\";\nimport { PLAYER_PREVIOUS } from \"../actions\";\nimport {\n AUDIO_INPUT_TYPE_CHANGE,\n LIVERADIO_SET_AND_PLAY,\n PLAYER_REPEAT,\n PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE,\n PLAYER_SET_MUTE,\n PLAYER_SET_VOLUME,\n PLAYER_SHUFFLE,\n PLAYQUEUE_ENDLESSPLAY_TOGGLE,\n PLAYQUEUE_SET_AND_PLAY,\n REHYDRATE\n} from \"global/actions\";\nimport { getNextRepeatStatus, getNextShuffleState, getShuffleStateWhenSetAndPlay } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport type { PlayerModel } from \"models/app/player\";\nimport { AudioInputType, PlayerOutputType, AudioControllerType } from \"models/app/player\";\nimport { ContentType } from \"models/ModelType\";\nimport { RepeatStatus, ShuffleState } from \"models/view\";\n\nconst initialState: PlayerModel = {\n repeat: RepeatStatus.None,\n volume: 1,\n muted: false,\n shuffle: ShuffleState.Off,\n controller: AudioControllerType.Local,\n input: AudioInputType.PlayQueue,\n output: PlayerOutputType.Browser,\n restoreVolume: null,\n version: 1\n};\n\nexport function playerReducer(state: PlayerModel = initialState, action: Action): PlayerModel {\n switch (action.type) {\n case PLAYER_SET_VOLUME: {\n const { volume } = action.payload;\n return { ...state, volume };\n }\n case PLAYER_SET_MUTE: {\n const muted = action.payload?.mute ?? !state.muted;\n return { ...state, muted };\n }\n case PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE: {\n const { controller, output } = action.payload;\n\n let volume = state.volume;\n let restoreVolume = state.restoreVolume;\n\n if (output != state.output) {\n if (output !== PlayerOutputType.Browser) restoreVolume = volume;\n if (output === PlayerOutputType.Browser && restoreVolume != null) volume = restoreVolume;\n }\n\n return { ...state, controller, output, volume, restoreVolume };\n }\n case PLAYQUEUE_ENDLESSPLAY_TOGGLE: {\n if (action.payload.on) {\n return { ...state, repeat: RepeatStatus.None };\n }\n return state;\n }\n case PLAYER_PREVIOUS: {\n const repeat = state.repeat === RepeatStatus.One ? RepeatStatus.None : state.repeat;\n return { ...state, repeat };\n }\n case PLAYER_REPEAT: {\n const { repeat: _repeat } = action.payload;\n const newRepeat = _repeat ?? getNextRepeatStatus(state.repeat);\n return { ...state, repeat: newRepeat };\n }\n case AUDIO_INPUT_TYPE_CHANGE: {\n return { ...state, input: action.payload.input };\n }\n case PLAYQUEUE_SET_AND_PLAY: {\n const { shuffle, playable } = action.payload;\n\n if (playable.contentType === ContentType.MixRadio) {\n return { ...state, shuffle: ShuffleState.Off, repeat: RepeatStatus.None };\n }\n\n const newShuffleState = getShuffleStateWhenSetAndPlay(state.shuffle, shuffle ?? null);\n const repeat = state.repeat === RepeatStatus.One ? RepeatStatus.None : state.repeat;\n\n return { ...state, shuffle: newShuffleState, repeat };\n }\n case LIVERADIO_SET_AND_PLAY: {\n return { ...state, shuffle: ShuffleState.Off, repeat: RepeatStatus.None };\n }\n case PLAYER_SHUFFLE: {\n const newShuffleState = getNextShuffleState(state.shuffle);\n return { ...state, shuffle: newShuffleState };\n }\n case REHYDRATE: {\n const player = action.payload?.player ?? null;\n if (player == null) return initialState;\n if (player.version === undefined) {\n return { ...initialState, repeat: player.repeat, volume: player.volume, muted: player.muted };\n }\n\n return {\n ...player,\n restoreVolume: player.restoreVolume ?? null\n };\n }\n default:\n return state;\n }\n}\n","import { combineReducers } from \"redux\";\nimport { appReducer } from \"./appReducer\";\nimport { audioInputReducer } from \"./audioInputReducer\";\nimport { cacheReducer } from \"./cacheReducer\";\nimport { castReducer } from \"./castReducer\";\nimport { contextMenuReducer } from \"./contextMenuReducer\";\nimport { controlPanelReducer } from \"./controlPanelReducer\";\nimport { liveRadioReducer } from \"./liveRadioReducer\";\nimport { modalReducer } from \"./modalReducer\";\nimport { notificationFeedReducer } from \"./notificationFeedReducer\";\nimport { notificationsReducer } from \"./notificationsReducer\";\nimport { playerReducer } from \"./playerReducer\";\nimport { playQueueReducer } from \"./playQueueReducer\";\nimport { uiReducer } from \"./uiReducer\";\nimport { userReducer } from \"./userReducer\";\nimport type { Action } from \"global/actions\";\nimport { CLEAR_APP_STATE } from \"global/actions\";\n\nconst _rootReducer = combineReducers({\n app: appReducer,\n audioInput: audioInputReducer,\n cache: cacheReducer,\n cast: castReducer,\n controlPanel: controlPanelReducer,\n liveRadio: liveRadioReducer,\n menu: contextMenuReducer,\n modal: modalReducer,\n notifications: notificationsReducer,\n notificationFeed: notificationFeedReducer,\n player: playerReducer,\n queue: playQueueReducer,\n ui: uiReducer,\n user: userReducer\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const rootReducer = (state: any, action: Action) => {\n if (action.type === CLEAR_APP_STATE) state = undefined;\n return _rootReducer(state, action);\n};\n","import type { Action } from \"global/actions\";\nimport {\n SET_BROWSER_LANGUAGE,\n SET_LOCALIZATION_SETTING,\n AUDIO_INPUT_SET_AND_PLAY,\n SET_MY_MUSIC_SORTING,\n SET_MAXIPLAYER_OPEN,\n SET_DESKTOP_QUEUE_OPEN,\n SET_THEME_SETTING,\n SET_USER_DRAGGING,\n REHYDRATE,\n SET_MY_PLAYLISTS_SELECTION,\n USER_LOGGED_OUT,\n SET_DESKTOP_LYRICS_VISIBLE,\n SET_MY_PLAYLIST_TRACKS_SORTING,\n NAVIGATION_NAVIGATED,\n SET_SOUNDQUALITY_SETTING\n} from \"global/actions\";\nimport { cloneWithDefaultValues } from \"services/utils\";\nimport { CombinedPlaylistsSorting, OwnPlaylistsSorting } from \"generated/graphql-types\";\nimport { AudioInputType } from \"models/app/player\";\nimport { SortOption } from \"models/app/SortOption\";\nimport type { UiModel } from \"models/app/UiModel\";\nimport { DesktopQueueOpen, MobileMaxiPlayerOpen } from \"models/app/UiModel\";\nimport { FavoriteAlbumsSorting, FavoriteArtistsSorting, FavoriteTracksSorting } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { Language, LanguageSetting, SoundQualitySetting } from \"models/view/Localization\";\nimport { ThemeSetting } from \"models/view/Theme\";\n\nconst initialState: UiModel = {\n albumsSorting: FavoriteAlbumsSorting.LatestAdded,\n artistsSorting: FavoriteArtistsSorting.LatestAdded,\n tracksSorting: FavoriteTracksSorting.LatestAdded,\n playlistsSorting: CombinedPlaylistsSorting.ModifiedDate,\n ownPlaylistTracksSorting: SortOption.UserDefined,\n ownPlaylistsSorting: OwnPlaylistsSorting.ModifiedDate,\n sidebarPlaylistsSorting: CombinedPlaylistsSorting.ModifiedDate,\n theme: ThemeSetting.Auto,\n localizationSetting: LanguageSetting.Danish,\n soundQualitySetting: SoundQualitySetting.Normal,\n browserLanguage: Language.Danish,\n layout: {\n mobileMaxiPlayerOpen: MobileMaxiPlayerOpen.Closed,\n desktopQueueOpen: DesktopQueueOpen.Default,\n lyricsOpen: false,\n lyricsId: undefined,\n lyricsTrackId: undefined,\n lyricsStart: undefined,\n },\n userDragging: false,\n userDraggingItem: null,\n version: 1\n};\n\nexport function uiReducer(state: UiModel = initialState, action: Action): UiModel {\n switch (action.type) {\n case SET_MY_MUSIC_SORTING:\n return {\n ...state,\n ...action.payload\n };\n case SET_MY_PLAYLIST_TRACKS_SORTING:\n return {\n ...state,\n ownPlaylistTracksSorting: action.payload.sorting\n }\n case SET_MY_PLAYLISTS_SELECTION:\n // action is ignored now; only exists to be available for analytics\n return state;\n case NAVIGATION_NAVIGATED:\n return { ...state, layout: { ...state.layout, lyricsOpen: false } };\n case SET_MAXIPLAYER_OPEN:\n return { ...state, layout: { ...state.layout, mobileMaxiPlayerOpen: action.payload.open } };\n case SET_DESKTOP_LYRICS_VISIBLE:\n return {\n ...state,\n layout: {\n ...state.layout,\n ...(action.payload.open\n ? {\n lyricsOpen: true,\n lyricsId: action.payload.lyricsId,\n lyricsTrackId: action.payload.trackId,\n lyricsStart: action.payload.startingPoint\n } : {\n lyricsOpen: false,\n lyricsId: undefined,\n lyricsTrackId: undefined,\n lyricsStart: undefined\n })\n }\n };\n case SET_DESKTOP_QUEUE_OPEN:\n return { ...state, layout: { ...state.layout, desktopQueueOpen: action.payload.open } };\n case SET_THEME_SETTING:\n return { ...state, theme: action.payload.theme };\n case SET_BROWSER_LANGUAGE:\n return { ...state, browserLanguage: action.payload.localization };\n case SET_LOCALIZATION_SETTING:\n return { ...state, localizationSetting: action.payload.localizationSetting };\n case SET_SOUNDQUALITY_SETTING:\n return { ...state, soundQualitySetting: action.payload.soundQualitySetting };\n case SET_USER_DRAGGING: {\n const { item } = action.payload;\n return {\n ...state,\n userDragging: !!item,\n userDraggingItem: item\n };\n }\n case AUDIO_INPUT_SET_AND_PLAY: {\n const { playable } = action.payload;\n if (playable.contentType === ContentType.MixRadio) {\n return { ...state, layout: { ...state.layout, desktopQueueOpen: DesktopQueueOpen.Closed } };\n }\n return state;\n }\n case REHYDRATE: {\n const payload = action.payload;\n const ui = cloneWithDefaultValues(payload?.ui, initialState) as UiModel;\n if (ui.version === undefined) {\n return {\n ...initialState,\n theme: ui.theme,\n localizationSetting: ui.localizationSetting\n };\n }\n\n const playQueueLength = payload?.queue?.playQueue.length ?? 0;\n const isInputLiveRadio = payload?.player?.input === AudioInputType.LiveRadio;\n if (!isInputLiveRadio && playQueueLength === 0) {\n ui.layout.desktopQueueOpen = DesktopQueueOpen.Closed;\n }\n ui.layout.lyricsOpen = false;\n\n return ui;\n }\n case USER_LOGGED_OUT:\n return {\n ...state,\n albumsSorting: FavoriteAlbumsSorting.LatestAdded,\n artistsSorting: FavoriteArtistsSorting.LatestAdded,\n tracksSorting: FavoriteTracksSorting.LatestAdded,\n playlistsSorting: CombinedPlaylistsSorting.ModifiedDate,\n ownPlaylistsSorting: OwnPlaylistsSorting.ModifiedDate,\n ownPlaylistTracksSorting: SortOption.UserDefined,\n sidebarPlaylistsSorting: CombinedPlaylistsSorting.ModifiedDate,\n layout: {\n mobileMaxiPlayerOpen: MobileMaxiPlayerOpen.Closed,\n desktopQueueOpen: DesktopQueueOpen.Default,\n lyricsOpen: false,\n lyricsId: undefined,\n lyricsTrackId: undefined,\n lyricsStart: undefined\n }\n };\n default:\n return state;\n }\n}\n","import type { Action } from \"../actions\";\nimport { USER_CHANGED, USER_HAS_BAD_TOKENS, USER_PROFILES_CHANGED } from \"../actions\";\nimport { USER_LOGGED_IN, USER_LOGGED_OUT, USER_UPDATED_TOKENS, USER_LOGGING_OUT, USER_ADD_SEARCH_HISTORY, USER_CLEAR_SEARCH_HISTORY, REHYDRATE } from \"global/actions\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport { isResourceEqual } from \"services/resource\";\nimport { LoginState } from \"models/app/LoginState\";\nimport type { UserModel } from \"models/app/UserModel\";\n\nconst initialState: UserModel = {\n state: LoginState.Unknown,\n id: null,\n username: null,\n trackingId: null,\n hasBadToken: false,\n recentSearches: [],\n profiles: [],\n profileDefaultColors: null,\n profilesNumberLimit: 0\n};\n\nexport function userReducer(state: UserModel = initialState, action: Action): UserModel {\n switch (action.type) {\n case USER_ADD_SEARCH_HISTORY: {\n const newItem = action.payload.item;\n let recentSearches = state.recentSearches.filter((item) => !isResourceEqual(item, newItem));\n recentSearches.unshift(newItem);\n\n const max = pageContent.searchHistoryItemLength;\n if (recentSearches.length > max) recentSearches = recentSearches.slice(0, max);\n return {\n ...state,\n recentSearches\n };\n }\n case USER_CHANGED:\n case USER_CLEAR_SEARCH_HISTORY: {\n return {\n ...state,\n recentSearches: []\n };\n }\n case USER_LOGGING_OUT:\n return {\n ...state,\n state: LoginState.LoggingOut\n };\n case USER_LOGGED_OUT:\n return {\n ...initialState,\n state: LoginState.LoggedOut\n };\n case USER_LOGGED_IN: {\n return {\n ...state,\n id: action.payload.id,\n username: action.payload.username,\n trackingId: action.payload.trackingId,\n profiles: action.payload.profiles,\n profileDefaultColors: action.payload.profileDefaultColors,\n profilesNumberLimit: action.payload.profilesNumberLimit,\n state: LoginState.LoggedIn,\n recentSearches: action.payload.isNewUser ? [] : state.recentSearches\n };\n }\n case USER_PROFILES_CHANGED: {\n return {\n ...state,\n profiles: action.payload.profiles,\n profileDefaultColors: action.payload.profileDefaultColors,\n profilesNumberLimit: action.payload.profilesNumberLimit,\n };\n }\n case USER_HAS_BAD_TOKENS:\n return {\n ...state,\n hasBadToken: true,\n state: LoginState.TemporaryError\n };\n case USER_UPDATED_TOKENS:\n return {\n ...state,\n hasBadToken: false\n };\n case REHYDRATE: {\n const user = action.payload?.user ?? null;\n if (!user) return initialState;\n return {\n ...user,\n username: user.username ?? null,\n profiles: user.profiles ?? [],\n profileDefaultColors: user.profileDefaultColors ?? null,\n profilesNumberLimit: user.profilesNumberLimit ?? null,\n state: LoginState.Unknown,\n hasBadToken: false\n };\n }\n default:\n return state;\n }\n}\n","export enum ContentType {\n Album = \"Album\",\n AlbumArtistAlbums = \"AlbumArtistAlbums\",\n AlbumChart = \"AlbumChart\",\n AlbumRecommendation = \"AlbumRecommendation\",\n AlbumsLayoutItemContent = \"AlbumsLayoutItemContent\",\n Artist = \"Artist\",\n ArtistAlbums = \"ArtistAlbums\",\n ArtistAppearsOn = \"ArtistAppearsOn\",\n ArtistRadio = \"ArtistRadio\",\n ArtistSimilarArtists = \"ArtistSimilarArtists\",\n ArtistSingles = \"ArtistSingles\",\n ArtistTracks = \"ArtistTracks\",\n ArtistsLayoutItemContent = \"LayoutPageArtistsItem\",\n BannerLayoutItemContent = \"BannerLayoutItemContent\",\n Chart = \"Chart\",\n ChartsLayoutItemContent = \"ChartsLayoutItemContent\",\n EndlessPlay = \"EndlessPlay\",\n ExternalLink = \"ExternalLink\",\n FrontPage = \"FrontPage\",\n FrontPageShowAll = \"FrontPageShowAll\",\n Genre = \"Genre\",\n InstallPWA = \"InstallPWA\",\n LayoutItem = \"LayoutItem\",\n LayoutPage = \"LayoutPage\",\n LayoutPageGroupConnection = \"LayoutPageGroupConnection\",\n LayoutPageItemConnection = \"LayoutPageItemConnection\",\n LayoutSkeletonItem = \"LayoutPageItem\",\n LiveRadio = \"LiveRadio\",\n LiveRadioCategoriesLayoutItemContent = \"LiveRadioCategoriesLayoutItemContent\",\n LiveRadioCategory = \"LiveRadioCategory\",\n LiveRadioPlayable = \"LiveRadioPlayable\",\n LiveRadioStream = \"LiveRadioStream\",\n LiveRadioTrack = \"LiveRadioTrack\",\n LiveRadiosLayoutItemContent = \"LiveRadiosLayoutItemContent\",\n MixRadio = \"MixRadio\",\n MixRadioCategory = \"MixRadioCategory\",\n MixRadios = \"MixRadios\",\n MixRadiosLayoutItemContent = \"MixRadiosLayoutItemContent\",\n MixedContent = \"MixedContent\",\n MixedContentLayoutItemContent = \"MixedContentLayoutItemContent\",\n MixedContentTrack = \"MixedContentTrack\",\n MyMusicAlbums = \"MyMusicAlbums\",\n MyMusicArtists = \"MyMusicArtists\",\n MyMusicPlaylists = \"MyMusicPlaylists\",\n MyMusicTracks = \"MyMusicTracks\",\n NavBar = \"NavBar\",\n NotFound = \"NotFound\",\n Notification = \"Notification\",\n NotificationFeed = \"NotificationFeed\",\n PageLoadError = \"PageLoadError\",\n PlayableContext = \"PlayableContext\",\n Player = \"Player\",\n Playlist = \"Playlist\",\n PlaylistCategories = \"PlaylistCategories\",\n PlaylistCategoriesLayoutItemContent = \"PlaylistCategoriesLayoutItemContent\",\n PlaylistCategory = \"PlaylistCategory\",\n PlaylistRecommendation = \"PlaylistRecommendation\",\n PlaylistsLayoutItemContent = \"PlaylistsLayoutItemContent\",\n ProfilesPage = \"ProfilesPage\",\n Queue = \"Queue\",\n QueueTrack = \"QueueTrack\",\n Radio = \"Radio\",\n RadioPageShowAll = \"RadioPageShowAll\",\n Recommendation = \"Recommendation\",\n RecommendationsLayoutItemContent = \"RecommendationsLayoutItemContent\",\n ResourceContext = \"ResourceContext\",\n Search = \"Search\",\n SearchAlbumResults = \"SearchAlbumResults\",\n SearchArtistResults = \"SearchArtistResults\",\n SearchMixedResults = \"SearchMixedResults\",\n SearchPlaylistResults = \"SearchPlaylistResults\",\n SearchRecentResults = \"SearchRecentResults\",\n SearchResult = \"SearchResult\",\n SearchResultTrack = \"SearchResultTrack\",\n SearchResults = \"SearchResults\",\n SearchTrackResults = \"SearchTrackResults\",\n SettingsPage = \"SettingsPage\",\n SideBar = \"SideBar\",\n Skeleton = \"Skeleton\",\n ThemePageShowAll = \"ThemePageShowAll\",\n Track = \"Track\",\n TrackChart = \"TrackChart\",\n TrackPlayable = \"TrackPlayable\",\n TrackRadio = \"TrackRadio\",\n TrackRecommendation = \"TrackRecommendation\",\n TrackSelection = \"TrackSelection\",\n TrackWithContext = \"TrackWithContext\",\n TracksLayoutItem = \"TracksLayoutItem\",\n TracksLayoutItemContent = \"TracksLayoutItemContent\",\n UserHistory = \"UserHistory\",\n UserNavigateTrace = \"UserNavigateTrace\",\n UserPlayTrace = \"UserPlayTrace\",\n UserRecommendations = \"UserRecommendations\",\n YourMixesPage = \"YourMixesPage\",\n Lyrics = \"Lyrics\"\n}\n\nexport enum DomainModelType {\n Link = \"Link\",\n Page = \"Page\",\n Play = \"Play\",\n Preview = \"Preview\",\n Section = \"Section\"\n}\n","import type { QueueTrackModel } from \"./player/input\";\nimport type { PreviewContextModel } from \"./resourceContextModel\";\nimport { removePageSectionsFromPreviewContext } from \"./resourceContextModel\";\nimport { getDragTitle } from \"services/drag/dragService\";\nimport { isPlayable, isDraggable } from \"services/playable\";\nimport type { PlayQueuePlayableModel, ResourcePreviewModel } from \"models/domain\";\n\nexport enum DragDropItemType {\n QueueTrack = \"queueTrack\",\n Playable = \"playable\"\n}\n\nexport type DraggableItemModel = DraggablePlayableModel;\n\nexport interface DragProps {\n dragSourceId: string;\n}\n\nexport interface DropProps {\n onDrop?: (item: DraggableItemModel) => void;\n dragSourceId: string;\n}\n\nexport interface DraggablePlayableModel {\n playable: PlayQueuePlayableModel | QueueTrackModel;\n dragSourceId: string;\n title: string;\n context: PreviewContextModel;\n}\n\nexport const createDraggablePlayableModel = (\n resource: ResourcePreviewModel | QueueTrackModel | null,\n dragSourceId: string,\n context: PreviewContextModel\n): DraggableItemModel | null => {\n context = removePageSectionsFromPreviewContext(context);\n if (resource != null && isPlayable(resource) && isDraggable(resource)) {\n return {\n playable: resource,\n dragSourceId,\n title: getDragTitle(resource),\n context\n };\n }\n return null;\n};\n","export enum LoginState {\n LoggedIn = \"loggedin\",\n LoggingOut = \"loggingout\",\n LoggedOut = \"loggedout\",\n Unknown = \"unknown\",\n TemporaryError = \"temporaryerror\"\n}","import type { MaintenanceData } from \"services/remoteConfig\";\n\nexport enum BannerWarning {\n NoConnection = \"NoConnection\",\n MaintenanceBanner = \"MaintenanceBanner\",\n SentryCutoff = \"SentryCutoff\"\n}\n\nexport interface NotificationsModel {\n banners: BannerWarning[];\n welcomeMessageShown: boolean;\n pwaInstallMessageWaiting: boolean;\n maintenanceBannerData: MaintenanceData | null;\n}\n","export enum SortOption\n{\n Name = \"Name\",\n ReleaseDate = \"ReleaseDate\",\n Popularity = \"Popularity\",\n UserDefined = \"UserDefined\",\n ArtistName = \"ArtistName\",\n LatestAdded = \"LatestAdded\"\n}\n\nexport interface SortOptionsModel\n{\n options: SortOption[];\n selected: SortOption;\n onChange: (option: SortOption) => void;\n}\n\n","import { LoginState } from \"./LoginState\";\nimport { DefaultLogMessage, log } from \"../../services/logger/initLoggerService\";\nimport { dispatch, store } from \"global\";\nimport { TRACING_NEW_TRACE } from \"global/actions/actions\";\nimport { ContentType } from \"models/ModelType\";\n\nexport type TraceModel = UserPlayTraceModel;\n\nexport type UserPlayTraceModel = { type: ContentType.UserPlayTrace } & UserPlayTrace;\nexport type UserNavigateTraceModel = { type: ContentType.UserNavigateTrace } & UserNavigateTrace;\n\n//TODO: maybe rename/change later\nexport enum TraceName {\n ClickToSound = \"ClickToSound\"\n}\nexport type UserPlayTraceError = \"NoPlaybackError\" | \"StreamUrlError\" | \"TimeoutError\" | \"LoadTrackStreamError\";\n// TODO rename clickOnType\ntype PlayUserTraceAttribute =\n | { type: \"isLoggedIn\"; value: boolean }\n | { type: \"title_trackId\"; value: string }\n | { type: \"clickOnType\"; value: string }\n | { type: \"error\"; value: UserPlayTraceError };\ntype NavigationTraceAttribute = { type: \"isLoggedIn\"; value: boolean };\n\nenum TraceState {\n Initial,\n Started,\n Stopped\n}\ninterface Trace {\n name: TraceName;\n startCallbacks: (() => void)[];\n state: TraceState;\n stopCallbacks: (() => void)[];\n}\ninterface UserPlayTrace extends Trace {\n putAttributeCallbacks: ((attribute: PlayUserTraceAttribute) => void)[];\n}\ninterface UserNavigateTrace extends Trace {\n putAttributeCallbacks: ((attribute: NavigationTraceAttribute) => void)[];\n}\n\nexport function startPlayUserTrace(trace: TraceModel) {\n if (trace.state !== TraceState.Initial) {\n log.error({ code: \"web-210604-1433\", msg: DefaultLogMessage.UnexpectedValue });\n return;\n }\n trace.state = TraceState.Started;\n\n trace.startCallbacks.forEach((start) => start());\n}\nexport function stopPlayUserTrace(trace: TraceModel) {\n if (trace.state !== TraceState.Started) {\n log.error({ code: \"web-210604-1433\", msg: DefaultLogMessage.UnexpectedValue });\n return;\n }\n trace.state = TraceState.Stopped;\n trace.stopCallbacks.forEach((stop) => stop());\n}\nexport function putAttributePlayUserTrace(trace: UserPlayTraceModel, attribute: PlayUserTraceAttribute) {\n trace.putAttributeCallbacks.forEach((value) => value(attribute));\n}\n\nexport async function createAndStartUserPlayTraceModel(name: TraceName) {\n const trace: UserPlayTraceModel = {\n type: ContentType.UserPlayTrace,\n name,\n state: TraceState.Initial,\n startCallbacks: [],\n putAttributeCallbacks: [],\n stopCallbacks: []\n };\n await dispatch({ type: TRACING_NEW_TRACE, payload: { trace } });\n startPlayUserTrace(trace);\n const isLoggedIn = store.getState().user.state === LoginState.LoggedIn;\n putAttributePlayUserTrace(trace, { type: \"isLoggedIn\", value: isLoggedIn });\n return trace;\n}\n","import type { DraggablePlayableModel } from \"./DraggableItemModel\";\nimport type { SortOption } from \"./SortOption\";\nimport type { FavoriteAlbumsSorting, CombinedPlaylistsSorting, FavoriteTracksSorting, FavoriteArtistsSorting, OwnPlaylistsSorting, PlaylistTracksSorting } from \"generated/graphql-types\";\nimport type { ThemeSetting } from \"models/view\";\nimport type { LanguageSetting, Language, SoundQualitySetting } from \"models/view/Localization\";\n\nexport enum MobileMaxiPlayerOpen {\n Closed,\n Open\n}\n\nexport enum DesktopQueueOpen {\n Default,\n Open,\n Closed\n}\n\nexport interface UiModel {\n albumsSorting: FavoriteAlbumsSorting;\n artistsSorting: FavoriteArtistsSorting;\n tracksSorting: FavoriteTracksSorting;\n playlistsSorting: CombinedPlaylistsSorting;\n ownPlaylistsSorting: OwnPlaylistsSorting;\n ownPlaylistTracksSorting: SortOption;\n sidebarPlaylistsSorting: CombinedPlaylistsSorting;\n theme: ThemeSetting;\n localizationSetting: LanguageSetting;\n soundQualitySetting: SoundQualitySetting;\n browserLanguage: Language;\n layout: {\n desktopQueueOpen: DesktopQueueOpen;\n mobileMaxiPlayerOpen: MobileMaxiPlayerOpen;\n lyricsOpen: boolean;\n lyricsId: string | undefined,\n lyricsTrackId: string | undefined;\n lyricsStart: \"ContextMenu\" | \"MaxiPlayer\" | \"DesktopPlayer\" | undefined\n };\n userDragging: boolean;\n userDraggingItem: DraggablePlayableModel | null;\n version: 1 | null;\n}\n","export interface UserProfileModel {\n id: string;\n title: string;\n description: string | null;\n current: boolean;\n master: boolean;\n color: string;\n}\n\nexport function createUserProfileModel(input: { id: string, title: string, description?: string | null | undefined, current: boolean, master: boolean, color: string }): UserProfileModel {\n return ({\n id: input.id,\n title: input.title,\n description: input.description ?? null,\n current: input.current,\n master: input.master,\n color: input.color\n });\n}\n\n\n/*\nexport function getColorFromProfile(color: ProfileColor): string {\n switch (color) {\n case ProfileColor.Black:\n return \"#000000\";\n case ProfileColor.Blue:\n return \"#BCC7E6\";\n case ProfileColor.Green:\n return \"#83F180\";\n case ProfileColor.Orange:\n return \"#FFBBB6\";\n case ProfileColor.Red:\n return \"#FF0000\";\n case ProfileColor.White:\n return \"#D8D5CA\";\n }\n}\n*/","import type { QueryError } from \"services/backend/backendService\";\n\nexport interface PageLoadError {\n type: PageLoadErrorType;\n message: string | null;\n}\n\nexport enum ErrorPageType {\n ContentNotFoundErrorPage = \"ContentNotFoundPage\",\n NoConnectionErrorPage = \"NoConnectionErrorPage\",\n BackendDownErrorPage = \"BackendDownErrorPage\",\n DefaultErrorPage = \"DefaultErrorPage\"\n}\n\nexport enum PageLoadAppErrorType {\n UrlSchemaNotRecognizedError = \"UrlSchemaNotRecognizedError\"\n}\n\nexport type PageLoadErrorType = PageLoadAppErrorType | QueryError;\n","export * from \"./AppModel\";\nexport * from \"./AppNotificationFeedModel\";\nexport * from \"./CacheModel\";\nexport * from \"./CastModel\";\nexport * from \"./ControlPanelModel\";\nexport * from \"./DraggableItemModel\";\nexport * from \"./LoginState\";\nexport * from \"./NotificationsModel\";\nexport * from \"./RootModel\";\nexport * from \"./SortOption\";\nexport * from \"./TraceModel\";\nexport * from \"./UiModel\";\nexport * from \"./UserModel\";\nexport * from \"./UserProfileModel\";","import type { UserPlayTraceModel } from \"models/app\";\n\nexport interface AudioContextModel {\n action: AudioContextAction;\n trace: UserPlayTraceModel | null;\n}\n\n\nexport enum AudioContextAction {\n AppSessionEnded = \"AppSessionEnded\",\n AppStart = \"AppStart\",\n AudioHlsError = \"AudioHlsError\",\n AudioHtmlElementError = \"AudioHtmlElementError\",\n AudioLoadTrackStream = \"AudioLoadTrackStream\",\n AudioTrackStreamError = \"AudioTrackStreamError\",\n BrowserAudioEnded = \"BrowserAudioEnded\",\n BrowserAudioPause = \"BrowserAudioPause\",\n BrowserAudioPlayPrevented = \"BrowserAudioPlayPrevented\",\n BrowserAudioPlaying = \"BrowserAudioPlaying\",\n BrowserAudioSeeked = \"BrowserAudioSeeked\",\n BrowserAudioSeeking = \"BrowserAudioSeeking\",\n BrowserAudioWaiting = \"BrowserAudioWaiting\",\n ChromecastApiAvailable = \"ChromecastApiAvailable\",\n ChromecastCurrentTimeChange = \"ChromeCurrentTimeChange\",\n ChromecastLocalSync = \"ChromecastLocalSync\",\n ChromecastMediaLoadedChange = \"ChromecastMediaLoadedChange\",\n ChromecastNoSession = \"ChromecastNoSession\",\n ChromecastPlayerStateChange = \"ChromecastPlayerStateChange\",\n ChromecastResumeTimeoutOnPageLoad = \"ChromecastResumeTimeoutOnPageLoad\",\n ChromecastSessionResumed = \"ChromecastSessionResumed\",\n ChromecastSessionSessionEnded = \"ChromecastSessionSessionEnded\",\n ChromecastSessionSessionEnding = \"ChromecastSessionSessionEnding\",\n ChromecastSessionStartFailed = \"ChromecastSessionStartFailed\",\n ChromecastSessionStarted = \"ChromecastSessionStarted\",\n ConcurrencyLost = \"ConcurrencyLost\",\n ConcurrencyResume = \"ConcurrencyResume\",\n DeeplinkPlay = \"DeeplinkPlay\",\n EndlessPlayUpdate = \"EndlessPlayUpdate\",\n SkipOnFail = \"SkipOnFail\",\n Unknown = \"Unknown\",\n UserContextMenuAddToQueue = \"UserContextMenuAddToQueue\",\n UserEndChromeCast = \"UserEndChromeCast\",\n UserKeybordKeySpace = \"UserKeybordKeySpace\",\n UserLogIn = \"UserLogIn\",\n UserLogOut = \"UserLogOut\",\n UserMediaControlsNext = \"UserMediaControlsNext\",\n UserMediaControlsPause = \"UserMediaControlsPause\",\n UserMediaControlsPlay = \"UserMediaControlsPlay\",\n UserMediaControlsPrevious = \"UserMediaControlsPrevious\",\n UserPageSetAndPlay = \"UserPageSetAndPlay\",\n UserPlayQueueClear = \"UserPlayQueueClear\",\n UserPlayQueueRemove = \"UserPlayQueueRemove\",\n UserPlayerNext = \"UserPlayerNext\",\n UserPlayerPreviousOrRewind = \"UserPlayerPreviousOrRewind\",\n UserPlayerSeek = \"UserPlayerSeek\",\n UserPlayerShuffle = \"UserPlayerShuffle\",\n UserPlayerSwipeNext = \"UserPlayerSwipeNext\",\n UserPlayerSwipePrevious = \"UserPlayerSwipePrevious\",\n UserPlayerTogglePlay = \"UserPlayerTogglePlay\",\n UserPreviewDragDrop = \"UserPreviewDragDrop\",\n UserPreviewSetAndPlay = \"UserPreviewSetAndPlay\",\n UserPreviewTogglePlay = \"UserPreviewTogglePlay\",\n}\n","export enum PlayState {\n Stopped = \"stopped\",\n Buffering = \"buffering\",\n Playing = \"playing\",\n Paused = \"paused\",\n Error = \"error\"\n}\n","import type { RepeatStatus } from \"models/view/RepeatStatus\";\nimport type { ShuffleState } from \"models/view/ShuffleState\";\n\nexport enum AudioControllerType {\n Local,\n Chromecast\n}\n\nexport enum AudioInputType {\n PlayQueue,\n LiveRadio\n}\n\nexport enum PlayerOutputType {\n Browser,\n Chromecast\n}\n\nexport interface PlayerModel {\n controller: AudioControllerType;\n input: AudioInputType;\n output: PlayerOutputType;\n repeat: RepeatStatus;\n volume: number;\n restoreVolume: number | null;\n shuffle: ShuffleState;\n muted: boolean;\n version: 1 | null;\n}\n","export * from \"./PlayState\";\nexport * from \"./PlayerModel\";\nexport * from \"./PlayPositionModel\";\n","import type { QueueLane } from \".\";\nimport type { AnalyticsPlayableLoadProperties, AnalyticsPlayableProperties } from \"services/logger/analytics/properties/event\";\nimport type { PlayState, PlayPausePositionModel, AudioInputType } from \"models/app/player\";\n\nexport type AudioInputItemModel = AudioInputItemPlayQueueModel | AudioInputItemLiveRadioModel;\n\nexport enum StreamUrlType {\n Hls = \"Hls\",\n Mp3 = \"Mp3\"\n}\n\nexport interface StreamUrl {\n url: string;\n urlType: StreamUrlType;\n fetchedTime: number;\n}\nexport function createStreamUrl(url: string, urlType: StreamUrlType): StreamUrl {\n return {\n url,\n urlType,\n fetchedTime: new Date().getTime()\n };\n}\n\nexport function getMimeTypeFromStreamUrlType(type: StreamUrlType): string {\n switch (type) {\n case StreamUrlType.Hls:\n return \"audio/mp4\";\n case StreamUrlType.Mp3:\n return \"audio/mpeg\";\n }\n}\n\ninterface AudioInputItem {\n analytics2?: {\n playableData: AnalyticsPlayableProperties | null;\n loadData: AnalyticsPlayableLoadProperties | null;\n addedDataId: string | null;\n };\n audioId: string;\n chromecastId: number;\n errorCount: number;\n index: number;\n input: AudioInputType;\n logTitle: string;\n playState: PlayState;\n playbackContext: string | null;\n reportId: string;\n sendReport: boolean;\n url2: StreamUrl | null;\n}\n\nexport interface AudioInputItemPlayQueueModel extends AudioInputItem {\n duration: number;\n input: AudioInputType.PlayQueue;\n position: PlayPausePositionModel;\n previousQueueLane: QueueLane;\n queueId: string;\n queueLane: QueueLane;\n sample: boolean;\n trackId: string;\n}\nexport interface AudioInputItemLiveRadioModel extends AudioInputItem {\n input: AudioInputType.LiveRadio;\n radioId: string;\n}\n","export * from \"./AudioInputItemModel\";\nexport * from \"./AudioInputModel\";\nexport * from \"./AudioInputReducerModel\";\nexport * from \"./liveRadio/LiveRadioAudioInputModel\";\nexport * from \"./playQueue/PlayQueueModel\";\nexport * from \"./playQueue/QueueTrackModel\";\n","import type { QueueTrackModel } from \"./QueueTrackModel\";\nimport type { AudioInputType } from \"../..\";\nimport type { AnalyticsQueueIntentPropertiesGroup } from \"services/logger/analytics/properties/groups/queueIntentPropertiesGroup\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { TrackParentModel } from \"models/domain\";\nimport type { MixRadioPreviewModel } from \"models/domain/MixRadioModel\";\n\nexport enum QueueMode {\n Default = \"Default\",\n MixRadio = \"MixRadio\"\n}\n\nexport interface MixRadioSession {\n queueIntentData2?: AnalyticsQueueIntentPropertiesGroup;\n mixRadio: MixRadioPreviewModel;\n connection: {\n endCursor: string | null;\n hasNextPage: boolean;\n } | null;\n}\n\nexport interface PlayQueueModel {\n type: AudioInputType;\n playQueue: QueueTrackModel[];\n endlessPlay: QueueTrackModel[];\n isEndlessPlayOn: boolean;\n endlessPlayTrackId: string | null;\n context: PreviewContextModel | null;\n trackParent: TrackParentModel | null;\n trackParents: TrackParentModel[];\n mixRadioSession: MixRadioSession | null;\n mode: QueueMode;\n firstQueueSession: boolean;\n recentTracksLastUpdated: number;\n recentTrackIds: string[];\n version: 1 | null;\n historyOpen: boolean;\n priorityLaneWarning: boolean;\n}\n","import type { AnalyticsPlayableProperties } from \"services/logger/analytics/properties/event\";\nimport { getAnalyticsPlayableProperties } from \"services/logger/analytics/properties/event\";\nimport { getComparableId } from \"services/resource\";\nimport { getNextUUID } from \"services/utils\";\nimport type { PlayQueuePlayableModelInterface, TrackPlayableModel, TrackPreviewModel } from \"models/domain\";\nimport { getComparableTrackPlayableId } from \"models/domain\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\nexport enum QueueLane {\n Memory = \"memory\",\n Current = \"current\",\n Priority = \"priority\",\n Flow = \"flow\",\n Preview = \"preview\"\n}\n\nexport interface QueueTrackModel extends PlayQueuePlayableModelInterface {\n type: DomainModelType.Preview;\n compareableTrackId: string;\n contentType: ContentType.QueueTrack;\n lane: QueueLane;\n originalIndex: number | null;\n parentId: string;\n track: TrackPreviewModel;\n queueId: string;\n analytics2?: {\n playableData: AnalyticsPlayableProperties;\n addedDataId: string;\n };\n}\n\nexport const createQueueTrackModel = (track: TrackPlayableModel, lane: QueueLane, originalIndex: number | null, addedDataId: string): QueueTrackModel => {\n const playableData = getAnalyticsPlayableProperties(track);\n\n return {\n graphType: undefined,\n type: DomainModelType.Preview,\n analytics2: { playableData, addedDataId },\n queueId: getNextUUID(),\n compareableTrackId: getComparableTrackPlayableId(track.track, track.parent),\n contentType: ContentType.QueueTrack,\n lane,\n originalIndex,\n parentId: getComparableId(track.parent),\n track: track.track,\n cover: track.cover,\n trackCount: 1,\n id: track.id\n };\n};\n","import type Hls from \"hls.js\";\nimport type { HlsPreloadAudioModel } from \"..\";\nimport type { AudioInputType, PlayPausePositionModel, PlayState } from \"../..\";\nimport type { TraceModel } from \"models/app\";\nimport type { StreamUrl } from \"models/app/player/input\";\n\nexport enum BrowserAudioItemPreloadSize {\n Full = \"Full\",\n Small = \"Small\"\n}\n\nexport enum BrowserAudioLoadState {\n None = \"None\",\n LoadUrl = \"LoadUrl\",\n Buffering = \"Buffering\",\n PartialDone = \"PartialDone\",\n Done = \"Done\"\n}\n\nexport interface BrowserAudioItemPreload {\n hlsPreload: HlsPreloadAudioModel | null;\n index: number;\n order: number;\n size: BrowserAudioItemPreloadSize | null;\n}\n\nexport interface BrowserAudioItemModel {\n audioCacheId: string;\n audioId: string;\n canPlayThrough: boolean;\n disposed: boolean;\n element: HTMLAudioElement;\n hls: Hls | null;\n hlsRetryLock: boolean;\n input: AudioInputType;\n intendedPlayState: PlayState;\n isMediaSet: boolean;\n loadNow: boolean;\n logTitle: string;\n mediaChangeLock: boolean;\n playState: PlayState;\n playTrace: TraceModel | null;\n position: PlayPausePositionModel;\n preload: BrowserAudioItemPreload;\n removeListeners: () => void;\n state: BrowserAudioLoadState;\n url: StreamUrl | null;\n urlLock: boolean;\n}\n\n// export enum BrowserAudioPlayState {\n// Playing = \"playing\",\n// Paused = \"paused\",\n// Buffering = \"buffering\"\n// }\n","export interface HlsPreloadAudioModel {\n manifest: HlsPreloadManifestModel | null;\n lock: boolean;\n status: PreloadFetchResultStatus;\n fullyLoaded: boolean;\n}\n\nexport interface HlsPreloadManifestModel {\n chunks: HlsPreloadAudioChunkModel[];\n duration: number;\n encryption: HlsPreloadAudioEncryptionKeyModel;\n indexUrl: string;\n}\n\nexport interface HlsPreloadAudioEncryptionKeyModel {\n url: string;\n loaded: boolean;\n}\n\nexport interface HlsPreloadAudioChunkModel {\n url: string;\n position: number;\n duration: number;\n loaded: boolean;\n}\n\nexport interface PreloadFetchResult<T> {\n value?: T;\n status: PreloadFetchResultStatus;\n}\n\nexport enum PreloadFetchResultStatus {\n OK = \"OK\",\n NetworkError = \"NetworkError\",\n UnknownError = \"UnknownError\"\n}\n","export * from \"./AudioOutputModel\";\nexport * from \"./browserAudio/BrowserAudioItemModel\";\nexport * from \"./browserAudio/BrowserAudioModel\";\nexport * from \"./browserAudio/hls/HlsPreloadAudioModel\";\n","import type { LinkModel } from \"services/resource\";\nimport { getLink } from \"services/resource\";\nimport type { LocationContentType, PlayableModel, ResourceDisplayType, ResourceModel, ResourcePageModel, ResourcePreviewModel, ResourceSectionModel } from \"models/domain\";\nimport type { NavigationPageRootName } from \"models/view/navigationStack\";\n\nexport interface PageContextModel {\n resource: ResourcePageModel | null;\n root: NavigationPageRootName | null;\n type: LocationContentType;\n sections: SectionContextModel[];\n extraInfo?: ExtraInfoModel;\n pageType?: LocationContentType;\n}\n\nexport enum ErrorType {} //TODO: this ?\nexport enum ErrorPage {} //TODO: this ?\n\nexport enum ContentPlaylistType {\n Own = \"Own\",\n Follow = \"Follow\",\n Public = \"Public\"\n}\n\nexport type ExtraInfoModel = {\n contentPlaylistType?: ContentPlaylistType;\n errorPage?: {\n errorType: ErrorType;\n error: boolean;\n errorText?: string;\n errorPage: ErrorPage;\n };\n};\n\nexport interface SectionContextModel {\n page: PageContextModel | null;\n type: LocationContentType;\n resource: ContextResourceModel | null;\n rank: number | null;\n visibleRank: number | null;\n displayType: ResourceDisplayType | null;\n isHidden: boolean;\n id?: string;\n scrollId: string;\n}\n\nexport interface PreviewContextModel {\n section: SectionContextModel;\n type: LocationContentType;\n resource: ContextResourceModel | null;\n rank: number | null;\n}\n\nexport interface LinkContextModel extends LinkModel {\n preview?: PreviewContextModel;\n}\n\nexport type ContextResourceModel = ResourcePreviewModel | ResourceSectionModel | ResourcePageModel | PlayableModel;\n\nexport interface CreatePageContextParams {\n type: LocationContentType;\n resource: ResourcePageModel | null;\n root: NavigationPageRootName | null;\n extraInfo?: ExtraInfoModel;\n done: boolean;\n pageType?: LocationContentType;\n}\n\nexport function createPageContext({ type, pageType, resource: page, root, extraInfo }: CreatePageContextParams): PageContextModel {\n return { type, pageType, resource: page, root, sections: [], extraInfo };\n}\n\nexport function createSectionContext(\n type: LocationContentType,\n resource: ContextResourceModel | null,\n page: PageContextModel | null,\n rank: number | null,\n displayType: ResourceDisplayType | null,\n alternateScrollId?: string\n): SectionContextModel {\n const id = resource?.id ? `${type}_${resource?.id}` : undefined;\n return { type, resource, page, rank, visibleRank: null, displayType, isHidden: false, id, scrollId: alternateScrollId ?? type };\n}\n\nexport function createPreviewContext(type: LocationContentType, resource: ContextResourceModel | null, section: SectionContextModel, rank: number | null): PreviewContextModel {\n return { resource, type, section, rank };\n}\n\nexport function createLinkContext(type: LocationContentType, resource: ResourceModel | null, preview: PreviewContextModel): LinkContextModel {\n const link = getLink(type, resource);\n return { ...link, type, preview };\n}\n\nexport function removePageSectionsFromPreviewContext(preview: PreviewContextModel) {\n const newPreview = { ...preview };\n newPreview.section = { ...newPreview.section };\n\n const page = newPreview.section.page;\n if (page) {\n newPreview.section.page = { ...page, sections: [] };\n }\n return newPreview;\n}\n","export * from \"./ContextModel\";\n","import type { AlbumPreviewModel } from \"./AlbumModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createAlbumPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { ResourceModelInterface } from \"./ResourceModel\";\nimport type { AlbumArtistAlbumsSectionFragment, AlbumArtistAlbumsPageFragment } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\ntype AlbumArtistAlbumsSectionData = AlbumArtistAlbumsSectionFragment;\ntype AlbumArtistAlbumsPageData = AlbumArtistAlbumsPageFragment;\n\nexport type AlbumArtistAlbumsModel = AlbumArtistAlbumsSectionModel;\nexport type AlbumArtistAlbumsSectionModel = ({ type: DomainModelType.Section } & AlbumArtistAlbums) | AlbumArtistAlbumsPageModel;\nexport type AlbumArtistAlbumsPageModel = { type: DomainModelType.Page } & AlbumArtistAlbums;\n\ninterface AlbumArtistAlbums extends ResourceModelInterface {\n readonly artistName: string;\n readonly albums: ConnectionModel<AlbumPreviewModel> | null;\n readonly contentType: ContentType.AlbumArtistAlbums;\n}\n\nfunction createAlbumArtistAlbums(data: AlbumArtistAlbumsSectionData | AlbumArtistAlbumsPageData, removeSelf?: boolean): AlbumArtistAlbums {\n const albums = data.artist.albums ? createAlbumPreviewConnectionModel(data.artist.albums) : null;\n if (albums && removeSelf) {\n albums.items = albums.items.filter((item) => item.id !== data.id);\n }\n return {\n graphType: data.__typename,\n contentType: ContentType.AlbumArtistAlbums,\n id: data.id,\n cover: null,\n artistName: data.artist.title,\n albums\n };\n}\nexport function createAlbumArtistAlbumsSectionModel(data: AlbumArtistAlbumsSectionData, removeSelf: boolean): AlbumArtistAlbumsSectionModel {\n return {\n ...createAlbumArtistAlbums(data, removeSelf),\n type: DomainModelType.Section\n };\n}\n\nexport function createAlbumArtistAlbumsPageModel(data: AlbumArtistAlbumsPageData): AlbumArtistAlbumsPageModel {\n return {\n ...createAlbumArtistAlbums(data),\n type: DomainModelType.Page\n };\n}\n","import type { AlbumArtistAlbumsSectionModel } from \"./AlbumArtistAlbums\";\nimport { createAlbumArtistAlbumsSectionModel } from \"./AlbumArtistAlbums\";\nimport type { ArtistLinkModel } from \"./ArtistModel\";\nimport { createArtistLinkModel } from \"./ArtistModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createTrackNoAlbumPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { ResourceModelLinkInterface } from \"./ResourceModel\";\nimport type { TrackPreviewModel } from \"./TrackModel\";\nimport type {\n AlbumArtistAlbumsSectionFragment,\n AlbumLinkFragment,\n AlbumHeaderSectionFragment,\n AlbumTracksSectionFragment,\n AlbumPlayFragment,\n AlbumPreviewFragment\n} from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\nexport type AlbumModel = AlbumLinkModel;\nexport type AlbumLinkModel = ({ type: DomainModelType.Link } & AlbumLink) | AlbumPreviewModel;\nexport type AlbumPreviewModel = ({ type: DomainModelType.Preview } & AlbumPreview) | AlbumPlayModel;\nexport type AlbumPlayModel = ({ type: DomainModelType.Play } & AlbumPlay) | AlbumPageModel;\nexport type AlbumPageModel = { type: DomainModelType.Page } & AlbumPage;\n\ninterface AlbumLink extends ResourceModelLinkInterface {\n readonly contentType: ContentType.Album;\n readonly title: string;\n}\n\ninterface AlbumBase extends AlbumLink, PlayQueuePlayableModelInterface {\n readonly releaseDate: Date | null;\n readonly availableInSubscription: boolean;\n readonly sharingUrl: string | null;\n}\n\ninterface AlbumPreview extends AlbumBase {\n readonly artist: ArtistLinkModel | null;\n}\n\ninterface AlbumPlay extends AlbumPreview {\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n}\n\ninterface AlbumPage extends AlbumPlay {\n readonly artistAlbums: AlbumArtistAlbumsSectionModel | null;\n readonly duration: number | null;\n readonly label: {\n name: string | null;\n };\n}\n\nexport function createAlbumLinkModel(data: AlbumLinkFragment): AlbumLinkModel {\n return {\n type: DomainModelType.Link,\n contentType: ContentType.Album,\n id: data.id,\n title: data.title\n };\n}\n\nfunction createAlbum(data: AlbumPreviewFragment): AlbumBase {\n return {\n cover: data.cover ?? null,\n contentType: ContentType.Album,\n graphType: data.__typename,\n id: data.id,\n availableInSubscription: data.available,\n title: data.title,\n releaseDate: data.releaseDate ? new Date(Date.parse(data.releaseDate)) : null,\n trackCount: data.tracksCount,\n sharingUrl: data.share ?? null\n };\n}\n\nexport function createAlbumPreviewModel(data: AlbumPreviewFragment): AlbumPreviewModel {\n return {\n ...createAlbum(data),\n type: DomainModelType.Preview,\n artist: createArtistLinkModel(data.artist)\n };\n}\n\nexport function createAlbumPlayModel(data: AlbumPlayFragment): AlbumPlayModel {\n return {\n ...createAlbum(data),\n type: DomainModelType.Play,\n artist: createArtistLinkModel(data.artist),\n tracks: data.tracks ? createTrackNoAlbumPreviewConnectionModel(data.tracks, data.cover ?? null, data) : null\n };\n}\n\nexport function createEmptyAlbumPageModel(): AlbumPageModel {\n return {\n graphType: undefined,\n cover: null,\n id: \"\",\n availableInSubscription: true,\n title: \"\",\n releaseDate: null,\n trackCount: null,\n type: DomainModelType.Page,\n contentType: ContentType.Album,\n artist: null,\n tracks: null,\n artistAlbums: null,\n duration: null,\n label: { name: null },\n sharingUrl: null\n };\n}\n\nexport function fillAlbumPageModelWithBasicSection(model: AlbumPageModel, data: AlbumHeaderSectionFragment): AlbumPageModel {\n return {\n ...model,\n id: data.id,\n cover: data.cover ?? null,\n graphType: data.__typename,\n title: data.title ?? null,\n availableInSubscription: data.available,\n releaseDate: data.releaseDate ? new Date(Date.parse(data.releaseDate)) : null,\n trackCount: data.tracksCount,\n artist: createArtistLinkModel(data.artist),\n duration: data.duration,\n label: { name: data.label ?? null },\n sharingUrl: data.share ?? null\n };\n}\n\nexport function fillAlbumPageModelWithTracksSection(model: AlbumPageModel, data: AlbumTracksSectionFragment): AlbumPageModel {\n return {\n ...model,\n tracks: data.tracks ? createTrackNoAlbumPreviewConnectionModel(data.tracks, model.cover, { id: model.id, title: model.title }) : null\n };\n}\n\nexport function fillAlbumPageModelWithAlbumArtistAlbumsSectionData(model: AlbumPageModel, data: AlbumArtistAlbumsSectionFragment): AlbumPageModel {\n return {\n ...model,\n artistAlbums: data.artist.albums ? createAlbumArtistAlbumsSectionModel(data, true) : null\n };\n}\n","import type { AlbumPreviewModel } from \"./AlbumModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createAlbumPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { Recommendation, RecommendationOwner } from \"./RecommendationModel\";\nimport { createRecommendations } from \"./RecommendationModel\";\nimport type { RecommendationPreviewFragment_AlbumsRecommendation, RecommendationPageFragment_AlbumsRecommendation } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype AlbumRecommendationPreviewData = RecommendationPreviewFragment_AlbumsRecommendation;\ntype AlbumRecommendationPageData = RecommendationPageFragment_AlbumsRecommendation;\n\nexport type AlbumRecommendationModel = AlbumRecommendationPreviewModel;\nexport type AlbumRecommendationPreviewModel = ({ type: DomainModelType.Preview } & AlbumRecommendation) | AlbumRecommendationPageModel;\nexport type AlbumRecommendationPageModel = { type: DomainModelType.Page } & AlbumRecommendationPage;\n\ninterface AlbumRecommendation extends Recommendation {\n contentType: ContentType.AlbumRecommendation;\n}\ninterface AlbumRecommendationPage extends AlbumRecommendation {\n albums: ConnectionModel<AlbumPreviewModel> | null;\n}\n\nfunction createAlbumRecommendations(data: AlbumRecommendationPreviewData, owner: RecommendationOwner): AlbumRecommendation {\n return {\n ...createRecommendations(data, owner),\n contentType: ContentType.AlbumRecommendation\n };\n}\nexport function createAlbumRecommendationsPreviewModel(data: AlbumRecommendationPreviewData, owner: RecommendationOwner): AlbumRecommendationPreviewModel {\n return {\n ...createAlbumRecommendations(data, owner),\n type: DomainModelType.Preview\n };\n}\nexport function createAlbumRecommendationsPageModel(data: AlbumRecommendationPageData, owner: RecommendationOwner): AlbumRecommendationPageModel {\n return {\n ...createAlbumRecommendations(data, owner),\n type: DomainModelType.Page,\n albums: data.albums ? createAlbumPreviewConnectionModel(data.albums) : null\n };\n}\n","import type { AlbumPreviewModel } from \"./AlbumModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createAlbumPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { ResourceModelInterface } from \"./ResourceModel\";\nimport type { ArtistAlbumsSectionFragment, ArtistAlbumsPageFragment } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\ntype ArtistAlbumsSectionData = ArtistAlbumsSectionFragment;\ntype ArtistAlbumsPageData = ArtistAlbumsPageFragment;\n\nexport type ArtistAlbumsModel = ArtistAlbumsSectionModel;\nexport type ArtistAlbumsSectionModel = ({ type: DomainModelType.Section } & ArtistAlbumsSection) | ArtistAlbumsPageModel;\nexport type ArtistAlbumsPageModel = { type: DomainModelType.Page; contentType: ContentType.ArtistAlbums } & ArtistAlbumsPage;\n\ninterface ArtistAlbumsSection extends ResourceModelInterface {\n readonly contentType: ContentType.ArtistAlbums;\n readonly albums: ConnectionModel<AlbumPreviewModel> | null;\n}\ntype ArtistAlbumsPage = ArtistAlbumsSection;\n\nexport function createArtistAlbumsSectionModel(data: ArtistAlbumsSectionData): ArtistAlbumsSectionModel {\n return {\n graphType: data.__typename,\n type: DomainModelType.Section,\n contentType: ContentType.ArtistAlbums,\n id: data.id,\n cover: null,\n albums: data.albums ? createAlbumPreviewConnectionModel(data.albums) : null\n };\n}\n\nexport function createArtistAlbumsPageModel(data: ArtistAlbumsPageData): ArtistAlbumsPageModel {\n return {\n ...createArtistAlbumsSectionModel(data),\n type: DomainModelType.Page\n };\n}\n","import type { AlbumPreviewModel } from \"./AlbumModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createAlbumPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { ResourceModelInterface } from \"./ResourceModel\";\nimport type { ArtistAppearsOnAlbumsSectionFragment, ArtistAppearsOnAlbumsPageFragment } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\ntype ArtistAlbumsAppearsOnSectionData = ArtistAppearsOnAlbumsSectionFragment;\ntype ArtistAlbumsAppearsOnPageData = ArtistAppearsOnAlbumsPageFragment;\n\nexport type ArtistAlbumsAppearsOnModel = ArtistAlbumsAppearsOnSectionModel;\nexport type ArtistAlbumsAppearsOnSectionModel = ({ type: DomainModelType.Section } & ArtistAlbumsAppearsOnSection) | ArtistAlbumsAppearsOnPageModel;\nexport type ArtistAlbumsAppearsOnPageModel = { type: DomainModelType.Page } & ArtistAlbumsAppearsOnPage;\n\ninterface ArtistAlbumsAppearsOnSection extends ResourceModelInterface {\n readonly contentType: ContentType.ArtistAppearsOn;\n readonly albums: ConnectionModel<AlbumPreviewModel> | null;\n}\ntype ArtistAlbumsAppearsOnPage = ArtistAlbumsAppearsOnSection;\n\nexport function createArtistAlbumsAppearsOnSectionModel(data: ArtistAlbumsAppearsOnSectionData, id: string): ArtistAlbumsAppearsOnSectionModel {\n return {\n graphType: data.__typename,\n type: DomainModelType.Section,\n contentType: ContentType.ArtistAppearsOn,\n id,\n cover: null,\n albums: createAlbumPreviewConnectionModel(data.appearsOnAlbums)\n };\n}\n\nexport function createArtistAlbumsAppearsOnPageModel(data: ArtistAlbumsAppearsOnPageData, id: string): ArtistAlbumsAppearsOnPageModel {\n return {\n ...createArtistAlbumsAppearsOnSectionModel(data, id),\n type: DomainModelType.Page\n };\n}\n","import type { ArtistAlbumsSectionModel } from \"./ArtistAlbums\";\nimport { createArtistAlbumsSectionModel } from \"./ArtistAlbums\";\nimport type { ArtistAlbumsAppearsOnSectionModel } from \"./ArtistAlbumsAppearsOn\";\nimport { createArtistAlbumsAppearsOnSectionModel } from \"./ArtistAlbumsAppearsOn\";\nimport type { ArtistRadioModel, ArtistRadioPreviewModel } from \"./ArtistRadioModel\";\nimport { createArtistRadioLinkModel, createArtistRadioPreviewModel } from \"./ArtistRadioModel\";\nimport type { ArtistSimilarArtistsSectionModel } from \"./ArtistSimilarArtistsModel\";\nimport { createArtistSimilarArtistsSectionModel } from \"./ArtistSimilarArtistsModel\";\nimport type { ArtistSinglesSectionModel } from \"./ArtistSingles\";\nimport { createArtistSinglesSectionModel } from \"./ArtistSingles\";\nimport type { ArtistTracksSectionModel } from \"./ArtistTracksModel\";\nimport { createArtistTracksSectionModel } from \"./ArtistTracksModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createTrackPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { ResourceModelLinkInterface } from \"./ResourceModel\";\nimport type { TrackWithoutAlbumPreviewData, TrackPreviewModel } from \"./TrackModel\";\nimport type {\n ArtistAlbumsSectionFragment,\n ArtistLinkFragment,\n ArtistHeaderSectionFragment,\n ArtistPlayFragment,\n ArtistPopularTracksSectionFragment,\n ArtistPreviewFragment,\n ArtistSimilarArtistsSectionFragment,\n ArtistSinglesSectionFragment,\n ArtistAppearsOnAlbumsSectionFragment\n} from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype ArtistLinkData = ArtistLinkFragment;\ntype ArtistPreviewData = ArtistPreviewFragment;\ntype ArtistPlayData = ArtistPlayFragment;\n\ntype ArtistHeaderSectionData = ArtistHeaderSectionFragment;\n\nexport type ArtistModel = ArtistLinkModel;\nexport type ArtistLinkModel = ({ type: DomainModelType.Link } & ArtistLink) | ArtistPreviewModel;\nexport type ArtistPreviewModel = ({ type: DomainModelType.Preview } & ArtistPreview) | ArtistPlayModel;\nexport type ArtistPlayModel = ({ type: DomainModelType.Play } & ArtistPlay) | ArtistPageModel;\nexport type ArtistPageModel = { type: DomainModelType.Page } & ArtistPage;\n\ninterface ArtistLink extends ResourceModelLinkInterface {\n readonly contentType: ContentType.Artist;\n readonly name: string;\n}\n\ninterface Artist extends ArtistLink, PlayQueuePlayableModelInterface {\n readonly sharingUrl: string | null;\n readonly artistRadio: ArtistRadioModel | null;\n}\n//TODO: get back to this\ntype ArtistPreview = Artist;\n\ninterface ArtistPlay extends Artist {\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n}\n\ninterface ArtistPage extends ArtistPlay {\n readonly tracksSection: ArtistTracksSectionModel | null;\n readonly albums: ArtistAlbumsSectionModel | null;\n readonly singles: ArtistSinglesSectionModel | null;\n readonly artistRadio: ArtistRadioPreviewModel | null;\n readonly similarArtists: ArtistSimilarArtistsSectionModel | null;\n readonly appearsOn: ArtistAlbumsAppearsOnSectionModel | null;\n}\n\nfunction createArtist(data: ArtistPreviewData): Artist {\n return {\n contentType: ContentType.Artist,\n graphType: data.__typename,\n id: data.id,\n name: data.title,\n cover: data.cover ?? null,\n trackCount: null,\n sharingUrl: data.share ?? null,\n artistRadio: createArtistRadioLinkModel(data)\n };\n}\n\nexport function createArtistLinkModel(data: ArtistLinkData): ArtistLinkModel {\n return {\n type: DomainModelType.Link,\n contentType: ContentType.Artist,\n id: data.id,\n name: data.title\n };\n}\n\nexport function createFeaturedArtistOnTrackLinkModel(data: TrackWithoutAlbumPreviewData): ArtistLinkModel[] | null {\n const items = data.featuredArtists.items;\n if (!items) return null;\n if (items.length < 1) return null;\n return items.map((item) => createArtistLinkModel(item));\n}\n\nexport function createArtistPreviewModel(data: ArtistPreviewData): ArtistPreviewModel {\n return {\n ...createArtist(data),\n type: DomainModelType.Preview\n };\n}\n\nexport function createArtistPlayModel(data: ArtistPlayData, index: number): ArtistPlayModel {\n return {\n ...createArtist(data),\n type: DomainModelType.Play,\n tracks: data.tracks ? createTrackPreviewConnectionModel(data.tracks, index) : null\n };\n}\n\nexport function createEmptyArtistPageModel(id: string): ArtistPageModel {\n return {\n graphType: undefined,\n type: DomainModelType.Page,\n contentType: ContentType.Artist,\n tracks: null,\n id,\n name: \"\",\n trackCount: null,\n cover: null,\n tracksSection: null,\n albums: null,\n singles: null,\n artistRadio: null,\n similarArtists: null,\n sharingUrl: null,\n appearsOn: null\n };\n}\n\nexport function fillArtistPageModel_basicSectionAndRadio(model: ArtistPageModel, data: ArtistHeaderSectionData): ArtistPageModel {\n return {\n ...model,\n graphType: data.__typename,\n name: data.title,\n cover: data.cover ?? null,\n artistRadio: createArtistRadioPreviewModel(data)\n };\n}\n\nexport function fillArtistPageModel_artistTracks(model: ArtistPageModel, data: ArtistPopularTracksSectionFragment): ArtistPageModel {\n return {\n ...model,\n tracks: data.tracks ? createTrackPreviewConnectionModel(data.tracks, 0) : null,\n tracksSection: createArtistTracksSectionModel(data, model.id)\n };\n}\n\nexport function fillArtistPageModel_artistAlbums(model: ArtistPageModel, data: ArtistAlbumsSectionFragment): ArtistPageModel {\n return {\n ...model,\n albums: createArtistAlbumsSectionModel(data)\n };\n}\n\nexport function fillArtistPageModel_artistSingles(model: ArtistPageModel, data: ArtistSinglesSectionFragment): ArtistPageModel {\n return {\n ...model,\n singles: createArtistSinglesSectionModel(data, model.id)\n };\n}\n\nexport function fillArtistPageModel_similarArtists(model: ArtistPageModel, data: ArtistSimilarArtistsSectionFragment): ArtistPageModel {\n return {\n ...model,\n similarArtists: createArtistSimilarArtistsSectionModel(data, model.id)\n };\n}\nexport function fillArtistPageModel_appearsOn(model: ArtistPageModel, data: ArtistAppearsOnAlbumsSectionFragment): ArtistPageModel {\n return {\n ...model,\n appearsOn: createArtistAlbumsAppearsOnSectionModel(data, model.id)\n };\n}\n","import type { ConnectionModel } from \"./ConnectionModel\";\nimport { createTrackPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { ResourceModelLinkInterface } from \"./ResourceModel\";\nimport type { TrackPreviewModel } from \"./TrackModel\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport { getDurationFromTracks } from \"services/playable\";\nimport type { ArtistRadioLinkFragment, ArtistRadioPageFragment, ArtistRadioPlayFragment, ArtistRadioPreviewFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype ArtistRadioLinkData = ArtistRadioLinkFragment;\ntype ArtistRadioSectionData = ArtistRadioPreviewFragment;\ntype ArtistRadioPlayData = ArtistRadioPlayFragment;\ntype ArtistRadioPageData = ArtistRadioPageFragment;\n\nexport type ArtistRadioModel = ArtistRadioLinkModel;\nexport type ArtistRadioLinkModel = ({ type: DomainModelType.Link } & ArtistRadioLink) | ArtistRadioPreviewModel;\nexport type ArtistRadioPreviewModel = ({ type: DomainModelType.Preview } & ArtistRadioPreview) | ArtistRadioPlayModel;\nexport type ArtistRadioPlayModel = ({ type: DomainModelType.Play } & ArtistRadioPlay) | ArtistRadioPageModel;\nexport type ArtistRadioPageModel = { type: DomainModelType.Page } & ArtistRadioPage;\n\ninterface ArtistRadioLink extends ResourceModelLinkInterface {\n readonly contentType: ContentType.ArtistRadio;\n readonly title: string;\n}\n\ntype ArtistRadioPreview = ArtistRadioLink & PlayQueuePlayableModelInterface;\n\ninterface ArtistRadioPlay extends ArtistRadioPreview {\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n}\ninterface ArtistRadioPage extends ArtistRadioPlay {\n readonly duration: number;\n}\n\nexport function createArtistRadioLinkModel(data: ArtistRadioLinkData): ArtistRadioLinkModel {\n return {\n id: data.id,\n title: data.title,\n type: DomainModelType.Link,\n contentType: ContentType.ArtistRadio\n };\n}\n\nexport function createArtistRadioPreviewModel(data: ArtistRadioSectionData): ArtistRadioPreviewModel {\n return {\n ...createArtistRadioLinkModel(data),\n graphType: data.__typename,\n cover: data.cover ?? null,\n trackCount: pageContent.artistRadioPageItemsLimit,\n type: DomainModelType.Preview\n };\n}\n\nexport function createArtistRadioPlayModel(data: ArtistRadioPlayData): ArtistRadioPlayModel {\n return {\n ...createArtistRadioPreviewModel(data),\n type: DomainModelType.Play,\n tracks: data.artistRadio ? createTrackPreviewConnectionModel(data.artistRadio, 0) : null\n };\n}\n\nexport function createArtistRadioPageModel(data: ArtistRadioPageData): ArtistRadioPageModel {\n const radioTracks = data.artistRadio ? createTrackPreviewConnectionModel(data.artistRadio, 0) : null;\n return {\n ...createArtistRadioPreviewModel(data),\n type: DomainModelType.Page,\n tracks: radioTracks,\n duration: radioTracks ? getDurationFromTracks(radioTracks.items) : 0\n };\n}\n","import type { ArtistPreviewModel, ArtistLinkModel } from \"./ArtistModel\";\nimport { createArtistLinkModel } from \"./ArtistModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createArtistPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { ResourceModelLinkInterface, ResourceModelInterface } from \"./ResourceModel\";\nimport type { ArtistSimilarArtistsPageFragment, ArtistSimilarArtistsSectionFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype ArtistSimilarArtistsSectionData = ArtistSimilarArtistsSectionFragment;\ntype ArtistSimilarArtistsPageData = ArtistSimilarArtistsPageFragment;\n\nexport type ArtistSimilarArtistsModel = ArtistSimilarArtistsSectionModel;\nexport type ArtistSimilarArtistsSectionModel = ({ type: DomainModelType.Section } & ArtistSimilarArtistsSection) | ArtistSimilarArtistsPageModel;\nexport type ArtistSimilarArtistsPageModel = { type: DomainModelType.Page } & ArtistSimilarArtistsPage;\n\ninterface ArtistSimilarArtistsSection extends ResourceModelLinkInterface, ResourceModelInterface {\n readonly contentType: ContentType.ArtistSimilarArtists;\n readonly artists: ConnectionModel<ArtistPreviewModel> | null;\n}\ninterface ArtistSimilarArtistsPage extends ArtistSimilarArtistsSection {\n readonly artist: ArtistLinkModel;\n}\n\nexport function createArtistSimilarArtistsSectionModel(data: ArtistSimilarArtistsSectionData, id: string): ArtistSimilarArtistsSectionModel {\n return {\n type: DomainModelType.Section,\n contentType: ContentType.ArtistSimilarArtists,\n id,\n graphType: data.__typename,\n cover: null,\n artists: data.similarArtists ? createArtistPreviewConnectionModel(data.similarArtists) : null\n };\n}\n\nexport function createArtistSimilarArtistsPageModel(data: ArtistSimilarArtistsPageData): ArtistSimilarArtistsPageModel {\n return {\n ...createArtistSimilarArtistsSectionModel(data, data.id),\n type: DomainModelType.Page,\n artist: createArtistLinkModel(data)\n };\n}\n","import type { AlbumPreviewModel } from \"./AlbumModel\";\nimport type { ArtistLinkModel } from \"./ArtistModel\";\nimport { createArtistLinkModel } from \"./ArtistModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createAlbumPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { ResourceModelInterface } from \"./ResourceModel\";\nimport type { ArtistSinglesSectionFragment, ArtistSinglesPageFragment } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\ntype ArtistSinglesSectionData = ArtistSinglesSectionFragment;\ntype ArtistSinglesPageData = ArtistSinglesPageFragment;\n\nexport type ArtistSinglesModel = ArtistSinglesSectionModel;\nexport type ArtistSinglesSectionModel = ({ type: DomainModelType.Section } & ArtistSinglesSection) | ArtistSinglesPageModel;\nexport type ArtistSinglesPageModel = { type: DomainModelType.Page } & ArtistSinglesPage;\n\ninterface ArtistSinglesSection extends ResourceModelInterface {\n readonly contentType: ContentType.ArtistSingles;\n readonly albums: ConnectionModel<AlbumPreviewModel> | null;\n}\ninterface ArtistSinglesPage extends ArtistSinglesSection {\n readonly artist: ArtistLinkModel;\n}\n\nexport function createArtistSinglesSectionModel(data: ArtistSinglesSectionData, artistId: string): ArtistSinglesSectionModel {\n return {\n graphType: data.__typename,\n type: DomainModelType.Section,\n contentType: ContentType.ArtistSingles,\n id: artistId,\n cover: null,\n albums: data.singles ? createAlbumPreviewConnectionModel(data.singles) : null\n };\n}\n\nexport function createArtistSinglesPageModel(data: ArtistSinglesPageData): ArtistSinglesPageModel {\n return {\n ...createArtistSinglesSectionModel(data, data.id),\n type: DomainModelType.Page,\n artist: createArtistLinkModel(data)\n };\n}\n","import type { ArtistLinkModel } from \"./ArtistModel\";\nimport { createArtistLinkModel } from \"./ArtistModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createTrackPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { ResourceModelLinkInterface } from \"./ResourceModel\";\nimport type { TrackPreviewModel } from \"./TrackModel\";\nimport type { ArtistTracksPageFragment, ArtistPopularTracksSectionFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype ArtistTracksSectionData = ArtistPopularTracksSectionFragment;\ntype ArtistTracksPageData = ArtistTracksPageFragment;\n\nexport type ArtistTracksModel = ArtistTracksSectionModel;\nexport type ArtistTracksSectionModel = ({ type: DomainModelType.Section } & ArtistTracksSection) | ArtistTracksPageModel;\nexport type ArtistTracksPageModel = { type: DomainModelType.Page } & ArtistTracksPage;\n\ninterface ArtistTracksSection extends ResourceModelLinkInterface, PlayQueuePlayableModelInterface {\n readonly contentType: ContentType.ArtistTracks;\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n}\n\ninterface ArtistTracksPage extends ArtistTracksSection {\n readonly artist: ArtistLinkModel;\n}\n\nexport function createArtistTracksSectionModel(data: ArtistTracksSectionData, artistId: string): ArtistTracksSectionModel {\n return {\n contentType: ContentType.ArtistTracks,\n id: artistId,\n graphType: data.__typename,\n type: DomainModelType.Section,\n cover: null,\n tracks: data.tracks ? createTrackPreviewConnectionModel(data.tracks, 0, 5) : null, //TODO: ugly hack until backend gives correct totalCount\n trackCount: null\n };\n}\n\nexport function createArtistTracksPageModel(data: ArtistTracksPageData): ArtistTracksPageModel {\n return {\n ...createArtistTracksSectionModel(data, data.id),\n type: DomainModelType.Page,\n artist: createArtistLinkModel(data)\n };\n}\n","import { createAlbumPreviewModel } from \"./AlbumModel\";\nimport { createArtistPreviewModel } from \"./ArtistModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createExternalLinkModel } from \"./ExternalLinkModel\";\nimport { createLayoutPagePreviewModel } from \"./layoutPage\";\nimport { createLiveRadioPreviewModel } from \"./LiveRadioModel\";\nimport { createMixRadioCategoryPreviewModel } from \"./MixRadioCategoryModel\";\nimport { createMixRadioPreviewModel, MixRadioLinkParentType } from \"./MixRadioModel\";\nimport { createPlaylistCategoryPreviewModel } from \"./PlaylistCategoryModel\";\nimport { createPlaylistPreviewModel } from \"./PlaylistModel\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { ResourceModelLinkInterface, ResourcePreviewModel } from \"./ResourceModel\";\nimport { createTrackPreviewModel, type TrackPreviewModel } from \"./TrackModel\";\nimport type {\n BannerLinkFragment,\n BannerPreviewFragment\n} from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n//\ntype BannerLinkData = BannerLinkFragment;\ntype BannerPreviewData = BannerPreviewFragment;\n\nexport type BannerModel = BannerLinkModel;\nexport type BannerLinkModel = ({ type: DomainModelType.Link } & BannerLink) | BannerPreviewModel;\nexport type BannerPreviewModel = ({ type: DomainModelType.Preview } & BannerPreview) | BannerPlayModel;\nexport type BannerPlayModel = ({ type: DomainModelType.Play } & BannerPlay) | BannerPageModel;\nexport type BannerPageModel = { type: DomainModelType.Page } & BannerPage;\n\ninterface BannerLink extends ResourceModelLinkInterface {\n readonly contentType: ContentType.BannerLayoutItemContent; // todo?\n readonly name: string;\n}\n\ninterface Banner extends BannerLink, PlayQueuePlayableModelInterface {\n description: string;\n target: ResourcePreviewModel | null;\n}\n\ninterface BannerPlay extends Banner {\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n}\n\ntype BannerPage = BannerPlay\n\ntype BannerPreview = Banner;\n\nexport function createBannerPreviewModel(data: BannerPreviewData): BannerPreviewModel {\n return {\n ...createBanner(data),\n type: DomainModelType.Preview\n };\n}\n\nfunction createBanner(data: BannerPreviewData): Banner {\n return {\n contentType: ContentType.BannerLayoutItemContent,\n graphType: data.__typename,\n id: data.id,\n name: data.name,\n description: data.description,\n target: createBannerTarget(data),\n cover: data.cover ?? null,\n trackCount: null,\n };\n}\n\nfunction createBannerTarget(data: BannerPreviewData): ResourcePreviewModel | null {\n let target: ResourcePreviewModel | null = null;\n switch (data.target?.__typename) {\n case \"LiveRadioBannerTarget\":\n if (data.target.liveRadio) {\n target = createLiveRadioPreviewModel(data.target.liveRadio)\n }\n break;\n case \"MixRadioBannerTarget\":\n if (data.target.mixRadio) {\n target = createMixRadioPreviewModel(data.target.mixRadio, { type: MixRadioLinkParentType.MixRadios })\n }\n break;\n case \"AlbumBannerTarget\":\n if (data.target.album) {\n target = createAlbumPreviewModel(data.target.album);\n }\n break;\n case \"ArtistBannerTarget\":\n if (data.target.artist) {\n target = createArtistPreviewModel(data.target.artist);\n }\n break;\n case \"LayoutPageBannerTarget\":\n if (data.target.page) {\n target = createLayoutPagePreviewModel(data.target.page.id, data.target.page.title);\n }\n break;\n case \"MixRadioCategoryBannerTarget\":\n if (data.target.mixRadioCategory) {\n target = createMixRadioCategoryPreviewModel(data.target.mixRadioCategory);\n }\n break;\n case \"PlaylistBannerTarget\":\n if (data.target.playlist) {\n target = createPlaylistPreviewModel(data.target.playlist);\n }\n break;\n case \"PlaylistCategoryBannerTarget\":\n if (data.target.playlistCategory) {\n //\n target = createPlaylistCategoryPreviewModel(data.target.playlistCategory);\n }\n break;\n case \"TrackBannerTarget\":\n if (data.target.track) {\n //target = createTrackPreviewModel(data.target.track, 0);\n // todo: single-tracks not supported yet\n }\n break;\n case \"ExternalBannerTarget\":\n if (data.target.externalLink) {\n target = createExternalLinkModel(data.target.externalLink)\n }\n break;\n }\n return target;\n}\n","import type { AlbumPreviewModel } from \"./AlbumModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createAlbumPreviewConnectionModel, createTrackPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { ResourceModelLinkInterface } from \"./ResourceModel\";\nimport type { TrackPreviewModel } from \"./TrackModel\";\nimport type { TrackPlayablePreviewModel } from \"./TrackPlayableModel\";\nimport { log } from \"services/logger/initLoggerService\";\nimport type {\n ChartItemsPaginationQuery,\n ChartPageFragment,\n ChartPageFragment_AlbumsChart,\n ChartPageFragment_TracksChart,\n ChartPreviewFragment,\n TrackChartPlayQuery\n} from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype ChartPreviewData = ChartPreviewFragment;\ntype ChartPageData = ChartPageFragment;\ntype ChartItemsData = NonNullable<ChartItemsPaginationQuery[\"charts\"][\"chart\"]>;\n\ntype AlbumChartPageData = ChartPageFragment_AlbumsChart;\ntype TrackChartPlayData = TrackChartPlayQuery[\"charts\"][\"chart\"];\ntype TrackChartPageData = ChartPageFragment_TracksChart;\n\nexport type ChartModel = ChartPreviewModel;\nexport type ChartPreviewModel = AlbumChartPreviewModel | TrackChartPreviewModel | ChartPlayModel;\nexport type ChartPlayModel = TrackChartPlayModel | ChartPageModel;\nexport type ChartPageModel = AlbumChartPageModel | TrackChartPageModel;\n\nexport type AlbumChartPreviewModel = ({ type: DomainModelType.Preview; contentType: ContentType.AlbumChart } & ChartPreview) | AlbumChartPageModel;\nexport type AlbumChartPageModel = { type: DomainModelType.Page; contentType: ContentType.AlbumChart } & AlbumChartPage;\n\nexport type TrackChartPreviewModel = ({ type: DomainModelType.Preview; contentType: ContentType.TrackChart } & ChartPreview) | TrackChartPlayModel;\nexport type TrackChartPlayModel = ({ type: DomainModelType.Play; contentType: ContentType.TrackChart } & TrackChartPlay) | TrackChartPageModel;\nexport type TrackChartPageModel = { type: DomainModelType.Page; contentType: ContentType.TrackChart } & TrackChartPage;\n\nexport type ChartItemPreviewModel = AlbumPreviewModel | TrackPreviewModel;\nexport type ChartItemPlayablePreviewModel = AlbumPreviewModel | TrackPlayablePreviewModel;\n\ninterface Chart extends ResourceModelLinkInterface, PlayQueuePlayableModelInterface {\n readonly title: string;\n}\n\ntype ChartPreview = Chart;\n\ninterface TrackChartPlay extends ChartPreview {\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n}\n\ninterface ChartPage extends ChartPreview {\n readonly description: string | null;\n}\n\ninterface TrackChartPage extends ChartPage {\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n}\n\ninterface AlbumChartPage extends ChartPage {\n readonly albums: ConnectionModel<AlbumPreviewModel> | null;\n}\n\nfunction createChart(data: ChartPreviewData): Chart {\n return {\n cover: data.cover ?? null,\n graphType: data.__typename,\n id: data.id,\n title: data.title,\n trackCount: null\n };\n}\n\nfunction createAlbumChartPreviewModel(data: ChartPreviewData): AlbumChartPreviewModel {\n return {\n ...createChart(data),\n type: DomainModelType.Preview,\n contentType: ContentType.AlbumChart\n };\n}\n\nfunction createAlbumChartPageModel(data: AlbumChartPageData): AlbumChartPageModel {\n return {\n ...createChart(data),\n type: DomainModelType.Page,\n contentType: ContentType.AlbumChart,\n description: data.description ?? null,\n albums: data.albums ? createAlbumPreviewConnectionModel(data.albums) : null\n };\n}\n\nfunction createTrackChartPreviewModel(data: ChartPreviewData): TrackChartPreviewModel {\n return {\n ...createChart(data),\n type: DomainModelType.Preview,\n contentType: ContentType.TrackChart\n };\n}\n\nexport function createTrackChartPlayModel(data: TrackChartPlayData): TrackChartPlayModel | null {\n if (data?.__typename !== \"TracksChart\") {\n log.error({ code: \"web-210505-1204\", msg: \"wrong type\", data: { type: data?.__typename } });\n return null;\n }\n return {\n ...createChart(data),\n type: DomainModelType.Play,\n contentType: ContentType.TrackChart,\n tracks: data.tracks ? createTrackPreviewConnectionModel(data.tracks, 0) : null\n };\n}\n\nexport function createTrackChartPageModel(data: TrackChartPageData): TrackChartPageModel {\n return {\n ...createChart(data),\n type: DomainModelType.Page,\n contentType: ContentType.TrackChart,\n description: data.description ?? null,\n tracks: data.tracks ? createTrackPreviewConnectionModel(data.tracks, 0) : null\n };\n}\n\nexport function createChartPreviewModel(data: ChartPreviewData): ChartPreviewModel {\n switch (data.__typename) {\n case \"AlbumsChart\":\n return createAlbumChartPreviewModel(data);\n case \"TracksChart\":\n return createTrackChartPreviewModel(data);\n }\n}\n\nexport function createChartPageModel(data: ChartPageData): ChartPageModel {\n switch (data.__typename) {\n case \"AlbumsChart\":\n return createAlbumChartPageModel(data);\n case \"TracksChart\":\n return createTrackChartPageModel(data);\n }\n}\n\nexport function createChartItemPreviewConnectionModel(data: ChartItemsData, index: number): ConnectionModel<ChartItemPreviewModel> {\n switch (data.__typename) {\n case \"AlbumsChart\":\n return createAlbumPreviewConnectionModel(data.albums);\n case \"TracksChart\":\n return createTrackPreviewConnectionModel(data.tracks, index);\n }\n}\n\nexport function getChartModelItems(chart: ChartPageModel): ConnectionModel<AlbumPreviewModel | TrackPreviewModel> | null {\n switch (chart.contentType) {\n case ContentType.AlbumChart:\n return chart.albums;\n case ContentType.TrackChart:\n return chart.tracks;\n }\n}\n","import type { AlbumPreviewModel } from \"./AlbumModel\";\nimport { createAlbumPreviewModel } from \"./AlbumModel\";\nimport type { ArtistPreviewModel } from \"./ArtistModel\";\nimport { createArtistPreviewModel } from \"./ArtistModel\";\nimport { createBannerPreviewModel, type BannerPreviewModel } from \"./BannerModel\";\nimport type { ChartPreviewModel } from \"./ChartModel\";\nimport { createChartPreviewModel } from \"./ChartModel\";\nimport { ResourceDisplayType } from \"./Enums\";\nimport type { LayoutItemGroupModel, LayoutItemSectionModel } from \"./layoutPage\";\nimport { createLayoutItemSkeletonSectionModel, createLayoutItemGroupModel } from \"./layoutPage\";\nimport type { LiveRadioCategoryPreviewModel } from \"./LiveRadioCategoryModel\";\nimport { createLiveRadioCategoryPreviewModel } from \"./LiveRadioCategoryModel\";\nimport type { LiveRadioPreviewModel, LiveRadioTrackPreviewModel } from \"./LiveRadioModel\";\nimport { createLiveRadioPreviewModel } from \"./LiveRadioModel\";\nimport { createLiveRadioTrackPreviewModel } from \"./LiveRadioTrackModel\";\nimport type { MixedContentPreviewModel } from \"./MixedContentModel\";\nimport { createMixedContentPreviewModel } from \"./MixedContentModel\";\nimport type { MixRadioLinkParentModel, MixRadioPreviewModel } from \"./MixRadioModel\";\nimport { createMixRadioPreviewModel } from \"./MixRadioModel\";\nimport type { NotificationPreviewModel } from \"./NotificationModel\";\nimport { createNotificationPreviewModel } from \"./NotificationModel\";\nimport type { PlaylistCategoryPreviewModel } from \"./PlaylistCategoryModel\";\nimport { createPlaylistCategoryPreviewModel } from \"./PlaylistCategoryModel\";\nimport type { PlaylistPreviewModel } from \"./PlaylistModel\";\nimport { createPlaylistPreviewModel } from \"./PlaylistModel\";\nimport type { RecommendationItemPreviewModel, RecommendationOwner, RecommendationPreviewModel } from \"./RecommendationModel\";\nimport { createRecommendationPreviewModel } from \"./RecommendationModel\";\nimport type { ResourcePreviewModel } from \"./ResourceModel\";\nimport type { SearchMixedResultPreviewModel } from \"./SearchMixedResultModel\";\nimport { createSearchMixedResultPreviewModel } from \"./SearchMixedResultModel\";\nimport { createTrackPlayablePreviewModelFromSearchTrackResult } from \"./SearchTrackResultModel\";\nimport type { TrackPreviewModel } from \"./TrackModel\";\nimport { createTrackNoAlbumPreviewModel, createTrackPreviewModel } from \"./TrackModel\";\nimport type { TrackPlayablePreviewModel } from \"./TrackPlayableModel\";\nimport type {\n AlbumPreviewConnectionFragment,\n ArtistPreviewConnectionFragment,\n LayoutPageFragment,\n PlaylistPreviewConnectionFragment,\n RecommendationPreviewConnectionFragment,\n ChartPreviewConnectionFragment,\n MixedSearchResultConnectionFragment,\n PlaylistCategoryPreviewConnectionFragment,\n FavouriteArtistPreviewConnectionFragment,\n LiveRadioPreviewConnectionFragment,\n LiveRadioCategoryPreviewConnectionFragment,\n FavouriteAlbumPreviewConnectionFragment,\n FavoriteTrackPreviewConnectionFragment,\n MixRadioPreviewConnectionFragment,\n TrackPreviewConnectionFragment,\n TrackWithoutAlbumPreviewConnectionFragment,\n MixedContentPreviewConnectionFragment,\n PlaylistTrackPreviewConnectionFragment,\n NotificationPreviewConnectionFragment,\n PageInfoFragment,\n RecommendationContentPaginationQuery,\n BannerPreviewConnectionFragment\n} from \"generated/graphql-types\";\nimport { DomainModelType } from \"models/ModelType\";\n\ntype ConnectionData = PageInfoFragment;\n\ntype AlbumPreviewConnectionData = AlbumPreviewConnectionFragment;\n\ntype ArtistPreviewConnectionData = ArtistPreviewConnectionFragment;\ntype BannerPreviewConnectionData = BannerPreviewConnectionFragment;\ntype ChartPreviewConnectionData = ChartPreviewConnectionFragment;\ntype FavoriteAlbumPreviewConnectionData = FavouriteAlbumPreviewConnectionFragment;\ntype FavoriteArtistPreviewConnectionData = FavouriteArtistPreviewConnectionFragment;\ntype FavoriteTrackPreviewConnectionData = FavoriteTrackPreviewConnectionFragment;\ntype LiveRadioCategoryPreviewConnectionData = LiveRadioCategoryPreviewConnectionFragment;\ntype LiveRadioPreviewConnectionData = LiveRadioPreviewConnectionFragment;\ntype MixRadioPreviewConnectionData = MixRadioPreviewConnectionFragment;\ntype NotificationPreviewConnectionData = NotificationPreviewConnectionFragment;\ntype PlaylistCategoryPreviewConnectionData = PlaylistCategoryPreviewConnectionFragment;\ntype MixedContentConnectionData = MixedContentPreviewConnectionFragment;\ntype PlaylistPreviewConnectionData = PlaylistPreviewConnectionFragment;\ntype SearchMixedResultPreviewConnectionData = MixedSearchResultConnectionFragment;\ntype SearchTrackResultPreviewConnectionData = TrackPreviewConnectionFragment;\n\ntype RecommendationPreviewConnectionData = RecommendationPreviewConnectionFragment;\n\ntype TrackPreviewConnectionData = TrackPreviewConnectionFragment;\ntype LiveRadioTrackPreviewConnectionData = TrackPreviewConnectionFragment;\ntype TrackNoAlbumPreviewConnectionData = TrackWithoutAlbumPreviewConnectionFragment;\ntype PlaylistTrackPreviewConnectionData = PlaylistTrackPreviewConnectionFragment;\n\nexport type ConnectionModel<T> = { type: DomainModelType } & Connection<T>;\nexport type ResourcePreviewConnectionModel = Connection<ResourcePreviewModel>;\n\nexport type LayoutItemGroupConnectionModel = Connection<LayoutItemGroupModel>;\n\nexport type LayoutItemSectionConnectionModel = Connection<LayoutItemSectionModel>;\n\ninterface Connection<T> {\n totalCount: number | null;\n items: T[];\n pageInfo: {\n endCursor: string | null;\n hasNextPage: boolean;\n endCursorIndex: number | null;\n };\n}\n\nfunction createConnection<T>(data: ConnectionData, items: T[], totalCount: number | null, first = 50): Connection<T> {\n const connection: Connection<T> = {\n totalCount: totalCount ?? (!data.hasNextPage ? items.length : null),\n items,\n pageInfo: {\n hasNextPage: data.hasNextPage,\n endCursor: data.endCursor ?? null,\n endCursorIndex: items.length\n }\n };\n //TODO: ugly hack until backend gives correct totalCount\n if (first > items.length) {\n connection.totalCount = items.length;\n //connection.pageInfo.hasNextPage = false;\n }\n return connection;\n}\n\nfunction createEmptyConnection<T>(): Connection<T> {\n const connection: Connection<T> = {\n totalCount: 0,\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n endCursorIndex: null\n }\n };\n return connection;\n}\nexport function createStaticConnection<T>(items: T[], totalCount: number | null): Connection<T> {\n const connection: Connection<T> = {\n totalCount,\n items,\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n endCursorIndex: null\n }\n };\n return connection;\n}\n\nexport function createMultiselectTrackPreviewConnectionModel(tracks: TrackPreviewModel[]): ConnectionModel<TrackPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createEmptyConnection(),\n items: tracks // todo: should the tracks be recreated with a new playbackcontext that points to the selection instad of where they came from?\n };\n}\n\nexport function createMyMusicTrackPreviewConnectionModel(data: FavoriteTrackPreviewConnectionData): ConnectionModel<TrackPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item, i) => createTrackPreviewModel(item, i)),\n data.totalCount ?? null\n )\n };\n}\n\nexport function createEmptyTrackPreviewConnectionModel(): ConnectionModel<TrackPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createEmptyConnection()\n };\n}\n//TODO: ugly hack until backend gives correct totalCount\nexport function createTrackPreviewConnectionModel(data: TrackPreviewConnectionData, index: number, first?: number): ConnectionModel<TrackPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item, i) => createTrackPreviewModel(item, index + i)),\n data.totalCount ?? null,\n first\n )\n };\n}\n\nexport function createPlaylistTrackPreviewConnectionModel(data: PlaylistTrackPreviewConnectionData): ConnectionModel<TrackPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => createTrackPreviewModel(item, item.position)),\n data.totalCount ?? null\n )\n };\n}\n\nexport function createStaticPreviewConnectionModel<T>(data: T[], totalCount: number | null): ConnectionModel<T> {\n return {\n type: DomainModelType.Preview,\n ...createStaticConnection(data, totalCount)\n };\n}\nexport function createLiveRadioTrackPreviewConnectionModel(data: LiveRadioTrackPreviewConnectionData): ConnectionModel<LiveRadioTrackPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item, index) => createLiveRadioTrackPreviewModel(item, index)),\n data.totalCount ?? null\n )\n };\n}\n\nexport function createTrackNoAlbumPreviewConnectionModel(\n data: TrackNoAlbumPreviewConnectionData,\n cover: string | null,\n album: { id: string; title: string }\n): ConnectionModel<TrackPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item, index) => createTrackNoAlbumPreviewModel(item, cover, album, index)),\n data.totalCount ?? null\n )\n };\n}\n\nexport function createAlbumPreviewConnectionModel(data: AlbumPreviewConnectionData | FavoriteAlbumPreviewConnectionData): ConnectionModel<AlbumPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => createAlbumPreviewModel(item)),\n data.totalCount ?? null\n )\n };\n}\n\nexport function createPlaylistCategoryPreviewConnectionModel(data: PlaylistCategoryPreviewConnectionData): ConnectionModel<PlaylistCategoryPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => createPlaylistCategoryPreviewModel(item)),\n data.totalCount ?? null\n )\n };\n}\n\nexport function createMixedContentPreviewConnectionModel(data: MixedContentConnectionData): ConnectionModel<MixedContentPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => (item ? createMixedContentPreviewModel(item) : null)).filter((n) => n != null) as MixedContentPreviewModel[],\n data.totalCount ?? null\n )\n };\n}\n\nexport function createPlaylistPreviewConnectionModel(data: PlaylistPreviewConnectionData): ConnectionModel<PlaylistPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => createPlaylistPreviewModel(item)),\n data.totalCount ?? null\n )\n };\n}\n\nexport function createArtistPreviewConnectionModel(data: ArtistPreviewConnectionData | FavoriteArtistPreviewConnectionData): ConnectionModel<ArtistPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => createArtistPreviewModel(item)),\n data.totalCount ?? null\n )\n };\n}\n\nexport function createBannerPreviewConnectionModel(data: BannerPreviewConnectionData): ConnectionModel<BannerPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => createBannerPreviewModel(item)),\n data.totalCount ?? null\n )\n };\n}\n\nexport function createChartPreviewConnectionModel(data: ChartPreviewConnectionData): ConnectionModel<ChartPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => (item ? createChartPreviewModel(item) : null)).filter((n) => n != null) as ChartPreviewModel[],\n data.totalCount ?? null\n )\n };\n}\n\nexport function createLiveRadioCategoryPreviewConnectionModel(data: LiveRadioCategoryPreviewConnectionData): ConnectionModel<LiveRadioCategoryPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => (item ? createLiveRadioCategoryPreviewModel(item) : null)).filter((n) => n != null) as LiveRadioCategoryPreviewModel[],\n data.totalCount ?? null\n )\n };\n}\n\nexport function createLiveRadioPreviewConnectionModel(data: LiveRadioPreviewConnectionData): ConnectionModel<LiveRadioPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => (item ? createLiveRadioPreviewModel(item) : null)).filter((n) => n != null) as LiveRadioPreviewModel[],\n data.totalCount ?? null\n )\n };\n}\n\nexport function createMixRadioPreviewConnectionModel(data: MixRadioPreviewConnectionData, parent: MixRadioLinkParentModel): ConnectionModel<MixRadioPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => (item ? createMixRadioPreviewModel(item, parent) : null)).filter((n) => n != null) as MixRadioPreviewModel[],\n data.totalCount ?? null\n )\n };\n}\n\nexport function createNotificationPreviewConnectionModel(data: NotificationPreviewConnectionData): ConnectionModel<NotificationPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => (item ? createNotificationPreviewModel(item) : null)).filter((n) => n != null) as NotificationPreviewModel[],\n data.totalCount ?? null\n )\n };\n}\n\nexport function createRecommendationPreviewConnectionModel(data: RecommendationPreviewConnectionData, owner: RecommendationOwner): ConnectionModel<RecommendationPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => (item ? createRecommendationPreviewModel(item, owner) : null)).filter((n) => n != null) as RecommendationPreviewModel[],\n data.totalCount ?? null\n )\n };\n}\n\nexport function createRecommendationItemPreviewConnectionModel(\n data: NonNullable<RecommendationContentPaginationQuery[\"me\"][\"recommendations\"][\"recommendation\"]>,\n index: number\n): ConnectionModel<RecommendationItemPreviewModel> {\n switch (data.__typename) {\n case \"AlbumsRecommendation\":\n return createAlbumPreviewConnectionModel(data.albums);\n case \"PlaylistsRecommendation\":\n return createPlaylistPreviewConnectionModel(data.playlists);\n case \"TracksRecommendation\":\n return createTrackPreviewConnectionModel(data.tracks, index);\n }\n}\n\nexport function createSearchMixedResultPreviewConnectionModel(data: SearchMixedResultPreviewConnectionData): ConnectionModel<SearchMixedResultPreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => createSearchMixedResultPreviewModel(item)).filter((n) => n != null) as SearchMixedResultPreviewModel[],\n data.totalCount ?? null\n )\n };\n}\n\nexport function createTrackPlayablePreviewConnectionModelFromSearchTrackResult(data: SearchTrackResultPreviewConnectionData): ConnectionModel<TrackPlayablePreviewModel> {\n return {\n type: DomainModelType.Preview,\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => createTrackPlayablePreviewModelFromSearchTrackResult(item)).filter((n) => n != null) as TrackPlayablePreviewModel[],\n data.totalCount ?? null\n )\n };\n}\n\nexport function createLayoutPageGroupConnectionModel(data: LayoutPageFragment[\"groups\"], pageId: string): LayoutItemGroupConnectionModel {\n return {\n ...createConnection(\n data?.pageInfo,\n (data.items ?? []).map((item) => createLayoutItemGroupModel(item, pageId)),\n data.totalCount ?? null\n )\n };\n}\n\nexport function createLayoutItemConnectionModel(data: NonNullable<LayoutPageFragment[\"groups\"][\"items\"]>[number][\"items\"], pageId: string): LayoutItemSectionConnectionModel {\n return {\n ...createConnection(\n data.pageInfo,\n (data.items ?? []).map((item) => createLayoutItemSkeletonSectionModel(item, pageId)).filter((n) => n != null && n.displayType !== ResourceDisplayType.Unknown),\n data.totalCount ?? null\n )\n };\n}\n","import type { RecommendationPreviewModel, ResourceModelInterface } from \".\";\nimport { createRecommendationPreviewConnectionModel } from \".\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { DiscoverRecommendationsPageFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype DiscoverRecommendationsPageData = DiscoverRecommendationsPageFragment;\n\nexport interface DiscoverRecommendationsPageModel extends ResourceModelInterface {\n type: DomainModelType.Page;\n contentType: ContentType.UserRecommendations;\n collections: ConnectionModel<RecommendationPreviewModel> | null;\n}\n\nexport function createDiscoverRecommendationsPage(data: DiscoverRecommendationsPageData): DiscoverRecommendationsPageModel {\n return {\n type: DomainModelType.Page,\n contentType: ContentType.UserRecommendations,\n id: getNextUUID(),\n graphType: data.__typename,\n cover: null,\n collections: data.recommendations ? createRecommendationPreviewConnectionModel(data.recommendations, ContentType.UserRecommendations) : null\n };\n}\n","import type { ConnectionModel } from \"./ConnectionModel\";\nimport { createTrackPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { TrackPreviewModel } from \"./TrackModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { TrackPreviewConnectionFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype EndlessPlayData = TrackPreviewConnectionFragment;\n\nexport interface EndlessPlayModel extends PlayQueuePlayableModelInterface {\n readonly type: DomainModelType.Play;\n readonly contentType: ContentType.EndlessPlay;\n readonly tracks: ConnectionModel<TrackPreviewModel>;\n}\n\nexport function createEndlessPlayModel(data: EndlessPlayData): EndlessPlayModel {\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n type: DomainModelType.Play,\n contentType: ContentType.EndlessPlay,\n tracks: createTrackPreviewConnectionModel(data, 0),\n cover: null,\n trackCount: null\n };\n}\n","export { FavoriteContentType } from \"generated/graphql-types\";\nexport { FavoriteAlbumsSorting, FavoriteArtistsSorting, FavoritePlaylistsSorting, FavoriteTracksSorting } from \"generated/graphql-types\";\nexport { PageItemDisplayType } from \"generated/graphql-types\";\nexport { FeedbackCategory } from \"generated/graphql-types\";\n\nexport enum ResourceDisplayType {\n Deeplink = \"Deeplink\",\n Grid = \"Grid\",\n LargeScroller = \"LargeScroller\",\n LargeSingle = \"LargeSingle\",\n PromoSingle = \"PromoSingle\",\n List = \"List\",\n ListLarge = \"ListLarge\",\n ListMedium = \"ListMedium\",\n Scroller = \"Scroller\",\n Single = \"Single\",\n Top = \"Top\",\n Unknown = \"Unknown\"\n}\n\nexport enum ConnectionState {\n Fetching = \"Fetching\",\n NetworkError = \"NetworkError\",\n Ok = \"Ok\",\n Unknown = \"Unknown\",\n UnknownError = \"UnknownError\"\n}\n","import { ContentType, DomainModelType } from \"models/ModelType\";\nimport { ResourceModelLinkInterface } from \"./ResourceModel\";\n\nexport interface ExternalLinkModel extends ResourceModelLinkInterface {\n readonly contentType: ContentType.ExternalLink;\n type: DomainModelType.Preview;\n externalLink: string;\n cover?: string;\n target?: string;\n}\n\nexport function createExternalLinkModel(externalLink: string, target: string | undefined = \"_blank\"): ExternalLinkModel {\n return {\n id: externalLink,\n type: DomainModelType.Preview,\n contentType: ContentType.ExternalLink,\n externalLink,\n target\n };\n}\n","import type { RecommendationPreviewModel, ResourceModelInterface } from \".\";\nimport { createRecommendationPreviewConnectionModel } from \".\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { HistoryRecommendationsPageFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype HistoryRecommendationsPageData = HistoryRecommendationsPageFragment;\n\nexport interface HistoryRecommendationsPageModel extends ResourceModelInterface {\n type: DomainModelType.Page;\n contentType: ContentType.UserHistory;\n collections: ConnectionModel<RecommendationPreviewModel> | null;\n}\n\nexport function createHistoryRecommendationsPage(data: HistoryRecommendationsPageData): HistoryRecommendationsPageModel {\n return {\n type: DomainModelType.Page,\n contentType: ContentType.UserHistory,\n id: getNextUUID(),\n graphType: data.__typename,\n cover: null,\n collections: data.recommendations ? createRecommendationPreviewConnectionModel(data.recommendations, ContentType.UserHistory) : null\n };\n}\n","import type { ConnectionModel } from \"./ConnectionModel\";\nimport { createLiveRadioPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { LiveRadioPreviewModel } from \"./LiveRadioModel\";\nimport type { ResourceModelInterface, ResourceModelLinkInterface } from \"./ResourceModel\";\nimport type { LiveRadioCategoryPageFragment, LiveRadioCategoryPreviewFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype LiveRadioCategoryPreviewData = LiveRadioCategoryPreviewFragment;\ntype LiveRadioCategoryPageData = LiveRadioCategoryPageFragment;\n\nexport type LiveRadioCategoryModel = LiveRadioCategoryPreviewModel;\nexport type LiveRadioCategoryPreviewModel = ({ type: DomainModelType.Preview } & LiveRadioCategoryPreview) | LiveRadioCategoryPageModel;\nexport type LiveRadioCategoryPageModel = { type: DomainModelType.Page } & LiveRadioCategoryPage;\n\ninterface LiveRadioCategoryPreview extends ResourceModelLinkInterface, ResourceModelInterface {\n readonly contentType: ContentType.LiveRadioCategory;\n readonly title: string;\n readonly description: string;\n}\n\ninterface LiveRadioCategoryPage extends LiveRadioCategoryPreview {\n radios: ConnectionModel<LiveRadioPreviewModel> | null;\n}\n\nexport function createLiveRadioCategoryPreviewModel(data: LiveRadioCategoryPreviewData): LiveRadioCategoryPreviewModel {\n return {\n contentType: ContentType.LiveRadioCategory,\n graphType: data.__typename,\n id: data.id,\n title: data.title,\n cover: data.cover ?? null,\n type: DomainModelType.Preview,\n description: data.description\n };\n}\n\nexport function createLiveRadioCategoryPageModel(data: LiveRadioCategoryPageData): LiveRadioCategoryPageModel {\n return {\n ...createLiveRadioCategoryPreviewModel(data),\n type: DomainModelType.Page,\n radios: data.radios ? createLiveRadioPreviewConnectionModel(data.radios) : null\n };\n}\n","import type { ResourceModelLinkInterface, ConnectionModel, TrackPreviewModel, PlayQueuePlayableModelInterface, MixedContentModel } from \".\";\nimport { createStaticPreviewConnectionModel } from \".\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { getNextUUID } from \"services/utils\";\nimport type { LiveRadioPreviewFragment, LiveRadioPlayFragment, LiveRadioPreview } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\ntype LiveRadioPreviewData = LiveRadioPreviewFragment;\ntype LiveRadioPlayData = LiveRadioPlayFragment;\n\nexport type LiveRadioModel = LiveRadioPreviewModel;\nexport type LiveRadioPreviewModel = ({ type: DomainModelType.Preview } & LiveRadioPreview) | LiveRadioPlayModel;\nexport type LiveRadioPlayModel = { type: DomainModelType.Play } & LiveRadioPlay;\n\ninterface LiveRadio extends ResourceModelLinkInterface, PlayQueuePlayableModelInterface {\n readonly contentType: ContentType.LiveRadio;\n readonly title: string;\n readonly description: string | null;\n readonly category?: { readonly id: string };\n readonly radioId: string;\n readonly sharingUrl: string | null;\n tracks?: LiveRadioPlayTracks;\n playbackContext: string | null;\n}\n\ntype LiveRadioPreview = LiveRadio;\n\ninterface LiveRadioPlay extends LiveRadio {\n mp3Url: string | null;\n}\n\nexport interface LiveRadioPlayTracks {\n nowPlaying: LiveRadioTrackPreviewModel | null;\n recentlyPlayedTracks: ConnectionModel<LiveRadioTrackPreviewModel> | null;\n}\n\nexport interface LiveRadioTrackPreviewModel extends PlayQueuePlayableModelInterface {\n type: DomainModelType.Preview;\n contentType: ContentType.LiveRadioTrack;\n track: TrackPreviewModel;\n}\n\nexport function getTracksFromLiveRadioModel(data: LiveRadioPreviewModel) {\n const nowPlaying = data.tracks?.nowPlaying ?? null;\n const recentTracks = data.tracks?.recentlyPlayedTracks?.items ?? null;\n\n let liveRadioTracks: LiveRadioTrackPreviewModel[] = [];\n\n if (nowPlaying) {\n liveRadioTracks.push(nowPlaying);\n }\n if (recentTracks) {\n liveRadioTracks = [...liveRadioTracks, ...recentTracks];\n }\n\n const tracks = liveRadioTracks.map((track) => track.track);\n return tracks;\n}\n\nexport function getTracksConnectionModelFromLiveRadioModel(data: LiveRadioPlayModel): ConnectionModel<TrackPreviewModel> | null {\n const tracks = getTracksFromLiveRadioModel(data);\n return createStaticPreviewConnectionModel(tracks, data.trackCount);\n}\n\nexport function createLiveRadioPreviewModel(data: LiveRadioPreviewData): LiveRadioPreviewModel {\n const categoryId = data.category?.id;\n\n return {\n contentType: ContentType.LiveRadio,\n id: data.id,\n title: data.title,\n category: categoryId ? { id: categoryId } : undefined,\n graphType: data.__typename,\n radioId: getNextUUID(),\n trackCount: null,\n cover: data.cover ?? null,\n sharingUrl: data.share ?? null,\n type: DomainModelType.Preview,\n playbackContext: data.playbackContext,\n description: data.description\n };\n}\n\nexport function createLiveRadioPlayModel(data: LiveRadioPlayData): LiveRadioPlayModel {\n const mp3Url = data.stream.replace(/^http:\\/\\//i, \"https://\");\n return {\n ...createLiveRadioPreviewModel(data),\n type: DomainModelType.Play,\n mp3Url\n };\n}\n\nexport function createLiveRadioPreviewModelFromMixedContent(mixedContent: MixedContentModel): LiveRadioPreviewModel | null {\n if (mixedContent.mixedContentId == null) {\n log.error({ code: \"web-211027-1853\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n\n const liveRadio: LiveRadioPreviewModel = {\n contentType: ContentType.LiveRadio,\n graphType: mixedContent.graphType,\n id: mixedContent.mixedContentId,\n radioId: getNextUUID(),\n title: mixedContent.title,\n cover: mixedContent.cover,\n trackCount: null,\n type: DomainModelType.Preview,\n sharingUrl: null,\n playbackContext: null,\n description: mixedContent.subtitle ?? null\n };\n return liveRadio;\n}\n","import type { LiveRadioCategoryPageModel, LiveRadioPlayModel, LiveRadioPreviewModel, PlayQueuePlayableModelInterface } from \".\";\nimport type { LayoutItemModel } from \"./layoutPage\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\nexport type LiveRadioParentModel = LiveRadioCategoryPageModel | LayoutItemModel;\nexport type LiveRadioParentContentType = LiveRadioParentModel[\"contentType\"];\n\nexport type LiveRadioPlayableContentType = LiveRadioPlayableModel[\"contentType\"];\n\nexport type LiveRadioPlayableModel = LiveRadioPlayablePreviewModel;\nexport type LiveRadioPlayablePreviewModel = ({ type: DomainModelType.Preview } & LiveRadioPlayablePreview) | LiveRadioPlayablePlayModel;\nexport type LiveRadioPlayablePlayModel = { type: DomainModelType.Play } & LiveRadioPlayablePlay;\n\ninterface LiveRadioPlayablePreview extends PlayQueuePlayableModelInterface {\n readonly id: string;\n readonly contentType: ContentType.LiveRadioPlayable;\n readonly liveRadio: LiveRadioPreviewModel;\n readonly parent: LiveRadioParentModel;\n}\n\ninterface LiveRadioPlayablePlay extends LiveRadioPlayablePreview {\n readonly id: string;\n readonly liveRadio: LiveRadioPlayModel;\n readonly parent: LiveRadioParentModel;\n}\n\nexport function createLiveRadioPlayablePreview(liveRadio: LiveRadioPreviewModel, parent: LiveRadioParentModel): LiveRadioPlayablePreviewModel {\n return {\n graphType: liveRadio.graphType,\n id: liveRadio.id,\n type: DomainModelType.Preview,\n cover: liveRadio.cover,\n contentType: ContentType.LiveRadioPlayable,\n liveRadio,\n parent,\n trackCount: null\n };\n}\n\nexport function createLiveRadioPlayablePlay(liveRadio: LiveRadioPlayModel, parent: LiveRadioParentModel): LiveRadioPlayablePreviewModel {\n return {\n graphType: liveRadio.graphType,\n id: liveRadio.id,\n type: DomainModelType.Play,\n cover: liveRadio.cover,\n contentType: ContentType.LiveRadioPlayable,\n liveRadio,\n parent,\n trackCount: null\n };\n}\n\nexport function createLiveRadioPlayablePlayModel(liveRadioPreview: LiveRadioPlayablePreviewModel, liveRadio: LiveRadioPlayModel): LiveRadioPlayablePlayModel {\n return {\n ...liveRadioPreview,\n type: DomainModelType.Play,\n liveRadio\n };\n}\n","import { createLiveRadioTrackPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { LiveRadioTrackPreviewModel, LiveRadioPlayTracks } from \"./LiveRadioModel\";\nimport { createTrackPreviewModel } from \"./TrackModel\";\nimport type { LiveRadioNowAndRecentlyPlayedQuery, TrackPreviewFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype LiveRadioTracksData = NonNullable<LiveRadioNowAndRecentlyPlayedQuery[\"liveRadios\"][\"radio\"]>;\ntype LiveRadioTrackData = TrackPreviewFragment;\n\nexport type LiveRadioTrackModel = LiveRadioTrackPreviewModel;\n\nexport function createLiveRadioPlayTracks(data: LiveRadioTracksData): LiveRadioPlayTracks {\n return {\n nowPlaying: data.tracks?.nowPlaying ? createLiveRadioTrackPreviewModel(data.tracks?.nowPlaying, 0) : null,\n recentlyPlayedTracks: data.tracks?.recentlyPlayed ? createLiveRadioTrackPreviewConnectionModel(data.tracks.recentlyPlayed) : null\n };\n}\nexport function createLiveRadioTrackPreviewModel(data: LiveRadioTrackData, position: number): LiveRadioTrackPreviewModel {\n return {\n graphType: data.__typename,\n id: data.id,\n cover: data.cover ?? null,\n contentType: ContentType.LiveRadioTrack,\n type: DomainModelType.Preview,\n track: createTrackPreviewModel(data, position),\n trackCount: 1\n };\n}\n","import type { ConnectionModel } from \"./ConnectionModel\";\nimport { createMixRadioPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { MixRadioPreviewModel } from \"./MixRadioModel\";\nimport { MixRadioLinkParentType } from \"./MixRadioModel\";\nimport type { ResourceModelInterface, ResourceModelLinkInterface } from \"./ResourceModel\";\nimport type { MixRadioCategoryPageFragment, MixRadioCategoryPreviewFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype MixRadioCategoryPageData = MixRadioCategoryPageFragment;\n\nexport type MixRadioCategoryPreviewModel = ({ type: DomainModelType.Preview } & MixRadioCategoryPreview) | MixRadioCategoryPageModel;\n\nexport type MixRadioCategoryModel = MixRadioCategoryPageModel;\nexport type MixRadioCategoryPageModel = { type: DomainModelType.Page } & MixRadioCategoryPage;\n\ninterface MixRadioCategory extends ResourceModelLinkInterface, ResourceModelInterface {\n readonly title: string;\n readonly contentType: ContentType.MixRadioCategory;\n}\n\ntype MixRadioCategoryPreview = MixRadioCategory;\n\ninterface MixRadioCategoryPage extends MixRadioCategoryPreview {\n readonly radios: ConnectionModel<MixRadioPreviewModel> | null;\n}\n\nexport function createMixRadioCategoryPageModel(data: MixRadioCategoryPageData): MixRadioCategoryPageModel {\n return {\n graphType: data.__typename,\n contentType: ContentType.MixRadioCategory,\n type: DomainModelType.Page,\n id: data.id,\n title: data.title,\n cover: data.cover ?? null,\n radios: data.radios ? createMixRadioPreviewConnectionModel(data.radios, { type: MixRadioLinkParentType.MixRadioCategory, categoryId: data.id }) : null\n };\n}\n\nexport function createMixRadioCategoryPreviewModel(data: MixRadioCategoryPreviewFragment): MixRadioCategoryPreviewModel {\n return {\n graphType: data.__typename,\n contentType: ContentType.MixRadioCategory,\n type: DomainModelType.Preview,\n id: data.id,\n title: data.title,\n cover: data.cover ?? null,\n };\n}\n","import type { PlayQueuePlayableModelInterface, ConnectionModel, TrackPreviewModel } from \".\";\nimport { createTrackPreviewConnectionModel } from \".\";\nimport type { MixedContentModel } from \"./MixedContentModel\";\nimport type { ResourceModelLinkInterface } from \"./ResourceModel\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { MixRadioPreviewFragment, MixRadioPlayFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype MixRadioData = MixRadioPreviewData;\ntype MixRadioPreviewData = MixRadioPreviewFragment;\ntype MixRadioPlayData = MixRadioPlayFragment;\n\nexport type MixRadioModel = MixRadioPreviewModel;\nexport type MixRadioPreviewModel = ({ type: DomainModelType.Preview } & MixRadioPreview) | MixRadioPlayModel;\nexport type MixRadioPlayModel = { type: DomainModelType.Play } & MixRadioPlay;\n\nexport enum MixRadioLinkParentType {\n LayoutPageItem = \"LayoutPageItem\",\n MixRadioCategory = \"MixRadioCategory\",\n MixRadios = \"MixRadios\",\n Notification = \"Notification\"\n}\n\nexport type MixRadioLinkParentModel =\n | { type: MixRadioLinkParentType.LayoutPageItem; itemId: string; pageId: string }\n | { type: MixRadioLinkParentType.MixRadioCategory; categoryId: string }\n | { type: MixRadioLinkParentType.MixRadios }\n | { type: MixRadioLinkParentType.Notification };\n\ninterface MixRadio extends ResourceModelLinkInterface, PlayQueuePlayableModelInterface {\n readonly contentType: ContentType.MixRadio;\n readonly title: string;\n readonly parent: MixRadioLinkParentModel;\n readonly sharingUrl: string | null;\n}\n\ntype MixRadioPreview = MixRadio;\n\ninterface MixRadioPlay extends MixRadioPreview {\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n}\n\nfunction createMixRadio(data: MixRadioData, parent: MixRadioLinkParentModel): MixRadio {\n return {\n contentType: ContentType.MixRadio,\n graphType: data.__typename,\n id: data.id,\n title: data.title,\n cover: data.cover ?? null,\n trackCount: null,\n parent,\n sharingUrl: data.share ?? null\n };\n}\n\nexport function createMixRadioPreviewModel(data: MixRadioPreviewData, parent: MixRadioLinkParentModel): MixRadioPreviewModel {\n return {\n ...createMixRadio(data, parent),\n type: DomainModelType.Preview\n };\n}\nexport function createMixRadioPlayModel(data: MixRadioPlayData, parent: MixRadioLinkParentModel): MixRadioPlayModel {\n return {\n ...createMixRadio(data, parent),\n type: DomainModelType.Play,\n contentType: ContentType.MixRadio,\n tracks: data.tracks ? createTrackPreviewConnectionModel(data.tracks, 0) : null\n };\n}\n\nexport function createMixRadioPreviewModelFromMixedContent(mixedContent: MixedContentModel): MixRadioPreviewModel | null {\n if (mixedContent.mixedContentId == null) {\n log.error({ code: \"web-211027-1853\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n return {\n contentType: ContentType.MixRadio,\n graphType: mixedContent.graphType,\n id: mixedContent.mixedContentId,\n title: mixedContent.title,\n cover: mixedContent.cover,\n trackCount: null,\n parent: { type: MixRadioLinkParentType.MixRadios },\n type: DomainModelType.Preview,\n sharingUrl: null\n };\n}\n\nexport function createMixRadioPreviewModelFromPlayModel(model: MixRadioPlayModel): MixRadioPreviewModel {\n return {\n contentType: ContentType.MixRadio,\n graphType: model.graphType,\n id: model.id,\n title: model.title,\n cover: model.cover,\n trackCount: null,\n parent: model.parent,\n type: DomainModelType.Preview,\n sharingUrl: model.sharingUrl\n };\n}\n","import { createStaticPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport type { MixRadioPreviewModel } from \"./MixRadioModel\";\nimport { createMixRadioPreviewModel, MixRadioLinkParentType } from \"./MixRadioModel\";\nimport type { ResourceModelLinkInterface, ResourceModelInterface } from \"./ResourceModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { MixRadiosPageFragment } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\ntype MixRadiosPageData = MixRadiosPageFragment;\n\nexport type MixRadiosModel = MixRadiosPageModel;\nexport type MixRadiosPageModel = { type: DomainModelType.Page } & MixRadios;\n\ninterface MixRadios extends ResourceModelLinkInterface, ResourceModelInterface {\n readonly radios: ConnectionModel<MixRadioPreviewModel> | null;\n readonly contentType: ContentType.MixRadios;\n readonly title: string | null;\n}\n\nexport function createMixRadiosPageModel(data: MixRadiosPageData, radioId?: string): MixRadiosPageModel {\n const radios: Map<string, MixRadioPreviewModel> = new Map();\n\n // only include radios from the same category as the selected radio if available, otherwise from the top category\n const category = data.categories.items?.find(n => n.radios.items?.some(nn => nn.id == radioId)) ?? data.categories.items?.[0];\n category?.radios.items?.forEach((radio) => {\n if (radios.has(radio.id)) return;\n const preview = createMixRadioPreviewModel(radio, { type: MixRadioLinkParentType.MixRadios });\n radios.set(radio.id, preview);\n });\n\n const items = Array.from(radios, ([_, value]) => value);\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n cover: null,\n type: DomainModelType.Page,\n contentType: ContentType.MixRadios,\n radios: createStaticPreviewConnectionModel(items, category?.radios.items?.length ?? data.categories.totalCount ?? null),\n title: category?.title ?? null\n };\n}\n","import type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { MixedContentPreviewFragment } from \"generated/graphql-types\";\nimport { MixedContentType } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype MixedContentPreviewData = MixedContentPreviewFragment;\n\nexport type MixedContentModel = MixedContentPreviewModel;\nexport type MixedContentPreviewModel = { type: DomainModelType.Preview; contentType: ContentType.MixedContent } & MixedContentPreview;\n\nexport type MixedContentDomainType =\n | ContentType.Album\n | ContentType.Artist\n | ContentType.ArtistRadio\n | ContentType.LiveRadio\n | ContentType.LiveRadioCategory\n | ContentType.MixRadio\n | ContentType.MyMusicTracks\n | ContentType.Playlist\n | ContentType.TrackChart\n | ContentType.TrackPlayable\n | ContentType.TrackRadio\n | ContentType.UserHistory\n | ContentType.UserRecommendations\n | ContentType.YourMixesPage;\n\ninterface MixedContentPreview extends PlayQueuePlayableModelInterface {\n mixedContentId: string | null;\n mixedContentType: MixedContentDomainType;\n name: string;\n owner?: boolean;\n subtitle: string | null;\n title: string;\n}\n\nexport function createMixedContentPreviewModel(data: MixedContentPreviewData): MixedContentPreviewModel | null {\n const contextType = data.type ? getMixedContentDomainType(data.type) : null;\n if (contextType == null) return null;\n\n const contextId = data.id ?? null;\n const id = `${contextType}_${contextId ?? \"null\"}`;\n\n return {\n id,\n graphType: data.__typename,\n type: DomainModelType.Preview,\n contentType: ContentType.MixedContent,\n mixedContentId: contextId,\n name: data.title,\n subtitle: data.subtitle ?? null,\n title: data.title ?? null,\n mixedContentType: contextType,\n cover: data.cover ?? null,\n trackCount: null,\n owner: data.type === MixedContentType.PrivatePlaylist ? true : undefined\n };\n}\n\nfunction getMixedContentDomainType(type: MixedContentType): MixedContentDomainType | null {\n switch (type) {\n case MixedContentType.Album:\n return ContentType.Album;\n case MixedContentType.Artist:\n return ContentType.Artist;\n case MixedContentType.ArtistRadio:\n return ContentType.ArtistRadio;\n case MixedContentType.FavoriteTracks:\n return ContentType.MyMusicTracks;\n case MixedContentType.Genre:\n return null;\n case MixedContentType.PrivatePlaylist:\n case MixedContentType.PublicPlaylist:\n return ContentType.Playlist;\n case MixedContentType.MixRadio:\n return ContentType.MixRadio;\n case MixedContentType.Recommendations:\n return ContentType.UserRecommendations;\n case MixedContentType.Track:\n return ContentType.TrackPlayable;\n case MixedContentType.TrackChart:\n return ContentType.TrackChart;\n case MixedContentType.TrackRadio:\n return ContentType.TrackRadio;\n case MixedContentType.YourHistory:\n return ContentType.UserHistory;\n case MixedContentType.LiveRadio:\n return ContentType.LiveRadio;\n case MixedContentType.LiveRadioCategory:\n return ContentType.LiveRadioCategory;\n case MixedContentType.YourMixes:\n return ContentType.YourMixesPage;\n }\n\n log.error({ code: \"web-211027-1433\", msg: DefaultLogMessage.NotImplemented, data: { type } });\n type;\n return null;\n}\n","import type { TrackPlayablePreviewModel } from \".\";\nimport { createTrackPlayablePreview } from \".\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { TrackPreviewModel } from \"./TrackModel\";\nimport { createTrackPreviewModel } from \"./TrackModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { TrackPreviewFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype MixedContentTrackPreviewData = TrackPreviewFragment;\n\nexport type MixedContentTrackModel = MixedContentTrackPlayModel;\nexport type MixedContentTrackPlayModel = { type: DomainModelType.Play } & MixedContentTrack;\n\ninterface MixedContentTrack extends PlayQueuePlayableModelInterface {\n contentType: ContentType.MixedContentTrack;\n track: TrackPreviewModel | null;\n}\n\nexport function createMixedContentTrackPlayModel(data: MixedContentTrackPreviewData): MixedContentTrackPlayModel {\n return {\n contentType: ContentType.MixedContentTrack,\n graphType: data.__typename,\n id: getNextUUID(),\n cover: data.cover ?? null,\n trackCount: 1,\n track: createTrackPreviewModel(data, 0),\n type: DomainModelType.Play\n };\n}\n\nexport function createTrackPlayablePreviewModelFromMixedContentTrack(data: MixedContentTrackPreviewData): TrackPlayablePreviewModel | null {\n const playContextTrack = createMixedContentTrackPlayModel(data);\n if (playContextTrack.track == null) return null;\n return createTrackPlayablePreview(playContextTrack.track, playContextTrack);\n}\n","import type { PlayQueuePlayableModelInterface, ConnectionModel, TrackPreviewModel } from \".\";\nimport { createMultiselectTrackPreviewConnectionModel } from \".\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\nexport type MultiselectionTracksModel = MultiselectionTracksPlayModel;\nexport type MultiselectionTracksPlayModel = { type: DomainModelType.Play } & MultiselectionTracks;\n\ninterface MultiselectionTracks extends PlayQueuePlayableModelInterface {\n readonly title: string;\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n readonly contentType: ContentType.TrackSelection;\n}\n\nexport function createMultiselectionTracksPlayModel(tracks: TrackPreviewModel[], title = \"\"): MultiselectionTracksPlayModel {\n return {\n type: DomainModelType.Play,\n graphType: \"\",\n id: \"trackSelection\",\n title,\n cover: null,\n trackCount: tracks.length,\n contentType: ContentType.TrackSelection,\n tracks: createMultiselectTrackPreviewConnectionModel(tracks)\n };\n}\n","import type { AlbumPreviewModel, ResourceModelInterface } from \".\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createAlbumPreviewConnectionModel } from \"./ConnectionModel\";\nimport { translate } from \"global/config\";\nimport type { FavoriteAlbumsQuery } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype MyAlbumsPageData = (FavoriteAlbumsQuery[\"me\"] & Record<string, unknown>)[\"favorites\"] & Record<string, unknown>;\n\nexport type MyMusicAlbumsModel = MyMusicAlbumsPageModel;\nexport type MyMusicAlbumsPageModel = { type: DomainModelType.Page } & MyMusicAlbums;\n\ninterface MyMusicAlbums extends ResourceModelInterface {\n readonly title: string;\n readonly albums: ConnectionModel<AlbumPreviewModel> | null;\n readonly contentType: ContentType.MyMusicAlbums;\n}\n\nexport function createMyMusicAlbumsPageModel(data: MyAlbumsPageData): MyMusicAlbumsPageModel {\n return {\n graphType: data.__typename,\n id: \"myMusicAlbums\",\n title: translate(\"MyMusicAlbumsTitle\"),\n cover: null,\n type: DomainModelType.Page,\n contentType: ContentType.MyMusicAlbums,\n albums: data.albums ? createAlbumPreviewConnectionModel(data.albums) : null\n };\n}\n","import type { ArtistPreviewModel, ResourceModelInterface } from \".\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createArtistPreviewConnectionModel } from \"./ConnectionModel\";\nimport { translate } from \"global/config\";\nimport type { FavoriteArtistsQuery } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype MyMusicArtistsPageData = (FavoriteArtistsQuery[\"me\"] & Record<string, unknown>)[\"favorites\"] & Record<string, unknown>;\n\nexport type MyMusicArtistsModel = MyMusicArtistsPageModel;\nexport type MyMusicArtistsPageModel = { type: DomainModelType.Page } & MyMusicArtists;\n\ninterface MyMusicArtists extends ResourceModelInterface {\n readonly title: string;\n readonly artists: ConnectionModel<ArtistPreviewModel> | null;\n readonly contentType: ContentType.MyMusicArtists;\n}\n\nexport function createMyMusicArtistsPageModel(data: MyMusicArtistsPageData): MyMusicArtistsPageModel {\n return {\n graphType: data.__typename,\n id: \"myMusicArtists\",\n title: translate(\"Artists\"),\n cover: null,\n type: DomainModelType.Page,\n contentType: ContentType.MyMusicArtists,\n artists: data.artists ? createArtistPreviewConnectionModel(data.artists) : null // todo map favorite artist onto artist until refactor on graphql\n };\n}\n","import type { ResourceModelInterface } from \".\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createPlaylistPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlaylistPreviewModel } from \"./PlaylistModel\";\nimport { translate } from \"global/config\";\nimport type { CombinedPlaylistsPaginationQuery } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype MyMusicPlaylistsPageData = CombinedPlaylistsPaginationQuery[\"me\"][\"playlists\"];\n\nexport type MyMusicPlaylistsModel = MyMusicPlaylistsPageModel;\nexport type MyMusicPlaylistsPageModel = { type: DomainModelType.Page } & MyMusicPlaylists;\n\ninterface MyMusicPlaylists extends ResourceModelInterface {\n readonly title: string;\n readonly playlists: ConnectionModel<PlaylistPreviewModel> | null;\n readonly contentType: ContentType.MyMusicPlaylists;\n}\n\nexport function createMyMusicPlaylistsPageModel(data: MyMusicPlaylistsPageData): MyMusicPlaylistsPageModel {\n return {\n graphType: data.__typename,\n id: \"myMusicPlaylists\",\n title: translate(\"MyMusicPlaylistsTitle\"),\n cover: null,\n type: DomainModelType.Page,\n contentType: ContentType.MyMusicPlaylists,\n playlists: createPlaylistPreviewConnectionModel(data.combinedPlaylists)\n };\n}\n","import type { PlayQueuePlayableModelInterface, ConnectionModel, TrackPreviewModel } from \".\";\nimport { createMyMusicTrackPreviewConnectionModel } from \".\";\nimport { translate } from \"global/config\";\nimport type { FavoriteTracksQuery, FavoriteTracksSorting } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\ntype MyMusicTracksData = FavoriteTracksQuery[\"me\"][\"favorites\"];\n\nexport type MyMusicTracksModel = MyMusicTracksPlayModel;\nexport type MyMusicTracksPlayModel = ({ type: DomainModelType.Play } & MyMusicTracks) | MyMusicTracksPageModel;\nexport type MyMusicTracksPageModel = { type: DomainModelType.Page } & MyMusicTracks;\n\ninterface MyMusicTracks extends PlayQueuePlayableModelInterface {\n readonly title: string;\n readonly orderBy: FavoriteTracksSorting;\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n readonly contentType: ContentType.MyMusicTracks; //TODO: rename?\n}\n\nfunction createMyMusicTracks(data: MyMusicTracksData, orderBy: FavoriteTracksSorting): MyMusicTracks {\n return {\n graphType: data.__typename,\n id: \"myMusicTracks\",\n title: translate(\"MyMusicTracksTitle\"), //todo: rename?\n cover: null,\n orderBy,\n trackCount: null,\n contentType: ContentType.MyMusicTracks,\n tracks: data.tracks ? createMyMusicTrackPreviewConnectionModel(data.tracks) : null\n };\n}\n//TODO: look into merging this\nexport function createMyMusicTracksPlayModel(data: MyMusicTracksData, orderBy: FavoriteTracksSorting): MyMusicTracksPlayModel {\n return {\n ...createMyMusicTracks(data, orderBy),\n type: DomainModelType.Play\n };\n}\n\nexport function createMyMusicTracksPageModel(data: MyMusicTracksData, orderBy: FavoriteTracksSorting): MyMusicTracksPageModel {\n return {\n ...createMyMusicTracks(data, orderBy),\n type: DomainModelType.Page\n };\n}\n","import type { ResourceModelInterface } from \".\";\nimport type { NotificationPreviewModel } from \"./NotificationModel\";\nimport { getNextUUID } from \"services/utils\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ninterface NotificationFeedPage {\n notifications: NotificationPreviewModel[];\n}\nexport interface NotificationFeedPageModel extends ResourceModelInterface, NotificationFeedPage {\n type: DomainModelType.Page;\n contentType: ContentType.NotificationFeed;\n}\n\n//TODO: remove?? this isn't used anywehre\nexport function createNotificationFeedPageModel(data: NotificationFeedPage): NotificationFeedPageModel {\n return {\n type: DomainModelType.Page,\n contentType: ContentType.NotificationFeed,\n id: getNextUUID(),\n graphType: undefined,\n cover: null,\n notifications: data.notifications\n };\n}\n","import type { PlayQueuePlayableModelInterface } from \".\";\nimport { MixRadioLinkParentType } from \".\";\nimport { getAlbumPreview, getTrackRecommendationPreview } from \"./../../services/backend/backend\";\nimport type { PlayablePreviewModel } from \"./PlayableModel\";\nimport type { ResourceModel } from \"./ResourceModel\";\nimport { translate } from \"global/config\";\nimport { getChartPreview, getMixRadioPreview, getPlaylistPreview } from \"services/backend\";\nimport { replaceAllBackwardsCompatible } from \"services/formatters\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { getNextUUID } from \"services/utils\";\nimport type { NotificationPreviewFragment } from \"generated/graphql-types\";\nimport { NotificationType as GraphNotificationType } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype NotificationPreviewData = NotificationPreviewFragment;\n\nexport type NotificationModel = NotificationPreviewModel;\nexport type NotificationPlayModel = NotificationPreviewModel;\n\nexport enum NotificationType {\n InstallPWA = \"InstallPWA\",\n PlaylistUpdated = \"PlaylistUpdated\",\n TrackRecommendationUpdated = \"TrackRecommendationUpdated\",\n TrackChartUpdated = \"TrackChartUpdated\",\n WelcomeToWeb = \"WelcomeToWeb\",\n TryMixRadio = \"TryMixRadio\",\n RecommendedTracks = \"RecommendedTracks\",\n Radio = \"Radio\",\n Album = \"Album\",\n Empty = \"EMPTY\"\n}\n\nexport enum NotificationKind {\n Social = \"Social\",\n Feature = \"Feature\",\n Content = \"Content\"\n}\n\nexport type NotificationConversionResource = ContentType.InstallPWA | ContentType.FrontPage | ContentType.Radio | ContentType.MixRadios;\n\nexport enum NotificationConversion {\n InstallPWA = \"InstallPWA\",\n NavigateToFrontPage = \"NavigateToFrontPage\",\n NavigateToRadio = \"NavigateToRadio\",\n NavigateToMixRadios = \"NavigateToMixRadios\",\n Play = \"Play\",\n Navigate = \"Navigate\"\n}\n\nexport interface NotificationPreviewModel extends PlayQueuePlayableModelInterface {\n type: DomainModelType.Preview;\n contentType: ContentType.Notification;\n availableBegin: number;\n availableEnd: number | null;\n notificationType: NotificationType;\n notificationKind: NotificationKind;\n eligibilityReasons?: string[];\n eventType: string | null;\n score?: number;\n seen: boolean;\n converted: boolean;\n title: string;\n subtitle?: string;\n playContextId?: string;\n\n playable?: PlayablePreviewModel;\n trackCount: number | null;\n\n content?: NotificationContentModel;\n}\n\nexport type NotificationContentModel = NotificationContentWrapperModel | Text;\nexport type NotificationContentWrapperModel = BulletGroup | Paragraph | Bullet | Link | Headline | Section;\n\ninterface Wrapper {\n children: NotificationContentModel[];\n}\n\nexport interface Paragraph extends Wrapper {\n type: \"Paragraph\";\n}\n\nexport interface BulletGroup extends Wrapper {\n type: \"BulletGroup\";\n}\n\nexport interface Bullet extends Wrapper {\n type: \"Bullet\";\n}\n\nexport interface Link extends Wrapper {\n type: \"Link\";\n action: NotificationConversion;\n style: \"inline\" | \"light-micro\";\n}\n\nexport interface Headline extends Wrapper {\n type: \"Headline\";\n}\n\nexport interface Section extends Wrapper {\n type: \"Section\";\n}\n\nexport interface Text {\n type: \"Text\";\n text: string;\n}\n\nexport function getNavigationConversionResourceType(conversion: NotificationConversion): NotificationConversionResource | null {\n switch (conversion) {\n case NotificationConversion.InstallPWA:\n return ContentType.InstallPWA;\n case NotificationConversion.NavigateToFrontPage:\n return ContentType.FrontPage;\n case NotificationConversion.NavigateToRadio:\n return ContentType.Radio;\n case NotificationConversion.NavigateToMixRadios:\n return ContentType.MixRadios;\n case NotificationConversion.Play:\n return null;\n case NotificationConversion.Navigate:\n return null;\n }\n}\n\nexport function isNotificationPlayable(resource: ResourceModel | null) {\n return resource?.contentType === ContentType.Notification && resource.playable != null;\n}\n\nexport function isNotificationExpand(resource: ResourceModel | null) {\n return resource?.contentType === ContentType.Notification && resource.content != null;\n}\n\nfunction getNotificationType(notificationType?: GraphNotificationType | null): NotificationType | null {\n switch (notificationType) {\n case GraphNotificationType.Album:\n return NotificationType.Album;\n case GraphNotificationType.Radio:\n return NotificationType.Radio;\n case GraphNotificationType.RecommendedTracks:\n return NotificationType.RecommendedTracks;\n case GraphNotificationType.PublicPlaylist:\n return NotificationType.PlaylistUpdated;\n }\n log.error({ code: \"web-220613-1255\", msg: DefaultLogMessage.NotImplemented, data: { type: notificationType } });\n return null;\n}\n\nfunction getNotificationKind(type: NotificationType): NotificationKind {\n switch (type) {\n case NotificationType.InstallPWA:\n case NotificationType.TryMixRadio:\n case NotificationType.Empty:\n return NotificationKind.Feature;\n case NotificationType.Album:\n case NotificationType.Radio:\n case NotificationType.PlaylistUpdated:\n case NotificationType.TrackRecommendationUpdated:\n case NotificationType.TrackChartUpdated:\n case NotificationType.RecommendedTracks:\n return NotificationKind.Content;\n case NotificationType.WelcomeToWeb:\n return NotificationKind.Social;\n }\n type;\n}\n\nexport function createNotificationPreviewModel(data: NotificationPreviewData): NotificationPreviewModel | null {\n const notificationType = getNotificationType(data.type);\n if (!notificationType) {\n // console.log(`Unhandled notification type: ${data.type}`, data);\n return null;\n }\n\n return {\n type: DomainModelType.Preview,\n contentType: ContentType.Notification,\n id: data.id,\n availableBegin: new Date(data.availableBegin).getTime(),\n availableEnd: data.availableEnd ? new Date(data.availableEnd).getTime() : null,\n eligibilityReasons: data.eligibilityReasons as string[],\n converted: false,\n cover: null,\n graphType: data.__typename,\n notificationKind: getNotificationKind(notificationType),\n notificationType,\n eventType: data.eventKey || null,\n seen: data.seenAt,\n subtitle: data.subTitle ?? undefined,\n title: data.title,\n trackCount: null,\n playContextId: data.contextId ?? undefined\n };\n}\n\nasync function getPlayable(notification: NotificationPreviewModel) {\n if (notification?.playContextId) {\n try {\n switch (notification.notificationType) {\n case NotificationType.Album: {\n const album = (await getAlbumPreview({ id: notification.playContextId })).model;\n return album;\n }\n case NotificationType.Radio: {\n const radio = (await getMixRadioPreview({ id: notification.playContextId }, { type: MixRadioLinkParentType.Notification })).model;\n return radio;\n }\n case NotificationType.RecommendedTracks: {\n const recommendation = (await getTrackRecommendationPreview({ id: notification.playContextId })).model;\n if (recommendation?.contentType !== ContentType.TrackRecommendation) return null;\n return recommendation;\n }\n case NotificationType.PlaylistUpdated: {\n const playlist = (await getPlaylistPreview({ id: notification.playContextId })).model;\n return playlist;\n }\n default:\n log.error({ code: \"web-220613-1438\", msg: DefaultLogMessage.NotImplemented, data: { type: notification.notificationType } });\n }\n } catch (e) {\n log.error({ code: \"web-230418-1516\", msg: \"Unable to fetch playable for notification.\", data: { notificationId: notification.id, error: e } });\n }\n return null;\n }\n}\n\nexport async function fetchPlayableForNotification(notification: NotificationPreviewModel): Promise<NotificationPreviewModel | null> {\n if (!notification.playContextId) {\n log.error({ code: \"web-220613-1438\", msg: DefaultLogMessage.UnexpectedNull, data: { type: notification.notificationType } });\n return null;\n }\n\n const playable = await getPlayable(notification);\n if (!playable) return null;\n\n const cover = notification.cover ?? playable.cover;\n\n return { ...notification, subtitle: notification.subtitle ?? playable.title, playable, cover };\n}\n\ninterface CreateNotificationPreviewModelLocallyProps {\n content?: NotificationContentModel;\n cover: string | null;\n notificationType: NotificationType;\n playable?: PlayablePreviewModel;\n subtitle?: string;\n title: string;\n score: number;\n trackCount: number | null;\n}\n\nexport function createNotificationPreviewModelLocally(data: CreateNotificationPreviewModelLocallyProps): NotificationPreviewModel {\n return {\n type: DomainModelType.Preview,\n contentType: ContentType.Notification,\n id: getNextUUID(),\n availableBegin: new Date().getTime(),\n availableEnd: null,\n converted: false,\n graphType: \"NotificationPreviewModel\",\n seen: false,\n notificationKind: getNotificationKind(data.notificationType),\n eventType: null,\n ...data\n };\n}\n\nexport async function createNotificationPlaylistUpdated(playlistId: string, score: number): Promise<NotificationPreviewModel | null> {\n const playlist = (await getPlaylistPreview({ id: playlistId })).model ?? null;\n if (!playlist) return null;\n\n const notification = createNotificationPreviewModelLocally({\n cover: playlist.cover,\n notificationType: NotificationType.PlaylistUpdated,\n title: `${playlist.title}`,\n subtitle: \"Playlisten er opdateret med ny musik\",\n playable: playlist,\n trackCount: playlist.trackCount,\n score\n });\n\n return notification;\n}\n\nexport async function createNotificationTrackRecommendationUpdated(recommendationId: string, score: number): Promise<NotificationPreviewModel | null> {\n const recommendation = (await getTrackRecommendationPreview({ id: recommendationId })).model ?? null;\n if (!recommendation) return null;\n if (recommendation.contentType !== ContentType.TrackRecommendation) return null;\n\n const id = replaceAllBackwardsCompatible(recommendation.id, \"\\u00E5\", \"å\").toLowerCase();\n let title: string;\n\n if (id === \"opdag-ny-musik1\" || id === \"opdag-musik\") {\n title = \"Opdag musik\";\n } else if (id === \"fordi-du-lyttede-til\" || id === \"fordi-du-også-lyttede-til\") {\n title = `Fordi du lyttede til ${recommendation.subtitle}`;\n } else {\n title = recommendation.title;\n }\n\n const notification = createNotificationPreviewModelLocally({\n cover: recommendation.cover,\n notificationType: NotificationType.TrackRecommendationUpdated,\n title: `${title}`,\n subtitle: \"Nye personlige anbefalinger til dig\",\n playable: recommendation,\n trackCount: recommendation.trackCount,\n score\n });\n\n return notification;\n}\n\nexport async function createNotificationTrackChartUpdated(trackChartId: string, score: number): Promise<NotificationPreviewModel | null> {\n const chart = (await getChartPreview({ id: trackChartId })).model ?? null;\n if (!chart) return null;\n if (chart.contentType !== ContentType.TrackChart) return null;\n\n const notification = createNotificationPreviewModelLocally({\n cover: chart.cover,\n notificationType: NotificationType.TrackChartUpdated,\n title: `${chart.title}`,\n subtitle: \"Hitlisten er opdateret med ny musik\",\n playable: chart,\n trackCount: chart.trackCount,\n score\n });\n\n return notification;\n}\n\nexport function createNotificationFeatureWelcomeToWebModel(score: number) {\n const p: Paragraph = {\n type: \"Paragraph\",\n children: [{ type: \"Text\", text: `Vi håber du bliver glad for ${translate(\"AppName\")}! Her er et par tips:` }]\n };\n\n const b1: Bullet = {\n type: \"Bullet\",\n children: [\n { type: \"Text\", text: \"Tjek \" },\n { type: \"Link\", children: [{ type: \"Text\", text: \"forsiden\" }], action: NotificationConversion.NavigateToFrontPage, style: \"inline\" },\n { type: \"Text\", text: \", hvor du finder ny musik, personlige anbefalinger og hitlister.\" }\n ]\n };\n\n const b2: Bullet = {\n type: \"Bullet\",\n children: [{ type: \"Text\", text: \"Find den musik, du har tilføjet til Min Musik, i menuen til venstre. Her finder du også de playlister, som du selv har lavet.\" }]\n };\n\n const b3: Bullet = {\n type: \"Bullet\",\n children: [\n { type: \"Text\", text: \"Lyt til live FM-radio under \" },\n { type: \"Link\", children: [{ type: \"Text\", text: \"Radio\" }], action: NotificationConversion.NavigateToRadio, style: \"inline\" },\n { type: \"Text\", text: \".\" }\n ]\n };\n\n const bg: BulletGroup = { type: \"BulletGroup\", children: [b1, b2, b3] };\n const section: Section = { type: \"Section\", children: [p, bg] };\n\n const notification = createNotificationPreviewModelLocally({\n cover: \"/assets/notification_welcome.svg\",\n notificationType: NotificationType.WelcomeToWeb,\n title: `Velkommen til ${translate(\"AppName\")} på web`,\n content: section,\n trackCount: null,\n score\n });\n return notification;\n}\n\nexport function createNotificationFeatureInstallPWAModel(score: number) {\n const p: Paragraph = {\n type: \"Paragraph\",\n children: [\n {\n type: \"Text\",\n text: `Hent ${translate(\"AppName\")} som app på din computer og få nem adgang til al den musik, du elsker.`\n }\n ]\n };\n\n const link: Link = { type: \"Link\", children: [{ type: \"Text\", text: \"Hent som desktop-app\" }], action: NotificationConversion.InstallPWA, style: \"inline\" };\n const section: Section = { type: \"Section\", children: [p, link] };\n\n const notification = createNotificationPreviewModelLocally({\n cover: \"/assets/notification_install.svg\",\n notificationType: NotificationType.InstallPWA,\n title: `Hent ${translate(\"AppName\")} som desktop-app`,\n content: section,\n trackCount: null,\n score\n });\n\n return notification;\n}\n\nexport function createNotificationFeatureTryMixRadioModel(score: number) {\n const t1: Paragraph = {\n type: \"Paragraph\",\n children: [\n {\n type: \"Text\",\n text: \"More Music stationerne kombinerer det bedste fra radio og streaming.\"\n }\n ]\n };\n\n const t2: Paragraph = {\n type: \"Paragraph\",\n children: [\n {\n type: \"Text\",\n text: \"Du får den variation, du kender fra radio, men med muligheden for at skippe sange.\"\n }\n ]\n };\n\n const t3: Paragraph = {\n type: \"Paragraph\",\n children: [\n {\n type: \"Text\",\n text: \"Vi sørger for en ny musikoplevelse hver gang – helt uden snak og reklamer.\"\n }\n ]\n };\n\n const link: Link = { type: \"Link\", children: [{ type: \"Text\", text: \"Se alle More Music stationer\" }], action: NotificationConversion.NavigateToMixRadios, style: \"inline\" };\n const section: Section = { type: \"Section\", children: [t1, t2, t3, link] };\n\n const notification = createNotificationPreviewModelLocally({\n cover: \"/assets/notification_trymoremusic.svg\",\n notificationType: NotificationType.TryMixRadio,\n title: \"Har du prøvet More Music stationer?\",\n content: section,\n trackCount: null,\n score\n });\n return notification;\n}\n\nexport function createEmptyNotificationsModel() {\n const content: Paragraph = {\n type: \"Paragraph\",\n children: [\n {\n type: \"Text\",\n text: translate(\"NotificationEmptyState\")\n }\n ]\n };\n\n const notification = createNotificationPreviewModelLocally({\n cover: \"/assets/app_icon.svg\",\n notificationType: NotificationType.Empty,\n title: translate(\"NotificationEmptyTitle\"),\n content,\n trackCount: null,\n score: 0\n });\n\n return notification;\n}\n","import type { ConnectionModel } from \"./ConnectionModel\";\nimport { createPlaylistCategoryPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlaylistCategoryPreviewModel } from \"./PlaylistCategoryModel\";\nimport type { ResourceModelInterface, ResourceModelLinkInterface } from \"./ResourceModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { PlaylistCategoryPreviewConnectionFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype PlaylistCategoriesPageData = PlaylistCategoryPreviewConnectionFragment;\n\nexport type PlaylistCategoriesModel = PlaylistCategoriesPageModel;\nexport type PlaylistCategoriesPageModel = { type: DomainModelType.Page } & PlaylistCategoriesPage;\n\ninterface PlaylistCategoriesPage extends ResourceModelLinkInterface, ResourceModelInterface {\n readonly contentType: ContentType.PlaylistCategories;\n readonly playlistCategories: ConnectionModel<PlaylistCategoryPreviewModel> | null;\n}\n\nexport function createPlaylistCategoriesPageModel(data: PlaylistCategoriesPageData): PlaylistCategoriesPageModel {\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n cover: null,\n type: DomainModelType.Page,\n contentType: ContentType.PlaylistCategories,\n playlistCategories: data ? createPlaylistCategoryPreviewConnectionModel(data) : null\n };\n}\n","import type { ConnectionModel } from \"./ConnectionModel\";\nimport { createPlaylistPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlaylistPreviewModel } from \"./PlaylistModel\";\nimport type { ResourceModelInterface, ResourceModelLinkInterface } from \"./ResourceModel\";\nimport type { PlaylistCategoryPageFragment, PlaylistCategoryPreviewFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype PlaylistCategoryPreviewData = PlaylistCategoryPreviewFragment;\ntype PlaylistCategoryPageData = PlaylistCategoryPageFragment;\n\nexport type PlaylistCategoryModel = PlaylistCategoryPreviewModel;\nexport type PlaylistCategoryPreviewModel = ({ type: DomainModelType.Preview } & PlaylistCategoryPreview) | PlaylistCategoryPageModel;\nexport type PlaylistCategoryPageModel = { type: DomainModelType.Page } & PlaylistCategoryPage;\n\ninterface PlaylistCategoryPreview extends ResourceModelLinkInterface, ResourceModelInterface {\n readonly contentType: ContentType.PlaylistCategory;\n readonly title: string;\n}\n\ninterface PlaylistCategoryPage extends PlaylistCategoryPreview {\n readonly playlists: ConnectionModel<PlaylistPreviewModel> | null;\n}\n\nexport function createPlaylistCategoryPreviewModel(data: PlaylistCategoryPreviewData): PlaylistCategoryPreviewModel {\n return {\n contentType: ContentType.PlaylistCategory,\n id: data.id,\n title: data.title,\n graphType: data.__typename,\n cover: data.cover ?? null,\n type: DomainModelType.Preview\n };\n}\n\nexport function createPlaylistCategoryPageModel(data: PlaylistCategoryPageData): PlaylistCategoryPageModel {\n return {\n ...createPlaylistCategoryPreviewModel(data),\n type: DomainModelType.Page,\n playlists: data.playlists ? createPlaylistPreviewConnectionModel(data.playlists) : null\n };\n}\n","import type { TrackPreviewModel } from \".\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createPlaylistTrackPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { ResourceModelLinkInterface } from \"./ResourceModel\";\nimport type { PlaylistPageFragment, PlaylistPlayFragment, PlaylistPreviewFragment } from \"generated/graphql-types\";\nimport { PlaylistVisibility } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype PlaylistPreviewData = PlaylistPreviewFragment;\ntype PlaylistPlayData = PlaylistPlayFragment;\ntype PlaylistPageData = PlaylistPageFragment;\n\nexport type PlaylistModel = PlaylistLinkModel;\nexport type PlaylistLinkModel = ({ type: DomainModelType.Link } & PlaylistLink) | PlaylistPreviewModel;\nexport type PlaylistPreviewModel = ({ type: DomainModelType.Preview } & PlaylistPreview) | PlaylistPlayModel;\nexport type PlaylistPlayModel = ({ type: DomainModelType.Play } & PlaylistPlay) | PlaylistPageModel;\nexport type PlaylistPageModel = { type: DomainModelType.Page } & PlaylistPage;\n\ninterface PlaylistLink extends ResourceModelLinkInterface {\n readonly contentType: ContentType.Playlist;\n readonly title: string;\n}\n\nexport interface PlaylistPreview extends PlaylistLink, PlayQueuePlayableModelInterface {\n createdAt: Date | null;\n duration: number | null;\n sharingUrl: string | null;\n owner: boolean;\n visibility: PlaylistVisibility;\n}\n\ninterface PlaylistPlay extends PlaylistPreview {\n tracks: ConnectionModel<TrackPreviewModel> | null;\n}\n\ninterface PlaylistPage extends PlaylistPlay {\n readonly followersCount: number;\n lastModified?: Date;\n}\n\nexport function createPlaylistPreviewModel(data: PlaylistPreviewData): PlaylistPreviewModel {\n return {\n graphType: data.__typename,\n contentType: ContentType.Playlist,\n id: data.id,\n title: data.title,\n cover: data.cover ?? null,\n createdAt: new Date(data.createdAt),\n trackCount: data.tracksCount ?? null,\n duration: data.duration ?? 0,\n sharingUrl: data.share ?? null,\n owner: data.isOwned,\n visibility: data.visibility,\n type: DomainModelType.Preview\n };\n}\n\nexport function createPlaylistPlayModel(data: PlaylistPlayData): PlaylistPlayModel {\n return {\n ...createPlaylistPreviewModel(data),\n type: DomainModelType.Play,\n tracks: createPlaylistTrackPreviewConnectionModel(data.tracks)\n };\n}\n\nexport function createPlaylistPageModel(data: PlaylistPageData): PlaylistPageModel {\n return {\n ...createPlaylistPlayModel(data),\n type: DomainModelType.Page,\n followersCount: data.followersCount,\n lastModified: new Date(Date.parse(data.modifiedAt))\n };\n}\n\nexport function isPlaylistPublic(playlist: PlaylistPreviewModel | PlaylistPlayModel | PlaylistPageModel | null): boolean {\n if (!playlist) return true;\n return playlist.visibility === PlaylistVisibility.Public;\n}\n","import type { ConnectionModel } from \"./ConnectionModel\";\nimport { createPlaylistPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlaylistPreviewModel } from \"./PlaylistModel\";\nimport type { Recommendation, RecommendationOwner } from \"./RecommendationModel\";\nimport { createRecommendations } from \"./RecommendationModel\";\nimport type { RecommendationPageFragment_PlaylistsRecommendation, RecommendationPreviewFragment_PlaylistsRecommendation } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\ntype PlaylistRecommendationPreviewData = RecommendationPreviewFragment_PlaylistsRecommendation;\ntype PlaylistRecommendationPageData = RecommendationPageFragment_PlaylistsRecommendation;\n\nexport type PlaylistRecommendationModel = PlaylistRecommendationPreviewModel;\nexport type PlaylistRecommendationPreviewModel = ({ type: DomainModelType.Preview } & PlaylistRecommendation) | PlaylistRecommendationPageModel;\nexport type PlaylistRecommendationPageModel = { type: DomainModelType.Page } & PlaylistRecommendationPage;\n\ninterface PlaylistRecommendation extends Recommendation {\n contentType: ContentType.PlaylistRecommendation;\n}\n\ninterface PlaylistRecommendationPage extends PlaylistRecommendation {\n playlists: ConnectionModel<PlaylistPreviewModel> | null;\n}\n\nexport function createPlaylistRecommendationsPreviewModel(data: PlaylistRecommendationPreviewData, owner: RecommendationOwner): PlaylistRecommendationPreviewModel {\n return {\n ...createRecommendations(data, owner),\n contentType: ContentType.PlaylistRecommendation,\n type: DomainModelType.Preview\n };\n}\nexport function createPlaylistRecommendationsPageModel(data: PlaylistRecommendationPageData, owner: RecommendationOwner): PlaylistRecommendationPageModel {\n return {\n ...createRecommendations(data, owner),\n contentType: ContentType.PlaylistRecommendation,\n type: DomainModelType.Page,\n playlists: createPlaylistPreviewConnectionModel(data.playlists)\n };\n}\n","import type { RecentTracksQuery } from \"generated/graphql-types\";\n\nexport type RecentTracksData = RecentTracksQuery[\"me\"];\n\nexport interface RecentTracksModel {\n readonly trackIds: string[];\n}\n\nexport function createRecentTracksModel(data: RecentTracksData): RecentTracksModel {\n return { trackIds: (data.history.recentTracks.items ?? []).map((item) => item.id) };\n}\n","import type { AlbumPreviewModel, ArtistPreviewModel, PlaylistPreviewModel, ResourceModelInterface, TrackPreviewModel } from \".\";\nimport type { AlbumRecommendationPageModel, AlbumRecommendationPreviewModel } from \"./AlbumRecommendationModel\";\nimport { createAlbumRecommendationsPageModel, createAlbumRecommendationsPreviewModel } from \"./AlbumRecommendationModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport type { PlaylistRecommendationPageModel, PlaylistRecommendationPreviewModel } from \"./PlaylistRecommendationModel\";\nimport { createPlaylistRecommendationsPageModel, createPlaylistRecommendationsPreviewModel } from \"./PlaylistRecommendationModel\";\nimport type { TrackRecommendationPreviewModel, TrackRecommendationPlayModel, TrackRecommendationPageModel } from \"./TrackRecommendationModel\";\nimport { createTrackRecommendationsPreviewModel, createTrackRecommendationsPlayModel, createTrackRecommendationsPageModel } from \"./TrackRecommendationModel\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport type { RecommendationPageFragment, RecommendationPlayFragment, RecommendationPreviewFragment } from \"generated/graphql-types\";\nimport { ContentType } from \"models/ModelType\";\n\ntype RecommendationPreviewData = RecommendationPreviewFragment;\ntype RecommendationPlayData = RecommendationPlayFragment;\n\nexport type RecommendationPageData = RecommendationPageFragment;\n\n//TODO: clean up ?\nexport type RecommendationModel = RecommendationPreviewModel | RecommendationPlayModel | RecommendationPageModel;\nexport type RecommendationPreviewModel = AlbumRecommendationPreviewModel | PlaylistRecommendationPreviewModel | TrackRecommendationPreviewModel;\nexport type RecommendationPlayModel = TrackRecommendationPlayModel;\nexport type RecommendationPageModel = AlbumRecommendationPageModel | PlaylistRecommendationPageModel | TrackRecommendationPageModel;\n\nexport type RecommenendationItemModel = RecommendationItemPreviewModel;\nexport type RecommendationItemPreviewModel = AlbumPreviewModel | ArtistPreviewModel | PlaylistPreviewModel | TrackPreviewModel;\n\nexport type RecommendationOwner = ContentType.UserHistory | ContentType.UserRecommendations;\n\nexport interface Recommendation extends ResourceModelInterface {\n readonly id: string;\n readonly title: string;\n readonly subtitle: string;\n readonly owner: RecommendationOwner;\n}\n\nexport function createRecommendations(data: RecommendationPreviewData, owner: RecommendationOwner): Recommendation {\n return {\n graphType: data.__typename,\n id: data.id,\n title: data.title,\n subtitle: data.subtitle ?? \"\",\n cover: data.cover ?? null,\n owner\n };\n}\n\nexport function createRecommendationPreviewModel(data: RecommendationPreviewData, owner: RecommendationOwner): RecommendationPreviewModel {\n switch (data.__typename) {\n case \"AlbumsRecommendation\":\n return createAlbumRecommendationsPreviewModel(data, owner);\n case \"PlaylistsRecommendation\":\n return createPlaylistRecommendationsPreviewModel(data, owner);\n case \"TracksRecommendation\":\n return createTrackRecommendationsPreviewModel(data, owner);\n }\n}\n\nexport function createRecommendationPlayModel(data: RecommendationPlayData, owner: RecommendationOwner): RecommendationPlayModel | null {\n if (data.__typename === \"TracksRecommendation\") return createTrackRecommendationsPlayModel(data, owner);\n log.error({ code: \"web-210405-1940\", msg: DefaultLogMessage.NotImplemented, data: { type: data.__typename } });\n return null;\n}\n\nexport function createRecommendationPageModel(data: RecommendationPageData, owner: RecommendationOwner): RecommendationPageModel {\n switch (data.__typename) {\n case \"AlbumsRecommendation\":\n return createAlbumRecommendationsPageModel(data, owner);\n case \"PlaylistsRecommendation\":\n return createPlaylistRecommendationsPageModel(data, owner);\n case \"TracksRecommendation\":\n return createTrackRecommendationsPageModel(data, owner);\n }\n}\n\nexport function getItemsFromRecommendation(recommendation: RecommendationPageModel): ConnectionModel<AlbumPreviewModel | PlaylistPreviewModel | TrackPreviewModel> | null {\n switch (recommendation.contentType) {\n case ContentType.AlbumRecommendation:\n return recommendation.albums;\n case ContentType.PlaylistRecommendation:\n return recommendation.playlists;\n case ContentType.TrackRecommendation:\n return recommendation.tracks;\n }\n}\n","import type { AlbumPreviewModel } from \"./AlbumModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createAlbumPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { ResourceModelInterface } from \"./ResourceModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { SearchAlbumsPaginationQuery } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\nexport type SearchAlbumResultsModel = SearchAlbumResultsSectionModel;\nexport type SearchAlbumResultsSectionModel = ({ type: DomainModelType.Section } & SearchAlbumResults) | SearchAlbumResultsPageModel;\nexport type SearchAlbumResultsPageModel = { type: DomainModelType.Page } & SearchAlbumResults;\n\ntype SearchResultData = SearchAlbumsPaginationQuery[\"search\"];\n\ninterface SearchAlbumResults extends ResourceModelInterface {\n contentType: ContentType.SearchAlbumResults;\n criterion: string;\n albums: ConnectionModel<AlbumPreviewModel> | null;\n}\n\nfunction createSearchAlbumResults(data: SearchResultData, criterion: string): SearchAlbumResults {\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n cover: null,\n contentType: ContentType.SearchAlbumResults,\n criterion,\n albums: data.albums ? createAlbumPreviewConnectionModel(data.albums) : null\n };\n}\nexport function createSearchAlbumResultsSectionModel(data: SearchResultData, criterion: string): SearchAlbumResultsSectionModel {\n return {\n ...createSearchAlbumResults(data, criterion),\n type: DomainModelType.Section\n };\n}\n\nexport function createSearchAlbumResultsPageModel(data: SearchResultData, criterion: string): SearchAlbumResultsPageModel {\n return {\n ...createSearchAlbumResults(data, criterion),\n type: DomainModelType.Page\n };\n}\n","import type { ArtistPreviewModel } from \"./ArtistModel\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createArtistPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { ResourceModelInterface } from \"./ResourceModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { SearchArtistsPaginationQuery } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\ntype SearchResultData = SearchArtistsPaginationQuery[\"search\"];\n\nexport type SearchArtistResultsModel = SearchArtistResultsSectionModel;\nexport type SearchArtistResultsSectionModel = ({ type: DomainModelType.Section } & SearchArtistResults) | SearchArtistResultsPageModel;\nexport type SearchArtistResultsPageModel = { type: DomainModelType.Page } & SearchArtistResults;\n\ninterface SearchArtistResults extends ResourceModelInterface {\n contentType: ContentType.SearchArtistResults;\n criterion: string;\n artists: ConnectionModel<ArtistPreviewModel> | null;\n}\nfunction createSearchArtistResults(data: SearchResultData, criterion: string): SearchArtistResults {\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n cover: null,\n contentType: ContentType.SearchArtistResults,\n criterion,\n artists: data.artists ? createArtistPreviewConnectionModel(data.artists) : null\n };\n}\nexport function createSearchArtistResultsSectionModel(data: SearchResultData, criterion: string): SearchArtistResultsSectionModel {\n return {\n ...createSearchArtistResults(data, criterion),\n type: DomainModelType.Section\n };\n}\n\nexport function createSearchArtistResultsPageModel(data: SearchResultData, criterion: string): SearchArtistResultsPageModel {\n return {\n ...createSearchArtistResults(data, criterion),\n type: DomainModelType.Page\n };\n}\n","import type { AlbumPreviewModel } from \".\";\nimport { createAlbumPreviewModel } from \"./AlbumModel\";\nimport type { ArtistPreviewModel } from \"./ArtistModel\";\nimport { createArtistPreviewModel } from \"./ArtistModel\";\nimport type { PlaylistPreviewModel } from \"./PlaylistModel\";\nimport { createTrackPlayablePreviewModelFromSearchTrackResult } from \"./SearchTrackResultModel\";\nimport type { TrackPlayablePreviewModel } from \"./TrackPlayableModel\";\nimport type { MixedSearchResultConnectionFragment } from \"generated/graphql-types\";\n\ntype SearchMixedResultPreviewData = NonNullable<MixedSearchResultConnectionFragment[\"items\"]>[number];\n\nexport type SearchMixedResultModel = SearchMixedResultPreviewModel;\nexport type SearchMixedResultPreviewModel = TrackPlayablePreviewModel | AlbumPreviewModel | ArtistPreviewModel | PlaylistPreviewModel;\n\nexport function createSearchMixedResultPreviewModel(data: SearchMixedResultPreviewData): SearchMixedResultPreviewModel {\n switch (data.__typename) {\n case \"AlbumMixedSearchResult\":\n return createAlbumPreviewModel(data.album);\n case \"ArtistMixedSearchResult\":\n return createArtistPreviewModel(data.artist);\n case \"TrackMixedSearchResult\": {\n return createTrackPlayablePreviewModelFromSearchTrackResult(data.track);\n }\n }\n}\n","import type { ConnectionModel } from \"./ConnectionModel\";\nimport { createSearchMixedResultPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { ResourceModelInterface } from \"./ResourceModel\";\nimport type { SearchMixedResultPreviewModel } from \"./SearchMixedResultModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { SearchMixedSectionsFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype SearchResultData = SearchMixedSectionsFragment;\n\nexport type SearchMixedResultsModel = SearchMixedResultsSectionModel;\nexport type SearchMixedResultsSectionModel = { type: DomainModelType.Section } & SearchResultMixedResultsPreview;\n\ninterface SearchResultMixedResultsPreview extends ResourceModelInterface {\n contentType: ContentType.SearchMixedResults;\n mixedResults: ConnectionModel<SearchMixedResultPreviewModel> | null;\n}\n\nexport function createSearchMixedResultsSectionModel(data: SearchResultData): SearchMixedResultsSectionModel {\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n cover: null,\n contentType: ContentType.SearchMixedResults,\n type: DomainModelType.Section,\n mixedResults: data.mixed ? createSearchMixedResultPreviewConnectionModel(data.mixed) : null\n };\n}\n","import type { SearchPlaylistsPaginationQuery } from \"./../../generated/graphql-types\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createPlaylistPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlaylistPreviewModel } from \"./PlaylistModel\";\nimport type { ResourceModelInterface } from \"./ResourceModel\";\nimport { getNextUUID } from \"services/utils\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\ntype SearchResultData = SearchPlaylistsPaginationQuery[\"search\"];\n\nexport type SearchPlaylistResultsModel = SearchPlaylistResultsSectionModel;\nexport type SearchPlaylistResultsSectionModel = ({ type: DomainModelType.Section } & SearchPlaylistResults) | SearchPlaylistResultsPageModel;\nexport type SearchPlaylistResultsPageModel = { type: DomainModelType.Page } & SearchPlaylistResults;\n\ninterface SearchPlaylistResults extends ResourceModelInterface {\n contentType: ContentType.SearchPlaylistResults;\n criterion: string;\n playlists: ConnectionModel<PlaylistPreviewModel> | null;\n}\nfunction createSearchPlaylistResults(data: SearchResultData, criterion: string): SearchPlaylistResults {\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n cover: null,\n contentType: ContentType.SearchPlaylistResults,\n criterion,\n playlists: data.playlists ? createPlaylistPreviewConnectionModel(data.playlists) : null\n };\n}\nexport function createSearchPlaylistResultsSectionModel(data: SearchResultData, criterion: string): SearchPlaylistResultsSectionModel {\n return {\n ...createSearchPlaylistResults(data, criterion),\n type: DomainModelType.Section\n };\n}\n\nexport function createSearchPlaylistResultsPageModel(data: SearchResultData, criterion: string): SearchPlaylistResultsPageModel {\n return {\n ...createSearchPlaylistResults(data, criterion),\n type: DomainModelType.Page\n };\n}\n","import type { ResourceModelInterface } from \".\";\nimport type { SearchPlaylistsSectionFragment } from \"./../../generated/graphql-types\";\nimport type { SearchAlbumResultsModel } from \"./SearchAlbumResultsModel\";\nimport { createSearchAlbumResultsSectionModel } from \"./SearchAlbumResultsModel\";\nimport type { SearchArtistResultsModel } from \"./SearchArtistResultsModel\";\nimport { createSearchArtistResultsSectionModel } from \"./SearchArtistResultsModel\";\nimport type { SearchMixedResultsModel } from \"./SearchMixedResultsModel\";\nimport { createSearchMixedResultsSectionModel } from \"./SearchMixedResultsModel\";\nimport type { SearchPlaylistResultsModel } from \"./SearchPlaylistResultsModel\";\nimport { createSearchPlaylistResultsSectionModel } from \"./SearchPlaylistResultsModel\";\nimport type { SearchTrackResultsModel } from \"./SearchTrackResultsModel\";\nimport { createSearchTrackResultsSectionModel } from \"./SearchTrackResultsModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { SearchMixedSectionsFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype SearchLimitedMainData = SearchMixedSectionsFragment;\ntype SearchLimitedPlaylistData = SearchPlaylistsSectionFragment;\n\nexport type SearchResultModel = { type: DomainModelType.Page; contentType: ContentType.SearchResult } & SearchResult;\n\ninterface SearchResult extends ResourceModelInterface {\n mixedResults: SearchMixedResultsModel | null;\n tracks: SearchTrackResultsModel | null;\n albums: SearchAlbumResultsModel | null;\n artists: SearchArtistResultsModel | null;\n playlists: SearchPlaylistResultsModel | null;\n}\n\nexport function createSearchLimitedMainModel(data: SearchLimitedMainData, criterion: string): SearchResultModel {\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n type: DomainModelType.Page,\n contentType: ContentType.SearchResult,\n cover: null,\n mixedResults: data ? createSearchMixedResultsSectionModel(data) : null,\n tracks: data ? createSearchTrackResultsSectionModel(data, criterion) : null,\n albums: data.albums ? createSearchAlbumResultsSectionModel(data, criterion) : null,\n artists: data.artists ? createSearchArtistResultsSectionModel(data, criterion) : null,\n playlists: null\n };\n}\nexport function createSearchLimitedPlaylistModel(data: SearchLimitedPlaylistData, criterion: string): SearchResultModel {\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n type: DomainModelType.Page,\n contentType: ContentType.SearchResult,\n cover: null,\n mixedResults: null,\n tracks: null,\n albums: null,\n artists: null,\n playlists: createSearchPlaylistResultsSectionModel(data, criterion)\n };\n}\n\nexport function mergeSearchResultModel(a: SearchResultModel | null, b: SearchResultModel | null): SearchResultModel | null {\n if (!a && !b) return null;\n return {\n graphType: a?.graphType ?? b?.graphType,\n id: getNextUUID(),\n type: DomainModelType.Page,\n contentType: ContentType.SearchResult,\n cover: null,\n mixedResults: a?.mixedResults ?? b?.mixedResults ?? null,\n tracks: a?.tracks ?? b?.tracks ?? null,\n albums: a?.albums ?? b?.albums ?? null,\n artists: a?.artists ?? b?.artists ?? null,\n playlists: a?.playlists ?? b?.playlists ?? null\n };\n}\n","import type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { TrackPreviewModel } from \"./TrackModel\";\nimport { createTrackPreviewModel } from \"./TrackModel\";\nimport type { TrackPlayablePreviewModel } from \"./TrackPlayableModel\";\nimport { createTrackPlayablePreview } from \"./TrackPlayableModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { TrackPreviewFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype SearchTrackResultPreviewData = TrackPreviewFragment;\n\nexport type SearchTrackResultModel = SearchTrackResultPreviewModel;\n\ninterface SearchTrackResultPreviewModel extends PlayQueuePlayableModelInterface {\n type: DomainModelType.Preview;\n contentType: ContentType.SearchResultTrack;\n track: TrackPreviewModel;\n}\n\nfunction createSearchTrackResultPreviewModel(data: SearchTrackResultPreviewData): SearchTrackResultPreviewModel {\n return {\n type: DomainModelType.Preview,\n contentType: ContentType.SearchResultTrack,\n graphType: data.__typename,\n id: getNextUUID(),\n cover: data.cover ?? null,\n trackCount: 1,\n track: createTrackPreviewModel(data, 0)\n };\n}\n\nexport function createTrackPlayablePreviewModelFromSearchTrackResult(data: SearchTrackResultPreviewData): TrackPlayablePreviewModel {\n const searchTrack = createSearchTrackResultPreviewModel(data);\n return createTrackPlayablePreview(searchTrack.track, searchTrack);\n}\n","import type { ConnectionModel } from \"./ConnectionModel\";\nimport { createTrackPlayablePreviewConnectionModelFromSearchTrackResult } from \"./ConnectionModel\";\nimport type { ResourceModelInterface } from \"./ResourceModel\";\nimport type { TrackPlayablePreviewModel } from \"./TrackPlayableModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { SearchTracksPaginationQuery } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\nexport type SearchTrackResultsModel = SearchTrackResultsSectionModel;\nexport type SearchTrackResultsSectionModel = ({ type: DomainModelType.Section } & SearchTrackResults) | SearchTrackResultsPageModel;\nexport type SearchTrackResultsPageModel = { type: DomainModelType.Page } & SearchTrackResults;\n\ntype SearchResultData = SearchTracksPaginationQuery[\"search\"];\n\ninterface SearchTrackResults extends ResourceModelInterface {\n contentType: ContentType.SearchTrackResults;\n criterion: string;\n tracks: ConnectionModel<TrackPlayablePreviewModel> | null;\n}\n\nfunction createSearchTrackResults(data: SearchResultData, criterion: string): SearchTrackResults {\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n cover: null,\n contentType: ContentType.SearchTrackResults,\n criterion,\n tracks: data.tracks ? createTrackPlayablePreviewConnectionModelFromSearchTrackResult(data.tracks) : null\n };\n}\nexport function createSearchTrackResultsSectionModel(data: SearchResultData, criterion: string): SearchTrackResultsSectionModel {\n return {\n ...createSearchTrackResults(data, criterion),\n type: DomainModelType.Section\n };\n}\n\nexport function createSearchTrackResultsPageModel(data: SearchResultData, criterion: string): SearchTrackResultsPageModel {\n return {\n ...createSearchTrackResults(data, criterion),\n type: DomainModelType.Page\n };\n}\n","import type { LocationContentType, ResourceModel, ResourceModelInterface } from \".\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\nexport type SkeletonModel = SkeletonPreviewModel;\n\nexport interface SkeletonPreviewModel extends ResourceModelInterface {\n type: DomainModelType.Preview;\n contentType: ContentType.Skeleton;\n parent: ResourceModel | null;\n parentType: LocationContentType;\n estimatedType: LocationContentType;\n}\n\nexport function createSkeletonPreviewModels(parentType: LocationContentType, parent: ResourceModel | null, count: number): SkeletonPreviewModel[] | null {\n const estimatedType = getEstimatedContentType(parentType, parent);\n if (estimatedType == null) return null;\n\n const skeletons: SkeletonPreviewModel[] = [];\n\n for (let i = 0; i < count; i++) {\n const skeleton = createSkeletonPreviewModel(parentType, parent, estimatedType, i);\n skeletons.push(skeleton);\n }\n\n return skeletons;\n}\n\nfunction createSkeletonPreviewModel(parentType: LocationContentType, parent: ResourceModel | null, estimatedType: LocationContentType, index: number): SkeletonPreviewModel {\n return {\n id: `skeleton_${index}`,\n cover: null,\n graphType: undefined,\n type: DomainModelType.Preview,\n contentType: ContentType.Skeleton,\n parentType,\n parent,\n estimatedType\n };\n}\n\nfunction getEstimatedContentType(parentType: LocationContentType, parent: ResourceModel | null): LocationContentType | null {\n if (parent?.contentType === ContentType.LayoutItem) {\n return parent.domainItemType;\n }\n\n switch (parentType) {\n case ContentType.AlbumArtistAlbums:\n case ContentType.AlbumChart:\n case ContentType.AlbumRecommendation:\n case ContentType.ArtistAlbums:\n case ContentType.ArtistAppearsOn:\n case ContentType.ArtistSingles:\n case ContentType.MyMusicAlbums:\n case ContentType.SearchAlbumResults:\n return ContentType.Album;\n\n case ContentType.SearchArtistResults:\n case ContentType.MyMusicArtists:\n case ContentType.ArtistSimilarArtists:\n return ContentType.Artist;\n\n case ContentType.LiveRadioCategory:\n return ContentType.LiveRadioPlayable;\n\n case ContentType.MixRadioCategory:\n case ContentType.MixRadios:\n return ContentType.MixRadio;\n\n case ContentType.PlaylistCategory:\n case ContentType.PlaylistRecommendation:\n case ContentType.SearchPlaylistResults:\n case ContentType.MyMusicPlaylists:\n return ContentType.Playlist;\n\n case ContentType.PlaylistCategories:\n return ContentType.PlaylistCategory;\n\n case ContentType.Queue:\n return ContentType.QueueTrack;\n\n case ContentType.UserHistory:\n case ContentType.UserRecommendations:\n return ContentType.Recommendation;\n\n case ContentType.Album:\n case ContentType.ArtistRadio:\n case ContentType.ArtistTracks:\n case ContentType.EndlessPlay:\n case ContentType.MyMusicTracks:\n case ContentType.Playlist:\n case ContentType.SearchTrackResults:\n case ContentType.TrackChart:\n case ContentType.TrackRadio:\n case ContentType.TrackRecommendation:\n return ContentType.TrackPlayable;\n\n default:\n return null;\n }\n parentType;\n}\n","import type { AlbumLinkModel } from \"./AlbumModel\";\nimport { createAlbumLinkModel } from \"./AlbumModel\";\nimport type { ArtistLinkModel } from \"./ArtistModel\";\nimport { createArtistLinkModel, createFeaturedArtistOnTrackLinkModel } from \"./ArtistModel\";\nimport type { PlayQueuePlayableModelInterface, TrackParentModel } from \"./PlayQueuePlayableModel\";\nimport type { TrackRadioLinkModel } from \"./TrackRadioModel\";\nimport { createTrackRadioLinkModel } from \"./TrackRadioModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { TrackPreviewFragment, TrackWithoutAlbumPreviewFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\nexport type TrackPreviewData = TrackPreviewFragment;\nexport type TrackWithoutAlbumPreviewData = TrackWithoutAlbumPreviewFragment;\n\nexport type TrackModel = TrackPreviewModel;\nexport type TrackPreviewModel = TrackPreview;\n\ninterface Track extends PlayQueuePlayableModelInterface {\n readonly uniqueId: string;\n readonly contentType: ContentType.Track;\n readonly position: number;\n readonly title: string;\n readonly duration: number;\n readonly playbackReportContext: string;\n readonly availableInSubscription: boolean;\n readonly sharingUrl: string | null;\n readonly genre: string;\n readonly artist: ArtistLinkModel;\n readonly featuredArtists: ArtistLinkModel[] | null;\n readonly trackRadio: TrackRadioLinkModel;\n readonly album: AlbumLinkModel;\n}\n\ninterface TrackPreview extends Track {\n type: DomainModelType.Preview;\n}\n\nfunction createTrack(data: TrackWithoutAlbumPreviewData, cover: string | null, position: number, album: AlbumLinkModel): Track {\n return {\n graphType: data.__typename,\n id: data.id,\n uniqueId: getNextUUID(),\n availableInSubscription: data.availableToStream,\n title: data.title,\n duration: data.duration,\n position,\n cover,\n playbackReportContext: data.playbackContext,\n trackCount: 1,\n sharingUrl: null,\n genre: data.genre,\n contentType: ContentType.Track,\n artist: createArtistLinkModel(data.artist),\n featuredArtists: createFeaturedArtistOnTrackLinkModel(data),\n trackRadio: createTrackRadioLinkModel(data),\n album\n };\n}\n\nexport function createTrackPreviewModel(data: TrackPreviewData, position: number): TrackPreviewModel {\n const album = createAlbumLinkModel(data.album);\n return {\n ...createTrack(data, data.cover ?? null, position, album),\n type: DomainModelType.Preview\n };\n}\n\nexport function createTrackNoAlbumPreviewModel(\n data: TrackWithoutAlbumPreviewData,\n cover: string | null,\n album: { id: string; title: string },\n position: number\n): TrackPreviewModel {\n const _album = createAlbumLinkModel({ ...album, __typename: \"CatalogAlbum\" }); //TODO: is typename correct?\n return {\n ...createTrack(data, cover, position, _album),\n type: DomainModelType.Preview\n };\n}\n\nexport function getComparableTrackPlayableId(track: TrackPreviewModel, parent: TrackParentModel) {\n return `${parent.contentType}_${parent.id}_${track.position}_${track.id}`;\n}\n\nexport function getComparableTrackId(track: TrackPreviewModel) {\n return `${track.position}_${track.id}`;\n}\n","import type { PlayQueuePlayableModelInterface, TrackParentModel, TrackPreviewModel } from \".\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\nexport type TrackPlayableModel = TrackPlayablePreviewModel;\nexport type TrackPlayablePreviewModel = { type: DomainModelType.Preview; contentType: ContentType.TrackPlayable } & TrackPlayablePreview;\n\ninterface TrackPlayablePreview extends PlayQueuePlayableModelInterface {\n readonly id: string;\n readonly track: TrackPreviewModel;\n readonly parent: TrackParentModel;\n}\n\nexport function createTrackPlayablePreview(track: TrackPreviewModel, parent: TrackParentModel): TrackPlayablePreviewModel {\n return {\n graphType: track.graphType,\n id: track.id,\n type: DomainModelType.Preview,\n cover: track.cover,\n contentType: ContentType.TrackPlayable,\n track,\n parent,\n trackCount: 1\n };\n}\n","import type { ResourceModelLinkInterface, TrackPreviewModel } from \".\";\nimport type { ConnectionModel } from \"./ConnectionModel\";\nimport { createTrackPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport { getDurationFromTracks } from \"services/playable\";\nimport type { TrackRadioLinkFragment, TrackRadioPageFragment, TrackRadioPlayFragment, TrackRadioPreviewFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype TrackRadioLinkData = TrackRadioLinkFragment;\ntype TrackRadioPreviewData = TrackRadioPreviewFragment;\ntype TrackRadioPlayData = TrackRadioPlayFragment;\ntype TrackRadioPageData = TrackRadioPageFragment;\n\nexport type TrackRadioModel = TrackRadioLinkModel;\nexport type TrackRadioLinkModel = ({ type: DomainModelType.Link } & TrackRadioLink) | TrackRadioPlayModel;\nexport type TrackRadioPlayModel = ({ type: DomainModelType.Play } & TrackRadioPlay) | TrackRadioPageModel;\nexport type TrackRadioPageModel = { type: DomainModelType.Page } & TrackRadioPage;\n\ninterface TrackRadioLink extends ResourceModelLinkInterface {\n readonly contentType: ContentType.TrackRadio;\n readonly title: string;\n}\ntype TrackRadio = TrackRadioLink & PlayQueuePlayableModelInterface;\ntype TrackRadioPreview = TrackRadio;\n\ninterface TrackRadioPlay extends TrackRadioPreview {\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n}\ninterface TrackRadioPage extends TrackRadioPlay {\n readonly duration: number;\n}\n\nexport function createTrackRadioLinkModel(data: TrackRadioLinkData): TrackRadioLinkModel {\n return {\n id: data.id,\n title: data.title,\n type: DomainModelType.Link,\n contentType: ContentType.TrackRadio\n };\n}\nfunction createTrackRadio(data: TrackRadioPreviewData): TrackRadio {\n return {\n ...createTrackRadioLinkModel(data),\n graphType: data.__typename,\n cover: data.cover ?? null,\n trackCount: pageContent.trackRadioPageItemsLimit\n };\n}\n\nexport function createTrackRadioPlayModel(data: TrackRadioPlayData): TrackRadioPlayModel {\n return {\n ...createTrackRadio(data),\n type: DomainModelType.Play,\n tracks: data.trackRadio ? createTrackPreviewConnectionModel(data.trackRadio, 0) : null\n };\n}\n\nexport function createTrackRadioPageModel(data: TrackRadioPageData): TrackRadioPageModel {\n const similarRadioTracks = data.trackRadio ? createTrackPreviewConnectionModel(data.trackRadio, 0) : null;\n return {\n ...createTrackRadio(data),\n type: DomainModelType.Page,\n tracks: similarRadioTracks,\n duration: similarRadioTracks ? getDurationFromTracks(similarRadioTracks.items) : 0\n };\n}\nexport function createTrackRadioPageModelFromPlayModel(model: TrackRadioPlayModel): TrackRadioPageModel {\n const tracks = model.tracks;\n return {\n ...model,\n type: DomainModelType.Page,\n tracks,\n duration: tracks ? getDurationFromTracks(tracks.items) : 0\n };\n}\n","import type { ConnectionModel } from \"./ConnectionModel\";\nimport { createTrackPreviewConnectionModel } from \"./ConnectionModel\";\nimport type { PlayQueuePlayableModelInterface } from \"./PlayQueuePlayableModel\";\nimport type { Recommendation, RecommendationOwner } from \"./RecommendationModel\";\nimport { createRecommendations } from \"./RecommendationModel\";\nimport type { TrackPreviewModel } from \"./TrackModel\";\nimport type {\n RecommendationPreviewFragment_TracksRecommendation,\n RecommendationPlayFragment_TracksRecommendation,\n RecommendationPageFragment_TracksRecommendation\n} from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\ntype TrackRecommendationPreviewData = RecommendationPreviewFragment_TracksRecommendation;\ntype TrackRecommendationPlayData = RecommendationPlayFragment_TracksRecommendation;\ntype TrackRecommendationPageData = RecommendationPageFragment_TracksRecommendation;\n\ninterface TrackRecommendation extends Recommendation, PlayQueuePlayableModelInterface {\n contentType: ContentType.TrackRecommendation;\n}\ninterface TrackRecommendationPlay extends TrackRecommendation {\n tracks: ConnectionModel<TrackPreviewModel> | null;\n}\ntype TrackRecommendationPage = TrackRecommendationPlay;\n\nexport type TrackRecommendationModel = TrackRecommendationPreviewModel;\nexport type TrackRecommendationPreviewModel = ({ type: DomainModelType.Preview } & TrackRecommendation) | TrackRecommendationPlayModel;\nexport type TrackRecommendationPlayModel = ({ type: DomainModelType.Play } & TrackRecommendationPlay) | TrackRecommendationPageModel;\nexport type TrackRecommendationPageModel = { type: DomainModelType.Page } & TrackRecommendationPage;\n\nfunction createTrackRecommendations(data: TrackRecommendationPreviewData, owner: RecommendationOwner): TrackRecommendation {\n return {\n ...createRecommendations(data, owner),\n contentType: ContentType.TrackRecommendation,\n trackCount: null\n };\n}\nexport function createTrackRecommendationsPreviewModel(data: TrackRecommendationPreviewData, owner: RecommendationOwner): TrackRecommendationPreviewModel {\n return {\n ...createTrackRecommendations(data, owner),\n type: DomainModelType.Preview\n };\n}\nexport function createTrackRecommendationsPlayModel(data: TrackRecommendationPlayData, owner: RecommendationOwner): TrackRecommendationPlayModel {\n return {\n ...createTrackRecommendations(data, owner),\n type: DomainModelType.Play,\n tracks: data.tracks ? createTrackPreviewConnectionModel(data.tracks, 0) : null\n };\n}\nexport function createTrackRecommendationsPageModel(data: TrackRecommendationPageData, owner: RecommendationOwner): TrackRecommendationPageModel {\n return {\n ...createTrackRecommendations(data, owner),\n type: DomainModelType.Page,\n tracks: data.tracks ? createTrackPreviewConnectionModel(data.tracks, 0) : null\n };\n}\n","import type { LayoutItemContentModel, LayoutItemContentContentPreviewConnectionModel } from \"models/domain/layoutPage\";\nimport { ContentType } from \"models/ModelType\";\n\nexport function getLayoutPageItemConnectionModelItems(content: LayoutItemContentModel | null): LayoutItemContentContentPreviewConnectionModel | null {\n switch (content?.contentType) {\n case ContentType.AlbumsLayoutItemContent:\n return content.albums;\n case ContentType.ArtistsLayoutItemContent:\n return content.artists;\n case ContentType.ChartsLayoutItemContent:\n return content.charts;\n case ContentType.LiveRadioCategoriesLayoutItemContent:\n return content.liveRadioCategories;\n case ContentType.LiveRadiosLayoutItemContent:\n return content.liveRadios;\n case ContentType.MixRadiosLayoutItemContent:\n return content.mixRadios;\n case ContentType.MixedContentLayoutItemContent:\n return content.mixedContents;\n case ContentType.PlaylistCategoriesLayoutItemContent:\n return content.playlistCategories;\n case ContentType.PlaylistsLayoutItemContent:\n return content.playlists;\n case ContentType.RecommendationsLayoutItemContent:\n return content.userRecommendations;\n case ContentType.TracksLayoutItemContent:\n return content.tracks;\n case ContentType.BannerLayoutItemContent:\n return content.banners;\n case undefined:\n return null;\n }\n}\n","export * from \"./getLayoutPageItemConnectionModelItems\"\n","export * from \"./AlbumArtistAlbums\";\nexport * from \"./AlbumModel\";\nexport * from \"./AlbumRecommendationModel\";\nexport * from \"./ArtistAlbums\";\nexport * from \"./ArtistAlbumsAppearsOn\";\nexport * from \"./ArtistModel\";\nexport * from \"./ArtistRadioModel\";\nexport * from \"./ArtistSimilarArtistsModel\";\nexport * from \"./ArtistSingles\";\nexport * from \"./ArtistTracksModel\";\nexport * from \"./ChartModel\";\nexport * from \"./ConnectionModel\";\nexport * from \"./DiscoverRecommendationsModel\";\nexport * from \"./EndlessPlayModel\";\nexport * from \"./Enums\";\nexport * from \"./HistoryRecommendationsModel\";\nexport * from \"./LiveRadioCategoryModel\";\nexport * from \"./LiveRadioModel\";\nexport * from \"./LiveRadioPlayableModel\";\nexport * from \"./LiveRadioTrackModel\";\nexport * from \"./MixRadioCategoryModel\";\nexport * from \"./MixRadioModel\";\nexport * from \"./MixRadiosModel\";\nexport * from \"./MixedContentModel\";\nexport * from \"./MixedContentTrackModel\";\nexport * from \"./MyMusicAlbumsModel\";\nexport * from \"./MyMusicArtistsModel\";\nexport * from \"./MyMusicPlaylistsModel\";\nexport * from \"./MyMusicTracksModel\";\nexport * from \"./NotificationFeedModel\";\nexport * from \"./NotificationModel\";\nexport * from \"./PlayQueuePlayableModel\";\nexport * from \"./PlayableModel\";\nexport * from \"./PlaylistCategoriesModel\";\nexport * from \"./PlaylistCategoryModel\";\nexport * from \"./PlaylistModel\";\nexport * from \"./PlaylistRecommendationModel\";\nexport * from \"./RecentTracksModel\";\nexport * from \"./RecommendationModel\";\nexport * from \"./ResourceModel\";\nexport * from \"./SearchAlbumResultsModel\";\nexport * from \"./SearchArtistResultsModel\";\nexport * from \"./SearchMixedResultModel\";\nexport * from \"./SearchPlaylistResultsModel\";\nexport * from \"./SearchResultModel\";\nexport * from \"./SearchTrackResultModel\";\nexport * from \"./SearchTrackResultsModel\";\nexport * from \"./SkeletonModel\";\nexport * from \"./TrackModel\";\nexport * from \"./TrackPlayableModel\";\nexport * from \"./TrackRadioModel\";\nexport * from \"./TrackRecommendationModel\";\n","import type { AlbumPreviewModel, ArtistPreviewModel, PlaylistPreviewModel } from \"..\";\nimport type { BannerPreviewModel } from \"../BannerModel\";\nimport type { ChartPreviewModel } from \"../ChartModel\";\nimport type { ConnectionModel } from \"../ConnectionModel\";\nimport {\n createAlbumPreviewConnectionModel,\n createArtistPreviewConnectionModel,\n createBannerPreviewConnectionModel,\n createChartPreviewConnectionModel,\n createLiveRadioCategoryPreviewConnectionModel,\n createLiveRadioPreviewConnectionModel,\n createMixRadioPreviewConnectionModel,\n createMixedContentPreviewConnectionModel,\n createPlaylistCategoryPreviewConnectionModel,\n createPlaylistPreviewConnectionModel,\n createRecommendationPreviewConnectionModel,\n createTrackPreviewConnectionModel\n} from \"../ConnectionModel\";\nimport type { LiveRadioCategoryPreviewModel } from \"../LiveRadioCategoryModel\";\nimport type { LiveRadioPreviewModel } from \"../LiveRadioModel\";\nimport type { MixedContentPreviewModel } from \"../MixedContentModel\";\nimport type { MixRadioPreviewModel } from \"../MixRadioModel\";\nimport { MixRadioLinkParentType } from \"../MixRadioModel\";\nimport type { PlaylistCategoryPreviewModel } from \"../PlaylistCategoryModel\";\nimport type { RecommendationPreviewModel } from \"../RecommendationModel\";\nimport type { TrackPreviewModel } from \"../TrackModel\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport type { LayoutItemContentFragment } from \"generated/graphql-types\";\nimport { ContentType } from \"models/ModelType\";\n\nexport type LayoutItemContentModel =\n | AlbumsContent\n | ArtistsContent\n | BannersContent\n | ChartsContent\n | LiveRadioCategoriesContent\n | LiveRadiosContent\n | MixRadiosContent\n | PlaylistCategoriesContent\n | MixedContentContent\n | PlaylistsContent\n | TracksContent\n | RecommendationsContent;\n\ninterface AlbumsContent {\n contentType: ContentType.AlbumsLayoutItemContent;\n readonly albums: ConnectionModel<AlbumPreviewModel> | null;\n}\n\ninterface ArtistsContent {\n contentType: ContentType.ArtistsLayoutItemContent;\n readonly artists: ConnectionModel<ArtistPreviewModel> | null;\n}\n\ninterface BannersContent {\n contentType: ContentType.BannerLayoutItemContent;\n readonly banners: ConnectionModel<BannerPreviewModel> | null;\n}\n\ninterface ChartsContent {\n contentType: ContentType.ChartsLayoutItemContent;\n readonly charts: ConnectionModel<ChartPreviewModel> | null;\n}\n\ninterface LiveRadioCategoriesContent {\n contentType: ContentType.LiveRadioCategoriesLayoutItemContent;\n readonly liveRadioCategories: ConnectionModel<LiveRadioCategoryPreviewModel> | null;\n}\n\ninterface LiveRadiosContent {\n contentType: ContentType.LiveRadiosLayoutItemContent;\n readonly liveRadios: ConnectionModel<LiveRadioPreviewModel> | null;\n}\n\ninterface MixRadiosContent {\n contentType: ContentType.MixRadiosLayoutItemContent;\n readonly mixRadios: ConnectionModel<MixRadioPreviewModel> | null;\n}\n\ninterface PlaylistCategoriesContent {\n contentType: ContentType.PlaylistCategoriesLayoutItemContent;\n readonly playlistCategories: ConnectionModel<PlaylistCategoryPreviewModel> | null;\n}\n\ninterface MixedContentContent {\n contentType: ContentType.MixedContentLayoutItemContent;\n readonly mixedContents: ConnectionModel<MixedContentPreviewModel> | null;\n}\n\ninterface PlaylistsContent {\n contentType: ContentType.PlaylistsLayoutItemContent;\n readonly playlists: ConnectionModel<PlaylistPreviewModel> | null;\n}\n\nexport interface TracksContent {\n contentType: ContentType.TracksLayoutItemContent;\n readonly tracks: ConnectionModel<TrackPreviewModel> | null;\n}\n\ninterface RecommendationsContent {\n contentType: ContentType.RecommendationsLayoutItemContent;\n readonly userRecommendations: ConnectionModel<RecommendationPreviewModel> | null;\n}\n\ntype LayoutItemContentContentData<T extends string> = LayoutItemContentFragment[\"content\"] & { __typename: T };\n\nexport function createLayoutItemContentModel(data: LayoutItemContentContentData<string>, pageId: string, itemId: string): LayoutItemContentModel | null {\n switch (data?.__typename) {\n case \"AlbumsLayoutItemContent\":\n return createLayoutPageItemAlbumsSectionModel(data);\n case \"ArtistsLayoutItemContent\":\n return createLayoutPageItemArtistsSectionModel(data);\n case \"ChartsLayoutItemContent\":\n return createLayoutPageItemChartsSectionModel(data);\n case \"LiveRadioCategoriesLayoutItemContent\":\n return createLayoutPageItemLiveRadioCategoriesSectionModel(data);\n case \"LiveRadiosLayoutItemContent\":\n return createLayoutPageItemLiveRadiosSectionModel(data);\n case \"MixedContentLayoutItemContent\":\n return createLayoutPageItemMixedContentsSectionModel(data);\n case \"PlaylistCategoriesLayoutItemContent\":\n return createLayoutPageItemPlaylistCategoriesSectionModel(data);\n case \"PlaylistsLayoutItemContent\":\n return createLayoutPageItemPlaylistsSectionModel(data);\n case \"MixRadiosLayoutItemContent\":\n return createLayoutPageItemMixRadiosSectionModel(data, pageId, itemId);\n case \"TracksLayoutItemContent\":\n return createLayoutPageItemTracksSectionModel(data);\n case \"RecommendationsLayoutItemContent\":\n return createLayoutPageItemRecommendationsSectionModel(data);\n case \"BannerContentLayoutItemContent\":\n return createLayoutPageItemBannersSectionModel(data);\n default: {\n log.error({ code: \"web-210505-2104\", msg: DefaultLogMessage.NotImplemented, data: { type: data?.__typename } });\n return null;\n }\n }\n}\n\nfunction createLayoutPageItemAlbumsSectionModel(data: LayoutItemContentContentData<\"AlbumsLayoutItemContent\">): AlbumsContent {\n return {\n contentType: ContentType.AlbumsLayoutItemContent,\n albums: data.albums ? createAlbumPreviewConnectionModel(data.albums) : null\n };\n}\n\nfunction createLayoutPageItemArtistsSectionModel(data: LayoutItemContentContentData<\"ArtistsLayoutItemContent\">): ArtistsContent {\n return {\n contentType: ContentType.ArtistsLayoutItemContent,\n artists: data.artists ? createArtistPreviewConnectionModel(data.artists) : null\n };\n}\n\nfunction createLayoutPageItemBannersSectionModel(data: LayoutItemContentContentData<\"BannerContentLayoutItemContent\">): BannersContent {\n return {\n contentType: ContentType.BannerLayoutItemContent,\n banners: data.banners ? createBannerPreviewConnectionModel(data.banners) : null\n };\n}\n\nfunction createLayoutPageItemChartsSectionModel(data: LayoutItemContentContentData<\"ChartsLayoutItemContent\">): ChartsContent {\n return {\n contentType: ContentType.ChartsLayoutItemContent,\n charts: data.charts ? createChartPreviewConnectionModel(data.charts) : null\n };\n}\n\nfunction createLayoutPageItemLiveRadioCategoriesSectionModel(data: LayoutItemContentContentData<\"LiveRadioCategoriesLayoutItemContent\">): LiveRadioCategoriesContent {\n return {\n contentType: ContentType.LiveRadioCategoriesLayoutItemContent,\n liveRadioCategories: data.liveRadioCategories ? createLiveRadioCategoryPreviewConnectionModel(data.liveRadioCategories) : null\n };\n}\n\nfunction createLayoutPageItemLiveRadiosSectionModel(data: LayoutItemContentContentData<\"LiveRadiosLayoutItemContent\">): LiveRadiosContent {\n return {\n contentType: ContentType.LiveRadiosLayoutItemContent,\n liveRadios: data.liveRadios ? createLiveRadioPreviewConnectionModel(data.liveRadios) : null\n };\n}\n\nfunction createLayoutPageItemMixRadiosSectionModel(data: LayoutItemContentContentData<\"MixRadiosLayoutItemContent\">, pageId: string, itemId: string): MixRadiosContent {\n return {\n contentType: ContentType.MixRadiosLayoutItemContent,\n mixRadios: data.mixRadios ? createMixRadioPreviewConnectionModel(data.mixRadios, { type: MixRadioLinkParentType.LayoutPageItem, pageId, itemId }) : null\n };\n}\n\nfunction createLayoutPageItemPlaylistCategoriesSectionModel(data: LayoutItemContentContentData<\"PlaylistCategoriesLayoutItemContent\">): PlaylistCategoriesContent {\n return {\n contentType: ContentType.PlaylistCategoriesLayoutItemContent,\n playlistCategories: data.playlistCategories ? createPlaylistCategoryPreviewConnectionModel(data.playlistCategories) : null\n };\n}\n\nfunction createLayoutPageItemMixedContentsSectionModel(data: LayoutItemContentContentData<\"MixedContentLayoutItemContent\">): MixedContentContent {\n return {\n contentType: ContentType.MixedContentLayoutItemContent,\n mixedContents: data.mixedContents ? createMixedContentPreviewConnectionModel(data.mixedContents) : null\n };\n}\n\nfunction createLayoutPageItemPlaylistsSectionModel(data: LayoutItemContentContentData<\"PlaylistsLayoutItemContent\">): PlaylistsContent {\n return {\n contentType: ContentType.PlaylistsLayoutItemContent,\n playlists: data.playlists ? createPlaylistPreviewConnectionModel(data.playlists) : null\n };\n}\n\nexport function createLayoutPageItemTracksSectionModel(data: LayoutItemContentContentData<\"TracksLayoutItemContent\">): TracksContent {\n return {\n contentType: ContentType.TracksLayoutItemContent,\n tracks: data.tracks ? createTrackPreviewConnectionModel(data.tracks, 0) : null\n };\n}\n\nfunction createLayoutPageItemRecommendationsSectionModel(data: LayoutItemContentContentData<\"RecommendationsLayoutItemContent\">): RecommendationsContent {\n return {\n contentType: ContentType.RecommendationsLayoutItemContent,\n userRecommendations: data.recommendations ? createRecommendationPreviewConnectionModel(data.recommendations, ContentType.UserRecommendations) : null\n };\n}\n\nexport type LayoutItemContentContentPreviewModel =\n | AlbumPreviewModel\n | ArtistPreviewModel\n | BannerPreviewModel\n | ChartPreviewModel\n | LiveRadioCategoryPreviewModel\n | LiveRadioPreviewModel\n | MixRadioPreviewModel\n | MixedContentPreviewModel\n | PlaylistCategoryPreviewModel\n | PlaylistPreviewModel\n | RecommendationPreviewModel\n | TrackPreviewModel;\n\nexport type LayoutItemContentContentPreviewConnectionModel = ConnectionModel<LayoutItemContentContentPreviewModel>;\n","import type { LayoutItemSectionConnectionModel } from \"../ConnectionModel\";\nimport { createLayoutItemConnectionModel } from \"../ConnectionModel\";\nimport type { ResourceModelInterface } from \"../ResourceModel\";\nimport { getNextUUID } from \"services/utils\";\nimport type { LayoutPageFragment } from \"generated/graphql-types\";\n\nexport interface LayoutItemGroupModel extends ResourceModelInterface {\n items: LayoutItemSectionConnectionModel | null;\n}\n\nexport function createLayoutItemGroupModel(data: NonNullable<LayoutPageFragment[\"groups\"][\"items\"]>[number], pageId: string): LayoutItemGroupModel {\n return {\n graphType: data.__typename,\n id: getNextUUID(),\n cover: null,\n items: data.items ? createLayoutItemConnectionModel(data.items, pageId) : null\n };\n}\n","import type { LayoutItemContentModel, TracksContent } from \"./LayoutItemContentModel\";\nimport { createLayoutPageItemTracksSectionModel, createLayoutItemContentModel } from \"./LayoutItemContentModel\";\nimport type { ResourceModelInterface, LocationContentType, PlayQueuePlayableModelInterface } from \"..\";\nimport { ResourceDisplayType } from \"..\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport type { LayoutItemSectionFragment, LayoutItemPageFragment, LayoutItemTracksPlayFragment } from \"generated/graphql-types\";\nimport { PageItemDisplayType } from \"generated/graphql-types\";\nimport { DomainModelType, ContentType } from \"models/ModelType\";\n\nexport type LayoutItemModel = LayoutItemSectionModel | LayoutItemPageModel | TracksLayoutItemPlayModel;\n\ninterface Item extends ResourceModelInterface {\n readonly name: string | null;\n contentType: ContentType.LayoutItem;\n readonly id: string;\n readonly pageId: string;\n domainItemType: LocationContentType | null;\n}\n\nexport interface LayoutItemSectionModel extends Item {\n type: DomainModelType.Section;\n displayType: ResourceDisplayType;\n refreshFrequency: number | null;\n content: LayoutItemContentModel | null;\n}\n\nexport interface TracksLayoutItemSectionModel extends LayoutItemSectionModel, PlayQueuePlayableModelInterface {\n content: TracksContent;\n}\n\nexport interface TracksLayoutItemPlayModel extends Item, PlayQueuePlayableModelInterface {\n content: TracksContent;\n type: DomainModelType.Play;\n}\n\nexport interface LayoutItemPageModel extends Item {\n type: DomainModelType.Page;\n displayType: ResourceDisplayType;\n content: LayoutItemContentModel | null;\n}\n\nfunction createItem(data: LayoutItemSectionFragment | LayoutItemPageFragment | LayoutItemTracksPlayFragment, pageId: string): Item {\n return {\n graphType: data.__typename,\n contentType: ContentType.LayoutItem,\n cover: null,\n id: data.id,\n domainItemType: getDomainItemType(data),\n name: data.title ?? null,\n pageId\n };\n}\n\nexport function createLayoutItemSkeletonSectionModel(data: LayoutItemSectionFragment, pageId: string): LayoutItemSectionModel {\n return {\n ...createItem(data, pageId),\n type: DomainModelType.Section,\n displayType: data?.displayType ? getResourceDisplayTypeFromItemDisplayType(data.displayType) : ResourceDisplayType.Unknown,\n refreshFrequency: data.refreshFrequency ?? null,\n content: null\n };\n}\n\nexport function createTracksLayoutItemPlayModel(data: LayoutItemTracksPlayFragment, pageId: string): TracksLayoutItemPlayModel | null {\n if (data.content?.__typename !== \"TracksLayoutItemContent\") return null;\n\n return {\n ...createItem(data, pageId),\n type: DomainModelType.Play,\n contentType: ContentType.LayoutItem,\n content: createLayoutPageItemTracksSectionModel(data.content), //TODO: v2.\n trackCount: null\n };\n}\n\nexport function createLayoutItemPageModel(data: LayoutItemPageFragment, pageId: string, displayType?: ResourceDisplayType): LayoutItemPageModel {\n const content = data.content ? createLayoutItemContentModel(data.content, pageId, data.id) : null;\n return {\n ...createItem(data, pageId),\n type: DomainModelType.Page,\n contentType: ContentType.LayoutItem,\n displayType: displayType ?? getDisplayType(content?.contentType ?? null),\n content\n };\n}\nconst getDisplayType = (type: NonNullable<LayoutItemSectionModel[\"content\"]>[\"contentType\"] | null) => {\n switch (type) {\n case ContentType.AlbumsLayoutItemContent:\n case ContentType.ArtistsLayoutItemContent:\n case ContentType.ChartsLayoutItemContent:\n case ContentType.LiveRadioCategoriesLayoutItemContent:\n case ContentType.LiveRadiosLayoutItemContent:\n case ContentType.MixRadiosLayoutItemContent:\n case ContentType.MixedContentLayoutItemContent:\n case ContentType.PlaylistCategoriesLayoutItemContent:\n case ContentType.PlaylistsLayoutItemContent:\n case ContentType.RecommendationsLayoutItemContent:\n case ContentType.BannerLayoutItemContent: // todo?\n case null:\n return ResourceDisplayType.Grid;\n case ContentType.TracksLayoutItemContent:\n return ResourceDisplayType.List;\n }\n};\n\nfunction getResourceDisplayTypeFromItemDisplayType(displayType: PageItemDisplayType | null): ResourceDisplayType {\n switch (displayType) {\n case PageItemDisplayType.Scroller:\n return ResourceDisplayType.Scroller;\n case PageItemDisplayType.Grid:\n return ResourceDisplayType.Grid;\n case PageItemDisplayType.LargeScroller:\n return ResourceDisplayType.LargeScroller;\n case PageItemDisplayType.List:\n return ResourceDisplayType.List;\n case PageItemDisplayType.Single:\n return ResourceDisplayType.Single;\n case PageItemDisplayType.LargeSingle:\n return ResourceDisplayType.LargeSingle;\n case PageItemDisplayType.PromoSingle:\n return ResourceDisplayType.PromoSingle;\n default:\n log.warn({ code: \"web-210505-1946\", msg: DefaultLogMessage.NotImplemented, data: { displayType } });\n return ResourceDisplayType.Unknown;\n }\n}\n\nfunction getDomainItemType(item: LayoutItemSectionFragment | LayoutItemPageFragment | LayoutItemTracksPlayFragment): LocationContentType | null {\n switch (item.content?.__typename) {\n case \"AlbumsLayoutItemContent\":\n return ContentType.Album;\n case \"ArtistsLayoutItemContent\":\n return ContentType.Artist;\n case \"ChartsLayoutItemContent\":\n return ContentType.Chart;\n case \"LiveRadiosLayoutItemContent\":\n return ContentType.LiveRadioPlayable;\n case \"LiveRadioCategoriesLayoutItemContent\":\n return ContentType.LiveRadioCategory;\n case \"MixedContentLayoutItemContent\":\n return ContentType.MixedContent;\n case \"PlaylistCategoriesLayoutItemContent\":\n return ContentType.PlaylistCategory;\n case \"PlaylistsLayoutItemContent\":\n return ContentType.Playlist;\n case \"MixRadiosLayoutItemContent\":\n return ContentType.MixRadio;\n case \"TracksLayoutItemContent\":\n return ContentType.TrackPlayable;\n case \"RecommendationsLayoutItemContent\":\n return ContentType.Recommendation;\n case \"BannerContentLayoutItemContent\":\n return ContentType.FrontPage; // todo: is this right?\n default:\n return null;\n }\n}\n","import type { LayoutItemSectionModel } from \"./LayoutItemModel\";\nimport type { ResourceModelInterface } from \"..\";\nimport type { LayoutItemGroupConnectionModel } from \"../ConnectionModel\";\nimport { createLayoutPageGroupConnectionModel } from \"../ConnectionModel\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { LayoutPageFragment } from \"generated/graphql-types\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\nexport interface LayoutPageModel extends ResourceModelInterface {\n type: DomainModelType.Page;\n contentType: ContentType.LayoutPage;\n groups: LayoutItemGroupConnectionModel | null;\n title: string;\n}\n\nexport function createLayoutPageModel(data: LayoutPageFragment): LayoutPageModel {\n return {\n graphType: data.__typename,\n type: DomainModelType.Page,\n contentType: ContentType.LayoutPage,\n id: data.id,\n cover: null,\n groups: data.groups ? createLayoutPageGroupConnectionModel(data.groups, data.id) : null,\n title: data.title\n };\n}\n\nexport function createLayoutPagePreviewModel(id: string, title: string): LayoutPageModel {\n return {\n graphType: \"Layout\",\n type: DomainModelType.Page,\n contentType: ContentType.LayoutPage,\n id,\n cover: null,\n groups: null,\n title\n };\n}\n\nexport function fillLayoutPageWithItemSection(page: LayoutPageModel, item: LayoutItemSectionModel) {\n if (item.id == null) {\n log.error({ code: \"web-211018-1554\", msg: DefaultLogMessage.UnexpectedNull });\n return page;\n }\n\n if (page.groups?.items == null) {\n log.error({ code: \"web-211018-1551\", msg: DefaultLogMessage.UnexpectedNull });\n return page;\n }\n\n const index = getGroupAndItemIndex(page, item.id);\n if (index == null) {\n log.error({ code: \"web-211018-1556\", msg: DefaultLogMessage.UnexpectedNull });\n return page;\n }\n\n const newPage = { ...page };\n\n if (newPage.groups?.items == null) {\n log.error({ code: \"web-211018-1559\", msg: DefaultLogMessage.UnexpectedNull });\n return page;\n }\n\n newPage.groups = { ...newPage.groups };\n newPage.groups.items = [...newPage.groups.items];\n const newGroup = newPage.groups.items[index.groupIndex];\n\n if (newGroup.items?.items == null) {\n log.error({ code: \"web-211018-1559\", msg: DefaultLogMessage.UnexpectedNull });\n return page;\n }\n\n newGroup.items = { ...newGroup.items };\n newGroup.items.items = [...newGroup.items.items];\n newGroup.items.items[index.itemIndex] = item;\n return newPage;\n}\n\nfunction getGroupAndItemIndex(page: LayoutPageModel, itemId: string): { groupIndex: number; itemIndex: number } | null {\n const groups = page.groups?.items;\n if (!groups) return null;\n\n let groupIndex = 0;\n for (const group of groups) {\n const items = group.items?.items;\n if (items) {\n let itemIndex = 0;\n for (const item of items) {\n if (item.id === itemId) {\n return { groupIndex, itemIndex };\n }\n itemIndex++;\n }\n }\n groupIndex++;\n }\n return null;\n}\n","export * from \"./LayoutPageModel\";\nexport * from \"./LayoutItemModel\";\nexport * from \"./LayoutItemContentModel\";\nexport * from \"./LayoutItemGroupModel\";","import { h } from \"preact\";\n\nexport enum ModalOpenResult {\n Submit,\n Dismiss\n}\n\nexport interface AppModalModel {\n open: h.JSX.Element | null;\n}\n","export enum LanguageSetting {\n English = \"English\",\n Danish = \"Danish\",\n Auto = \"Automatic\"\n}\n\nexport enum SoundQualitySetting {\n High = \"High\",\n Normal = \"Normal\",\n Low = \"Low\"\n}\n\nexport enum Language {\n English = \"English\",\n Danish = \"Danish\"\n}\n","\n\nexport enum RepeatStatus {\n All,\n None,\n One\n}","export enum SearchState {\n Failed = \"failed\",\n Fetching = \"fetching\",\n None = \"none\",\n Success = \"success\"\n}\n","export enum ShuffleState {\n Heavy = \"Heavy\",\n Light = \"Light\",\n Off = \"Off\"\n}\n","export enum ThemeSetting\n{\n Light = \"light\",\n Dark = \"dark\",\n Auto = \"auto\"\n}\n\nexport enum Theme\n{\n Light = \"light\",\n Dark = \"dark\"\n}","export * from \"./AppContextMenuModel\";\nexport * from \"./items/ContextMenuSheetModel\";\nexport * from \"./items/ContextMenuItemModel\";\nexport * from \"./items/ContextMenuLinkModel\";\n","import { ContextMenuLinkModel } from \"./ContextMenuLinkModel\";\nimport { ContextMenuSheetModel } from \"./ContextMenuSheetModel\";\nimport { OpenMenuResult } from \"services/contextMenus\";\n\nexport enum ContextMenuAlign {\n Below,\n Right,\n UpperRight\n}\n\nexport interface ContextMenuScreenPosition {\n x: number;\n y: number;\n}\n\nexport enum ContextMenuPositionType {\n Anchor,\n ScreenPosition,\n ScreenCorner,\n}\n\nexport enum ContextMenuItemType {\n Link,\n Sheet\n}\n\nexport type ContextMenuPosition =\n | { type: ContextMenuPositionType.Anchor; element: HTMLElement }\n | { type: ContextMenuPositionType.ScreenPosition; screenPosition: ContextMenuScreenPosition }\n | { type: ContextMenuPositionType.ScreenCorner; screenPosition: ContextMenuScreenPosition };\n\nexport type ContextMenuItemModel = ContextMenuLinkModel | ContextMenuSheetModel;\n\nexport interface ContextMenuItemModelBase {\n children: ContextMenuItemModel[];\n id: string;\n layer: ContextMenuLayerModel;\n parent: ContextMenuItemModel | null;\n position: ContextMenuPosition | null;\n tree: ContextMenuTreeModel;\n}\n\nexport interface ContextMenuTreeModel {\n layers: ContextMenuLayerModel[];\n}\n\nexport interface ContextMenuLayerModel {\n onClose?: (result: OpenMenuResult) => void;\n}\n","import { h } from \"preact\";\nimport { ContextMenuAlign } from \"..\";\nimport { ContextMenuItemType, ContextMenuItemModelBase } from \"./ContextMenuItemModel\";\n\nexport enum ContextMenuType {\n Playable = \"playable\",\n AddToPlaylist = \"addToPlaylist\",\n User = \"user\"\n}\n\nexport enum ContextMenuSheetWidth {\n Default = \"Default\",\n Wide = \"Wide\"\n}\n\nexport interface ContextMenuSheetModel extends ContextMenuItemModelBase {\n type: ContextMenuItemType.Sheet;\n align: ContextMenuAlign;\n gap: boolean;\n content: h.JSX.Element;\n width: ContextMenuSheetWidth;\n}\n","export * from \"./RepeatStatus\";\nexport * from \"./SearchState\";\nexport * from \"./ShuffleState\";\nexport * from \"./Theme\";\n","import type { LocationContentType, ResourceDisplayType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport type { MyMusicPageContentType } from \"components/templates/myMusicPage\";\n\nexport enum NavigationPageRootName {\n Deeplink = \"Deeplink\",\n FrontPage = \"FrontPage\",\n MyMusicTracks = \"MyMusicTracks\",\n MyMusicArtists = \"MyMusicArtists\",\n MyMusicPlaylists = \"MyMusicPlaylists\",\n MyMusicAlbums = \"MyMusicAlbums\",\n Radio = \"Radio\",\n Search = \"Search\",\n Explore = \"Explore\",\n NotificationFeed = \"NotificationFeed\",\n EndlessPlay = \"EndlessPlay\"\n}\nexport const getMyMusicRoot = (type: MyMusicPageContentType): NavigationPageRootName => {\n switch (type) {\n case ContentType.MyMusicAlbums:\n return NavigationPageRootName.MyMusicAlbums;\n case ContentType.MyMusicArtists:\n return NavigationPageRootName.MyMusicArtists;\n case ContentType.MyMusicPlaylists:\n return NavigationPageRootName.MyMusicPlaylists;\n case ContentType.MyMusicTracks:\n return NavigationPageRootName.MyMusicTracks;\n }\n};\nexport interface NavigationModel {\n page: NavigationPageModel | null;\n scrollStates?: Record<string, ScrollStateModel | null>;\n from: {\n link: NavigationLinkModel;\n preview: NavigationPreviewModel;\n section: NavigationSectionModel;\n page?: NavigationPageModel;\n } | null;\n}\n\nexport interface ScrollStateModel {\n x: number | null;\n y: number | null;\n}\n\ninterface NavigationBaseModel {\n id?: string | null;\n name: string | null;\n type?: LocationContentType;\n}\n\nexport interface NavigationPageModel extends NavigationBaseModel {\n sections: NavigationSectionModel[];\n root: NavigationPageRootName | null;\n windowTitle: string | null;\n}\n\nexport interface NavigationSectionModel extends NavigationBaseModel {\n rank: number | null;\n visibleRank: number | null;\n displayType: ResourceDisplayType | null;\n isHidden: boolean;\n}\n\nexport interface NavigationPreviewModel extends NavigationBaseModel {\n rank: number | null;\n}\n\nexport type NavigationLinkModel = NavigationBaseModel;\n","export * from \"./NavigationModel\";\nexport * from \"./NavigationStackModel\";","import { initDebug } from \"./debug\";\nimport { saveAppSessionHandler } from \"./operations/appSessionHandler\";\nimport { restorePlaybackReports } from \"./operations/reports\";\nimport { copySessionStorage, deleteSessionStorage, restoreSessionStorage } from \"./operations/session\";\nimport { getTokensNow, saveTokensNow } from \"./operations/sessionTokens\";\nimport { getNextUUID } from \"../../services/utils\";\nimport { log, tryTransferReportsFromSharedStorageAndFinishInCurrentSession } from \"services/logger\";\n\nconst sessionIdKey = \"sessionId\";\nconst sessionsKey = \"AppSessions\";\nconst sessionActivityTimeout = 2 * 24 * 60 * 60 * 1_000;\nconst sessionActivityUpdateInterval = 10_000;\nconst sessionsInvalidateUpdateInterval = 10_000;\nconst sleepTimeout = 20_000;\n\nlet loaded = true;\n\nexport interface AppSession {\n id: string;\n storageId: string;\n activity: number;\n loaded: boolean;\n created: number;\n tokenStorageId: string;\n}\n\nexport interface AppSessionHandler {\n sessions: AppSession[];\n}\n\nlet _session: AppSession; // are we sure this is being updated everytime the persisted sessions are?\n\nexport function getAppSession() {\n return _session;\n}\n\nexport async function initAppSession() {\n initDebug();\n\n try {\n _session = await getOrCreateSession();\n // console.log(\"----session\", _session);\n\n window.setTimeout(() => runSessionActivityUpdate(), sessionActivityUpdateInterval);\n window.setTimeout(() => runSessionsInvalidateUpdate(), sessionsInvalidateUpdateInterval);\n window.setTimeout(() => cleanupOrphanSessionData(), 5000);\n } catch (e) {\n console.error({ code: \"web-220217-1313\", msg: \"app session could not initiate\", error: e });\n throw e;\n }\n}\n\nexport async function unloadAppSesssion() {\n await unloadSession();\n}\n\nexport function ensureOwnTokenSession() {\n // console.log(\"---ensure own token session\");\n // call on login and logout\n\n const { session, handler } = getCurrentHandlerAndSession(true);\n if (!session || !handler) return;\n\n const own = !handler.sessions.find((n) => n.id !== session.id && n.tokenStorageId === session.tokenStorageId);\n if (!own) seperateTokenSession(handler, session);\n}\n\nfunction seperateTokenSession(handler: AppSessionHandler, session: AppSession) {\n session.tokenStorageId = getNextUUID();\n if (_session.id == session.id) {\n _session.tokenStorageId = session.tokenStorageId;\n }\n saveAppSessionHandler(handler);\n}\n\nasync function getOrCreateSession(): Promise<AppSession> {\n const handler = getOrCreateSessionHandler();\n addTokenStorageIdToExistingAppSessions(handler);\n\n let session = tryGetSessionFromWindowName(handler);\n const relevant = tryGetRelevantSession(handler);\n\n if (session != null && relevant == session) {\n // dodgy object comparison that just happens to work because they both come from the same deserialized handler data\n // console.log(\"--- getOrCreateSession found same session\", relevant);\n } else if (relevant != null) {\n if (!isSessionLoaded(relevant)) {\n session = claimSession(handler, relevant);\n\n // console.log(\"--- getOrCreateSession taking over session\", relevant);\n session = relevant;\n } else {\n // console.log(\"--- getOrCreateSession copying session\", relevant);\n session = await copySession(handler, relevant);\n }\n } else {\n // console.log(\"--- getOrCreateSession creating new session\");\n session = createSession(handler, undefined);\n }\n\n setCurrentSession(handler, session);\n\n return session;\n}\n\nfunction addTokenStorageIdToExistingAppSessions(handler: AppSessionHandler) {\n if (!handler.sessions.find((n) => !n.tokenStorageId)) return;\n // console.log(\"app sessions need token storage ids\");\n\n // if sessions share refreshtokens, then make them share a tokenstorageid\n // move tokens from the old storageId to the new tokenStorageId\n\n handler.sessions.forEach((session) => {\n if (!session.tokenStorageId) {\n // check if there is a refreshtoken associated with the storageid\n // console.log(`--- processing session with storageId: ${session.storageId}`, session);\n const tokens = getTokensNow(session.storageId);\n if (tokens.refreshToken) {\n const tokenStorageId = findTokenStorageIdWithRefreshToken(handler, tokens.refreshToken);\n if (tokenStorageId) {\n // another session with a tokenStorageId shares our refreshtoken, so we use its tokenStorageId\n // console.log(\"---copying tokenStorageId\");\n session.tokenStorageId = tokenStorageId;\n } else {\n // there's no tokenStorageId with our refreshtoken, so we create one and copy the tokens to it\n // console.log(\"---creating tokenStorageId and migrating tokens\");\n session.tokenStorageId = getNextUUID();\n saveTokensNow(tokens.refreshToken, tokens.accessToken, false, session.tokenStorageId);\n }\n } else {\n // console.log(\"---new tokenStorageId\");\n session.tokenStorageId = getNextUUID();\n }\n }\n });\n}\n\nfunction findTokenStorageIdWithRefreshToken(handler: AppSessionHandler, refreshToken: string): string | null {\n handler.sessions.forEach((session) => {\n if (session.tokenStorageId) {\n const tokens = getTokensNow(session.tokenStorageId);\n if (tokens.refreshToken == refreshToken) {\n return session.tokenStorageId;\n }\n }\n });\n return null;\n}\n\nfunction setCurrentSession(handler: AppSessionHandler, session: AppSession) {\n window.name = session.id;\n window.sessionStorage.setItem(sessionIdKey, session.id);\n\n const now = new Date().getTime();\n session.loaded = true;\n session.activity = now;\n session.created = now;\n\n saveAppSessionHandler(handler);\n}\n\nfunction claimSession(handler: AppSessionHandler, session: AppSession): AppSession | null {\n const now = new Date().getTime();\n session.id = getNextUUID();\n session.loaded = true;\n session.activity = now;\n session.created = now;\n\n saveAppSessionHandler(handler);\n return session;\n}\n\nfunction tryGetSessionFromWindowName(handler: AppSessionHandler): AppSession | null {\n const sessionId: string | null = window.name != \"\" ? window.name ?? null : null;\n if (sessionId == null) return null;\n\n return tryGetSession(handler, sessionId);\n}\n\nfunction tryGetSession(handler: AppSessionHandler, sessionId: string): AppSession | null {\n const session = sessionId != null ? handler.sessions.find((session) => session.id === sessionId) ?? null : null;\n\n return session;\n}\n\nfunction tryGetRelevantSession(handler: AppSessionHandler): AppSession | null {\n // const dublicateTab = tryGetDublicateTabSession(handler);\n // if (dublicateTab != null) return dublicateTab;\n\n const latest = tryGetLatestSession(handler);\n if (latest != null) return latest;\n\n return null;\n}\n\n// function tryGetDublicateTabSession(handler: AppSessionHandler): AppSession | null {\n// const sessionId = window.sessionStorage.getItem(sessionIdKey) ?? null;\n// if (sessionId == null) return null;\n\n// const dublicateTab = tryGetSession(handler, sessionId);\n\n// console.log(\"get dublicate tab\", dublicateTab);\n\n// return dublicateTab;\n// }\n\nfunction tryGetLatestSession(handler: AppSessionHandler): AppSession | null {\n const sorted = handler.sessions.sort((a, b) => b.created - a.created);\n const latest = sorted.length > 0 ? sorted[0] : null;\n return latest;\n}\n\nfunction isSessionLoaded(session: AppSession) {\n if (session.loaded) return true;\n return false;\n}\n\nasync function copySession(handler: AppSessionHandler, session: AppSession): Promise<AppSession> {\n const copy = createSession(handler, session.tokenStorageId);\n await copySessionStorage(session, copy);\n\n return copy;\n}\n\nfunction createSession(handler: AppSessionHandler, tokenStorageId: string | undefined): AppSession {\n if (!tokenStorageId) tokenStorageId = getNextUUID();\n\n const id = getNextUUID();\n const created = new Date().getTime();\n\n const session: AppSession = { id, storageId: id, created, activity: created, loaded: true, tokenStorageId };\n\n handler.sessions.push(session);\n saveAppSessionHandler(handler);\n\n return session;\n}\n\nasync function unloadSession() {\n loaded = false;\n\n const { handler, session } = getCurrentHandlerAndSession(false);\n if (handler == null || session == null) return;\n\n if (isLatestSession(handler, session)) {\n // console.log(\"unload session\", session);\n\n session.loaded = false;\n session.activity = new Date().getTime();\n\n saveAppSessionHandler(handler);\n } else {\n await deleteSession(handler, session);\n }\n}\n\nfunction getOrCreateSessionHandler(): AppSessionHandler {\n let handler = getHandler();\n if (handler == null) handler = createHandler();\n\n return handler;\n}\n\nfunction getHandler(): AppSessionHandler | null {\n const sessionsStr = localStorage.getItem(sessionsKey);\n if (sessionsStr == null) {\n console.error({ code: \"web-220217-0958\", msg: \"session storage is null\" });\n return null;\n }\n\n try {\n return JSON.parse(sessionsStr) as AppSessionHandler;\n } catch (e) {\n return null;\n }\n}\n\nfunction createHandler(): AppSessionHandler {\n const handler: AppSessionHandler = { sessions: [] };\n saveAppSessionHandler(handler);\n return handler;\n}\n\nasync function runSessionActivityUpdate() {\n if (!loaded) return;\n\n const { session, handler } = await getCurrentHandlerAndSession(true);\n if (handler == null || session == null) return;\n if (!session.loaded) return;\n\n session.activity = new Date().getTime();\n saveAppSessionHandler(handler);\n\n tryTransferReportsFromSharedStorageAndFinishInCurrentSession();\n\n window.setTimeout(() => runSessionActivityUpdate(), sessionActivityUpdateInterval);\n}\n\nlet lastSleepCheck: number | null = null;\nlet inSleepTimeout = 0;\n\nfunction isInSleepTimeout(): boolean {\n const now = new Date().getTime();\n\n const last = lastSleepCheck;\n lastSleepCheck = now;\n\n if (last) {\n const timeSinceLast = now - last;\n const computerBeenSleeping = timeSinceLast > sessionsInvalidateUpdateInterval + 10_000;\n\n if (computerBeenSleeping) inSleepTimeout = new Date().getTime() + sleepTimeout;\n }\n\n return inSleepTimeout > now;\n}\n\nfunction runSessionsInvalidateUpdate() {\n if (!loaded) return;\n\n if (isInSleepTimeout()) {\n window.setTimeout(() => runSessionsInvalidateUpdate(), sessionsInvalidateUpdateInterval);\n return;\n }\n\n const { handler, session } = getCurrentHandlerAndSession(false);\n if (handler == null || session == null) return;\n\n const now = new Date().getTime();\n\n handler.sessions.forEach(async (value) => {\n if (value.id === session.id) return;\n\n if (now > value.activity + sessionActivityTimeout) {\n await deleteSession(handler, value);\n }\n });\n\n window.setTimeout(() => runSessionsInvalidateUpdate(), sessionsInvalidateUpdateInterval);\n}\n\nfunction getCurrentHandlerAndSession(restore: boolean): { handler: AppSessionHandler | null; session: AppSession | null } {\n const currentSession = getAppSession();\n\n const handler = getHandler();\n if (handler == null) {\n log.error({ code: \"web-211031-1331\", msg: \"handler is null\" });\n return { handler: null, session: null };\n }\n\n const session = handler.sessions.find((session) => session.id === currentSession.id) ?? null;\n\n if (!session) {\n log.error({ code: \"web-211031-1330\", msg: \"session is null\", data: { \"current session\": currentSession, handler } });\n\n if (restore) {\n const session = restoreSession(handler);\n return session;\n }\n }\n\n return { handler, session };\n}\n\nfunction restoreSession(handler: AppSessionHandler) {\n const session = getAppSession();\n\n if (handler.sessions.some((n) => n.id === session.id)) {\n log.error({ code: \"web-220715-1201\", msg: \"session already in handler\" });\n return { handler: null, session: null };\n }\n\n handler.sessions.push(session);\n\n restoreSessionStorage();\n restorePlaybackReports();\n saveAppSessionHandler(handler);\n\n return { handler, session };\n}\n\nfunction isLatestSession(handler: AppSessionHandler, session: AppSession) {\n const latest = tryGetLatestSession(handler);\n return latest?.id === session.id;\n}\n\nasync function deleteSession(handler: AppSessionHandler, session: AppSession) {\n // const deletingCurrentSession = session.id === getAppSession().id;\n\n // console.log(\"delete session\", session, `deletingCurrentSession: ${deletingCurrentSession}`);\n\n handler.sessions = handler.sessions.filter((value) => value.id !== session.id);\n saveAppSessionHandler(handler);\n\n await deleteSessionStorage(session);\n}\n\nasync function cleanupOrphanSessionData() {\n try {\n const handler = getOrCreateSessionHandler();\n const prefixes = [\"loadedPlaybackReports_\", \"finishedPlaybackReports_\", \"refreshToken_\", \"accessToken_\", \"refreshToken_date_\"];\n const deleteKeys: string[] = [];\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (!key) continue;\n\n prefixes.forEach((prefix) => {\n if (key.indexOf(prefix) !== 0) return;\n\n const storageId = key.substring(prefix.length);\n if (Number.isNaN(parseInt(storageId, 10))) return;\n if (handler.sessions.some((session) => session.storageId == storageId || session.tokenStorageId == storageId)) return;\n\n deleteKeys.push(key);\n });\n }\n\n deleteKeys.forEach((key) => {\n localStorage.removeItem(key);\n });\n\n if (\"databases\" in window.indexedDB) {\n const databases = await indexedDB.databases();\n\n databases.forEach((database) => {\n const prefix = \"state_\";\n\n const name = database.name;\n if (!name) return;\n if (name.indexOf(prefix) !== 0) return;\n\n const storageId = name.substring(prefix.length);\n if (handler.sessions.some((session) => session.storageId == storageId)) return;\n\n indexedDB.deleteDatabase(name);\n });\n }\n } catch (e) {\n //\n }\n}\n","import { getAppSession } from \"./appSessionService\";\nimport { getAppSessionHandler, saveAppSessionHandler } from \"./operations/appSessionHandler\";\nimport { getAccessTokenStorageKey, getFinishedPlaybackReportsStorageKey, getLoadedPlaybackReportsStorageKey, getRefreshTokenStorageKey } from \"./storageKeys\";\nimport { deleteSessionDbState } from \"global/config\";\n\nexport function initDebug() {\n const sessionDebug = { simulateRestoreSession: () => simulateRestoreSessionFn() };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).sessionDebug = sessionDebug;\n}\n\nfunction simulateRestoreSessionFn() {\n const session = getAppSession();\n\n const key1 = getAccessTokenStorageKey(session.storageId);\n const key2 = getRefreshTokenStorageKey(session.storageId);\n const key3 = getLoadedPlaybackReportsStorageKey(session.storageId);\n const key4 = getFinishedPlaybackReportsStorageKey(session.storageId);\n\n localStorage.removeItem(key1);\n localStorage.removeItem(key2);\n localStorage.removeItem(key3);\n localStorage.removeItem(key4);\n\n const handler = getAppSessionHandler();\n if (!handler) {\n console.error({ code: \"web-220927-1042\", msg: \"no handler\" });\n return;\n }\n\n handler.sessions = handler.sessions.filter((n) => n.id !== session.id);\n saveAppSessionHandler(handler);\n\n deleteSessionDbState();\n}\n","import { getAppSession } from \"./appSessionService\";\nimport { getStateDbName } from \"./storageKeys\";\n\nexport function isMySession(storageId: string) {\n return getAppSession()?.storageId === storageId;\n}\n\nexport function saveData(key: string, value: string | null) {\n if (!value) localStorage.removeItem(key);\n else localStorage.setItem(key, value);\n}\n\nexport function getData(key: string) {\n return localStorage.getItem(key) ?? null;\n}\n\nexport function parseData<T>(data: string | null): T | null {\n if (data == null || data == \"\") return null;\n return JSON.parse(data);\n}\n\nexport function getSessionDbKey() {\n const storageId = getAppSession().storageId;\n return getStateDbName(storageId);\n}\n","export * from \"./appSessionService\";\nexport * from \"./operations/reports\";\n","import type { AppSessionHandler } from \"../appSessionService\";\nimport { getData, parseData, saveData } from \"../helpers\";\nimport { getAppSessionHandlerKey } from \"../storageKeys\";\n\nexport function getAppSessionHandler() {\n const key = getAppSessionHandlerKey();\n const data = getData(key);\n return parseData<AppSessionHandler>(data);\n}\n\nexport function saveAppSessionHandler(handler: AppSessionHandler) {\n const key = getAppSessionHandlerKey();\n saveData(key, JSON.stringify(handler));\n}\n","import { getAppSession } from \"../appSessionService\";\nimport { isMySession, parseData, getData, saveData } from \"../helpers\";\nimport { getFinishedPlaybackReportsStorageKey } from \"../storageKeys\";\nimport type { FinishedPlaybackReport } from \"models/app/playbackReport\";\n\nlet finishedReports: FinishedPlaybackReport[] | null;\n\nexport function getFinishedPlaybackReports(storageId: string) {\n const mySession = isMySession(storageId);\n if (mySession && finishedReports != null) return finishedReports;\n\n const key = getFinishedPlaybackReportsStorageKey(storageId);\n const reports = parseData<FinishedPlaybackReport[]>(getData(key));\n\n if (mySession) finishedReports = reports;\n return reports ?? [];\n}\n\nexport function getSessionFinishedPlaybackReports() {\n return getFinishedPlaybackReports(getAppSession().storageId);\n}\n\nexport function saveFinishedPlaybackReports(storageId: string, reports: FinishedPlaybackReport[]) {\n const mySession = isMySession(storageId);\n const key = getFinishedPlaybackReportsStorageKey(storageId);\n\n saveData(key, JSON.stringify(reports));\n if (mySession) finishedReports = reports;\n}\n\nexport function saveSessionFinishedPlaybackReports(reports: FinishedPlaybackReport[]) {\n return saveFinishedPlaybackReports(getAppSession().storageId, reports);\n}\n\nexport function addSessionFinishedReport(finished: FinishedPlaybackReport) {\n if (!finished.sendReport) return;\n const reports = getSessionFinishedPlaybackReports() ?? [];\n saveSessionFinishedPlaybackReports([...reports, finished]);\n}\n\nexport function removeSessionFinishedReport(finished: FinishedPlaybackReport) {\n const reports = (getSessionFinishedPlaybackReports() ?? []).filter((report) => report.reportId !== finished.reportId);\n saveSessionFinishedPlaybackReports(reports);\n}\n\nexport function restoreFinishedPlaybackReports() {\n saveSessionFinishedPlaybackReports(finishedReports ?? []);\n}\n","import { getAppSession } from \"../appSessionService\";\nimport { isMySession, parseData, getData, saveData } from \"../helpers\";\nimport { getLoadedPlaybackReportsStorageKey } from \"../storageKeys\";\nimport type { LoadedPlaybackReport } from \"models/app/playbackReport\";\n\nlet loadedReports: LoadedPlaybackReport[] | null;\n\nexport function getLoadedPlaybackReports(storageId: string) {\n const mySession = isMySession(storageId);\n if (mySession && loadedReports != null) return loadedReports;\n\n const key = getLoadedPlaybackReportsStorageKey(storageId);\n const reports = parseData<LoadedPlaybackReport[]>(getData(key));\n\n if (mySession) loadedReports = reports;\n return reports ?? [];\n}\n\nexport function getSessionLoadedPlaybackReports() {\n return getLoadedPlaybackReports(getAppSession().storageId);\n}\n\nexport function saveLoadedPlaybackReports(storageId: string, reports: LoadedPlaybackReport[]) {\n const mySession = isMySession(storageId);\n const key = getLoadedPlaybackReportsStorageKey(storageId);\n\n saveData(key, JSON.stringify(reports));\n if (mySession) loadedReports = reports;\n}\n\nexport function saveSessionLoadedPlaybackReports(reports: LoadedPlaybackReport[]) {\n return saveLoadedPlaybackReports(getAppSession().storageId, reports);\n}\n\nexport function restoreLoadedPlaybackReports() {\n saveSessionLoadedPlaybackReports(loadedReports ?? []);\n}\n","import { getData, isMySession, parseData, saveData } from \"../helpers\";\nimport { getPendingLyricsReportsStorageKey } from \"../storageKeys\";\nimport type { DisplayType } from \"generated/graphql-types\";\n\n// domain model matching ReportLyricsDisplayInput from graphql-types\nexport type LyricReport = {\n displayType: DisplayType;\n displayedAt: string;\n lyricsId: string;\n trackId: string;\n};\n\nlet pendingReports: LyricReport[] | null;\n\nexport function getPendingLyricReports(storageId: string) {\n const mySession = isMySession(storageId);\n if (mySession && pendingReports != null) return pendingReports;\n\n const key = getPendingLyricsReportsStorageKey(storageId);\n const reports = parseData<LyricReport[]>(getData(key));\n\n if (mySession) pendingReports = reports;\n return reports ?? [];\n}\n\nexport function savePendingLyricReports(storageId: string, reports: LyricReport[]) {\n const mySession = isMySession(storageId);\n const key = getPendingLyricsReportsStorageKey(storageId);\n\n saveData(key, JSON.stringify(reports));\n if (mySession) pendingReports = reports;\n}\n","import type { AppSession } from \"../appSessionService\";\nimport { getFinishedPlaybackReports, restoreFinishedPlaybackReports, saveFinishedPlaybackReports } from \"./finishedReports\";\nimport { getLoadedPlaybackReports, restoreLoadedPlaybackReports, saveLoadedPlaybackReports } from \"./loadedReports\";\nimport { getSharedFinishedPlaybackReports, saveSharedFinishedPlaybackReports } from \"./sharedFinishedReports\";\nimport { getSharedLoadedPlaybackReports, saveSharedLoadedPlaybackReports } from \"./sharedLoadedReports\";\n\nexport function getAndDeleteSharedReports() {\n const loaded = getSharedLoadedPlaybackReports() ?? [];\n const finished = getSharedFinishedPlaybackReports() ?? [];\n\n if (loaded.length > 0) saveSharedLoadedPlaybackReports([]);\n if (finished.length > 0) saveSharedFinishedPlaybackReports([]);\n\n return { loaded, finished };\n}\n\nexport function getAndDeleteReports(session: AppSession) {\n const storageId = session.storageId;\n\n const loaded = getLoadedPlaybackReports(storageId) ?? [];\n const finished = getFinishedPlaybackReports(storageId) ?? [];\n\n if (loaded.length > 0) saveLoadedPlaybackReports(storageId, []);\n if (finished.length > 0) saveFinishedPlaybackReports(storageId, []);\n\n return { loaded, finished };\n}\n\nexport function transferReportsToSharedStorage(storageId: string) {\n const loaded = getLoadedPlaybackReports(storageId) ?? [];\n if (loaded.length > 0) {\n const loadedShared = getSharedLoadedPlaybackReports() ?? [];\n const loadedAll = [...loadedShared, ...loaded];\n\n saveLoadedPlaybackReports(storageId, []);\n saveSharedLoadedPlaybackReports(loadedAll);\n }\n\n const finished = getFinishedPlaybackReports(storageId) ?? [];\n if (finished.length > 0) {\n const finishedShared = getSharedFinishedPlaybackReports() ?? [];\n const finishedAll = [...finishedShared, ...finished];\n\n saveFinishedPlaybackReports(storageId, []);\n saveSharedFinishedPlaybackReports(finishedAll);\n }\n}\n\nexport function restorePlaybackReports() {\n restoreLoadedPlaybackReports();\n restoreFinishedPlaybackReports();\n}\n","import type { AppSession } from \"../appSessionService\";\nimport { getAppSession } from \"../appSessionService\";\nimport { isMySession } from \"../helpers\";\nimport { getStateDbName } from \"../storageKeys\";\nimport { transferReportsToSharedStorage } from \"./reports\";\nimport { copyDbState, deleteDbState, saveSessionState } from \"global/config\";\nimport { tryTransferAndFinishReportsInCurrentSession } from \"services/logger\";\n\nexport async function deleteSessionStorage(session: AppSession) {\n const storageId = session.storageId;\n const mySession = isMySession(storageId);\n\n // todo delete tokens\n // saveAccessToken(storageId, null);\n // saveRefreshToken(storageId, null);\n\n if (mySession) transferReportsToSharedStorage(storageId);\n else tryTransferAndFinishReportsInCurrentSession(session);\n\n const dbName = getStateDbName(storageId);\n await deleteDbState(dbName);\n}\n\nexport async function copySessionStorage(from: AppSession, to: AppSession) {\n const storageIdFrom = from.storageId;\n const storageIdTo = to.storageId;\n\n // const accessTokenFrom = getAccessToken(storageIdFrom);\n // const refreshTokenFrom = getRefreshToken(storageIdFrom);\n\n // saveAccessToken(storageIdTo, accessTokenFrom);\n // saveRefreshToken(storageIdTo, refreshTokenFrom);\n\n const dbNameFrom = getStateDbName(storageIdFrom);\n const dbNameTo = getStateDbName(storageIdTo);\n\n await copyDbState(dbNameFrom, dbNameTo);\n}\n\nexport async function restoreSessionStorage() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const storageId = getAppSession().storageId;\n\n // const accessToken = getAccessToken(storageId);\n // const refreshToken = getRefreshToken(storageId);\n\n // saveAccessToken(storageId, accessToken);\n // saveRefreshToken(storageId, refreshToken);\n\n // todo restore tokens\n\n await saveSessionState(\"restoreSession\");\n}\n","import { getAppSession } from \"../appSessionService\";\nimport { getData, saveData } from \"../helpers\";\nimport { dispatch } from \"global\";\nimport { USER_UPDATED_TOKENS } from \"global/actions\";\nimport { isUnloading } from \"global/config\";\nimport { log, LogTag } from \"services/logger\";\n\nexport async function getTokens(tokenStorageId?: string): Promise<{ refreshToken: string | null; refreshTokenDate: Date | null, accessToken: string | null }> {\n tokenStorageId ??= getAppSession().tokenStorageId;\n await tokenRefreshBlock(tokenStorageId);\n return getTokensNow(tokenStorageId);\n}\n\nexport function getTokensNow(tokenStorageId?: string): { refreshToken: string | null; refreshTokenDate: Date | null, accessToken: string | null } {\n tokenStorageId ??= getAppSession().tokenStorageId;\n const refreshToken = getRefreshTokenNow(tokenStorageId);\n const refreshTokenDate = getRefreshTokenDateNow(tokenStorageId);\n const accessToken = getAccessTokenNow(tokenStorageId);\n return { refreshToken, refreshTokenDate, accessToken };\n}\n\nexport function removeTokens() {\n //log.warn({ code: \"web-220926-1530\", msg: \"remove tokens\", tags: [LogTag.User] });\n return saveTokens(null, null, \"logout\");\n}\n\nexport function saveTokens(refreshToken: string | null, accessToken: string | null, tokenSource: \"init\" | \"login\" | \"refresh\" | \"logout\"): boolean {\n const tokenStorageId = getAppSession().tokenStorageId;\n\n if (inRefreshBlock(tokenStorageId)) {\n log.error({ code: \"web-220718-1307\", msg: \"can't write user refresh/access tokens cause they're locked\" });\n return false;\n }\n\n if (tokenSource == \"login\") {\n removeRefreshTokenDate(tokenStorageId);\n }\n\n if (!saveRefreshToken(tokenStorageId, refreshToken, tokenSource == \"refresh\")) return false;\n if (!saveAccessToken(tokenStorageId, accessToken)) return false;\n\n log.info({ code: \"web-220926-1530\", msg: \"--- stored tokens\", data: { refreshToken, accessToken }, tags: [LogTag.User] });\n dispatch({\n type: USER_UPDATED_TOKENS,\n payload: {\n refreshToken,\n accessToken,\n }\n });\n\n return true;\n}\n\nexport function saveTokensNow(refreshToken: string | null, accessToken: string | null, isRefresh: boolean, tokenStorageId?: string) {\n tokenStorageId ??= getAppSession().tokenStorageId;\n saveRefreshTokenNow(tokenStorageId, refreshToken, isRefresh);\n saveAccessTokenNow(tokenStorageId, accessToken);\n}\n\nfunction getRefreshTokenDateNow(tokenStorageId: string): Date | null {\n const key = getTokenSessionRefreshTokenDateKey(tokenStorageId);\n const data = getData(key);\n return data ? new Date(data) : null;\n}\n\nfunction getRefreshTokenNow(tokenStorageId: string): string | null {\n const key = getTokenSessionRefreshTokenKey(tokenStorageId);\n const data = getData(key);\n return data;\n}\n\nfunction saveRefreshToken(tokenStorageId: string, refreshToken: string | null, isRefresh: boolean): boolean {\n if (inRefreshBlock(tokenStorageId)) {\n log.error({ code: \"web-220718-1305\", msg: \"can't write user refresh token cause it's locked\" });\n return false;\n }\n\n saveRefreshTokenNow(tokenStorageId, refreshToken, isRefresh);\n return true;\n}\n\n\nfunction removeRefreshTokenDate(tokenStorageId: string) {\n if (inRefreshBlock(tokenStorageId)) {\n log.error({ code: \"web-220718-1305\", msg: \"can't write user refresh token date cause it's locked\" });\n return false;\n }\n removeRefreshTokenDateNow(tokenStorageId);\n}\n\nfunction removeRefreshTokenDateNow(tokenStorageId: string) {\n const dateKey = getTokenSessionRefreshTokenDateKey(tokenStorageId);\n saveData(dateKey, null);\n}\n\nfunction saveRefreshTokenNow(tokenStorageId: string, refreshToken: string | null, isRefresh: boolean) {\n const tokenKey = getTokenSessionRefreshTokenKey(tokenStorageId);\n saveData(tokenKey, refreshToken);\n\n if (isRefresh || !refreshToken) {\n const dateKey = getTokenSessionRefreshTokenDateKey(tokenStorageId);\n saveData(dateKey, isRefresh ? new Date().toJSON() : null);\n }\n}\n\nfunction getAccessTokenNow(tokenStorageId: string): string | null {\n const key = getTokenSessionAccessTokenKey(tokenStorageId);\n const data = getData(key);\n return data;\n}\n\nfunction saveAccessToken(tokenStorageId: string, accessToken: string | null): boolean {\n if (inRefreshBlock(tokenStorageId)) {\n log.error({ code: \"web-220718-1306\", msg: \"can't write user access token cause it's locked\" });\n return false;\n }\n\n saveAccessTokenNow(tokenStorageId, accessToken);\n return true;\n}\n\nfunction saveAccessTokenNow(tokenStorageId: string, accessToken: string | null) {\n const key = getTokenSessionAccessTokenKey(tokenStorageId);\n saveData(key, accessToken);\n}\n\nfunction getTokenSessionAccessTokenKey(tokenStorageId: string) {\n return `accessToken_${tokenStorageId}`;\n}\n\nfunction getTokenSessionRefreshTokenKey(tokenStorageId: string) {\n return `refreshToken_${tokenStorageId}`;\n}\n\nfunction getTokenSessionRefreshTokenDateKey(tokenStorageId: string) {\n return `refreshToken_date_${tokenStorageId}`;\n}\n\nfunction getTokenSessionInTokenRefreshKey(tokenStorageId: string) {\n return `inTokenRefresh_${tokenStorageId}`;\n}\n\nfunction tokenRefreshBlock(tokenStorageId: string): Promise<void> {\n return new Promise<void>((resolve) => {\n let inBlock = false;\n\n const check = () => {\n inBlock = inRefreshBlock(tokenStorageId);\n if (!inBlock) {\n resolve();\n return;\n }\n setTimeout(() => check(), 100);\n };\n\n check();\n if (inBlock) {\n setTimeout(() => {\n if (!inBlock) return;\n inBlock = false;\n\n log.error({ code: \"web-220718-1409\", msg: \"userTokenRefreshLock timed out, has been unlocked\" });\n\n _setTokenRefreshLock(tokenStorageId, false);\n resolve();\n }, 10_000);\n }\n });\n}\n\nfunction inRefreshBlock(tokenStorageId?: string): boolean {\n tokenStorageId ??= getAppSession().tokenStorageId;\n\n const me = getAppSession().tokenStorageId === tokenStorageId;\n if (me && inTokenSessionRefresh) return false;\n\n const lock = inRefreshLock(tokenStorageId);\n return lock;\n}\n\nfunction inRefreshLock(tokenStorageId?: string): boolean {\n tokenStorageId ??= getAppSession().tokenStorageId;\n\n const key = getTokenSessionInTokenRefreshKey(tokenStorageId);\n const lock = getData(key) === \"true\";\n\n return lock;\n}\n\nexport function setTokenRefreshLock(value: boolean, tokenStorageId?: string) {\n tokenStorageId ??= getAppSession().tokenStorageId;\n return _setTokenRefreshLock(tokenStorageId, value);\n}\n\nlet inTokenSessionRefresh = false;\nfunction _setTokenRefreshLock(tokenStorageId: string, value: boolean) {\n if (value === inRefreshLock(tokenStorageId)) log.error({ code: \"web-220718-1424\", msg: \"setting lock to same value\" });\n\n inTokenSessionRefresh = value;\n _saveInTokenRefresh(value, tokenStorageId);\n}\n\nexport function setTokenRefreshLockTrueForDebug() {\n _saveInTokenRefresh(true);\n}\n\nfunction _saveInTokenRefresh(value: boolean, tokenStorageId?: string) {\n if (value && isUnloading) return;\n tokenStorageId ??= getAppSession().tokenStorageId;\n const key = getTokenSessionInTokenRefreshKey(tokenStorageId);\n saveData(key, value ? \"true\" : \"false\");\n}\n\nexport function unloadTokenLock() {\n if (inTokenSessionRefresh) {\n _saveInTokenRefresh(false);\n }\n}\n","import { parseData, getData, saveData } from \"../helpers\";\nimport { getSharedFinishedPlaybackReportsStorageKey } from \"../storageKeys\";\nimport type { FinishedPlaybackReport } from \"models/app/playbackReport\";\n\nexport function getSharedFinishedPlaybackReports() {\n const key = getSharedFinishedPlaybackReportsStorageKey();\n const reports = parseData<FinishedPlaybackReport[]>(getData(key));\n return reports;\n}\n\nexport function saveSharedFinishedPlaybackReports(reports: FinishedPlaybackReport[]) {\n const key = getSharedFinishedPlaybackReportsStorageKey();\n saveData(key, JSON.stringify(reports));\n}\n","import { parseData, getData, saveData } from \"../helpers\";\nimport { getSharedLoadedPlaybackReportsStorageKey } from \"../storageKeys\";\nimport type { LoadedPlaybackReport } from \"models/app/playbackReport\";\n\nexport function getSharedLoadedPlaybackReports() {\n const key = getSharedLoadedPlaybackReportsStorageKey();\n const reports = parseData<LoadedPlaybackReport[]>(getData(key));\n return reports;\n}\n\nexport function saveSharedLoadedPlaybackReports(reports: LoadedPlaybackReport[]) {\n const key = getSharedLoadedPlaybackReportsStorageKey();\n saveData(key, JSON.stringify(reports));\n}\n","import { getData, saveData } from \"../helpers\";\nimport { getSharedAccessTokenStorageKey, getSharedRefreshTokenStorageKey } from \"../storageKeys\";\n\nexport function getSharedTokens(): { refreshToken: string | null; accessToken: string | null } {\n const refreshToken = getSharedRefreshToken();\n const accessToken = getSharedAccessToken();\n return { refreshToken, accessToken };\n}\n\nexport function removeSharedTokens(): void {\n saveSharedRefreshToken(null);\n saveSharedAccessToken(null);\n}\n\nfunction getSharedAccessToken() {\n const key = getSharedAccessTokenStorageKey();\n return getData(key);\n}\n\nfunction saveSharedAccessToken(token: string | null) {\n const key = getSharedAccessTokenStorageKey();\n saveData(key, token);\n}\n\nfunction getSharedRefreshToken() {\n const key = getSharedRefreshTokenStorageKey();\n return getData(key);\n}\n\nfunction saveSharedRefreshToken(token: string | null) {\n const key = getSharedRefreshTokenStorageKey();\n saveData(key, token);\n}\n","export function getStateDbName(storageId: string): string {\n return `state_${storageId}`;\n}\n\nexport function getRefreshTokenStorageKey(storageId: string): string {\n return `refreshToken_${storageId}`;\n}\n\nexport function getAccessTokenStorageKey(storageId: string): string {\n return `accessToken_${storageId}`;\n}\n\nexport function getSharedRefreshTokenStorageKey(): string {\n return `refreshtoken`;\n}\n\nexport function getSharedAccessTokenStorageKey(): string {\n return `accesstoken`;\n}\n\nexport function getLoadedPlaybackReportsStorageKey(storageId: string): string {\n return `loadedPlaybackReports_${storageId}`;\n}\n\nexport function getFinishedPlaybackReportsStorageKey(storageId: string): string {\n return `finishedPlaybackReports_${storageId}`;\n}\n\nexport function getSharedLoadedPlaybackReportsStorageKey(): string {\n return `loadedPlaybackReports`;\n}\n\nexport function getSharedFinishedPlaybackReportsStorageKey(): string {\n return `finishedPlaybackReports`;\n}\n\nexport function getAppSessionHandlerKey() {\n return \"AppSessions\";\n}\n\nexport function getPendingLyricsReportsStorageKey(storageId: string): string {\n return `lyricsReports_${storageId}`;\n}\n","import { dispatch, store } from \"global\";\nimport type { AppVersionModel } from \"shared/services\";\nimport { getCurrentAppVersion } from \"shared/services\";\nimport { UPDATE_APP_VERSION } from \"global/actions\";\nimport { log } from \"services/logger\";\n\nexport enum AppVersionCompare {\n Higher = \"Higher\",\n Same = \"Same\",\n Lower = \"Lower\"\n}\n\nexport function appVersionCompare(version: AppVersionModel, compareTo: AppVersionModel, ignoreBuildVersion?: boolean): AppVersionCompare {\n const compare = appVersionCompareFn(version, compareTo, ignoreBuildVersion);\n if (compare < 0) return AppVersionCompare.Lower;\n if (compare > 0) return AppVersionCompare.Higher;\n return AppVersionCompare.Same;\n}\n\nfunction appVersionCompareFn(version: AppVersionModel, compareTo: AppVersionModel, ignoreBuildVersion?: boolean): number {\n let r: number;\n\n r = version.major - compareTo.major;\n if (r != 0) return r;\n\n r = version.minor - compareTo.minor;\n if (r != 0) return r;\n\n r = version.release - compareTo.release;\n if (r != 0) return r;\n\n if (!ignoreBuildVersion) {\n r = version.build - compareTo.build;\n if (r != 0) return r;\n }\n return 0;\n}\n\nexport function initAppVersionService() {\n const from = store.getState().app.version;\n const to = getCurrentAppVersion();\n\n if (appVersionCompare(to, from) === AppVersionCompare.Higher) {\n log.info({\n code: \"web-210315-1625\",\n msg: \"updated app version\",\n data: {\n \"from version\": JSON.stringify(from),\n \"to version\": JSON.stringify(to)\n }\n });\n dispatch({ type: UPDATE_APP_VERSION, payload: { version: getCurrentAppVersion() } });\n } else {\n // log.info({ code: \"web-210315-1625\", msg: \"app version\", data: { version: JSON.stringify(to) } });\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction updateAppData(name: string, after: AppVersionModel, from: AppVersionModel, to: AppVersionModel, updateFn: () => void) {\n const version = appVersionCompare(after, from, true);\n const run = version === AppVersionCompare.Higher;\n if (!run) return;\n\n const data = {\n \"update name\": name,\n \"after version\": JSON.stringify(after),\n \"from version\": JSON.stringify(from),\n \"to version\": JSON.stringify(to)\n };\n\n try {\n updateFn();\n } catch (e) {\n log.error({ code: \"web-210315-1623\", msg: \"app data update fail\", data, error: e });\n return;\n }\n log.info({ code: \"web-210315-1624\", msg: \"app update success\", data });\n}\n","export * from \"./appVersionService\";\n","import { v4 as uuidv4 } from \"uuid\";\nimport { getLangFromState } from \"components/app/hooks\";\nimport { store } from \"global\";\nimport { WebAppEnvironment } from \"shared/models\";\nimport { getAppVersionString } from \"shared/services/appSettings\";\nimport { parseIntAsNormalPositiveNumberOrNull } from \"shared/services/formatters\";\nimport { environment } from \"services/environment\";\nimport { isAppRunAsPWA } from \"services/pwa/initPWAService\";\nimport { Language } from \"models/view/Localization\";\n\nexport function getNewInstallationId(): string {\n return uuidv4();\n}\n\nexport function getNewCorrelationId(): string {\n return uuidv4();\n}\n\nexport enum LanguageCode {\n enUs = \"en-US\",\n daDK = \"da-DK\"\n}\nenum ISOLanguageCode {\n en = \"en\",\n da = \"da\"\n}\n\nexport function getLanguageCode(local: Language): LanguageCode {\n switch (local) {\n case Language.Danish:\n return LanguageCode.daDK;\n case Language.English:\n return LanguageCode.enUs;\n }\n}\nexport function getISOLanguageCode(local: Language): ISOLanguageCode {\n switch (local) {\n case Language.Danish:\n return ISOLanguageCode.da;\n case Language.English:\n return ISOLanguageCode.en;\n }\n}\nexport function getLanguageCodeFromState(): LanguageCode {\n const local = getLangFromState();\n return getLanguageCode(local);\n}\n\nexport function getGraphQlLanguageCode(lang: LanguageCode): ISOLanguageCode {\n switch (lang) {\n case LanguageCode.daDK:\n return ISOLanguageCode.da;\n case LanguageCode.enUs:\n return ISOLanguageCode.en;\n }\n}\n\nexport function getBrand() {\n return environment.webAppBrand;\n}\n\nexport function getRuntimeEnvironment() {\n let origin = window.location.origin;\n origin = origin.replace(\"http://\", \"\");\n origin = origin.replace(\"https://\", \"\");\n\n if (origin === \"musik.yousee.dk\") return WebAppEnvironment.Production;\n if (origin === \"musik.telmore.dk\") return WebAppEnvironment.Production;\n\n return WebAppEnvironment.Development;\n}\n\nexport enum Platform {\n Web = \"Web\",\n Desktop = \"Desktop\"\n}\n\nexport function getPlatform(): Platform {\n return isAppRunAsPWA() ? Platform.Desktop : Platform.Web;\n}\n\nexport function getInstallationId(): string {\n return store.getState().app.installationId;\n}\n\nexport function getUserAgent(): string {\n return navigator.userAgent;\n}\n\nexport function getAppProperties() {\n const appVersion = getAppVersionString();\n const installationId = getInstallationId();\n const language = getLanguageCodeFromState();\n const platform = getPlatform();\n const userAgent = getUserAgent();\n\n return {\n appVersion,\n installationId,\n language,\n platform,\n userAgent\n };\n}\n\nexport enum NativeMobileAppStore {\n GooglePlayStore = \"GooglePlayStore\",\n AppleAppStore = \"AppleAppStore\"\n}\nexport enum OperatingSystemName {\n Android = \"Android\",\n Linux = \"Linux\",\n Unknown = \"Unknown\",\n Windows = \"Windows\",\n iOS = \"iOS\",\n iPadOS = \"iPadOS\",\n iPodOS = \"iPodOS\",\n macOS = \"macOS\"\n}\n\nexport function getOSName(): OperatingSystemName {\n const ua = navigator.userAgent;\n const contains = (keyword: string) => ua.indexOf(keyword) !== -1;\n\n if (contains(\"Android\")) return OperatingSystemName.Android;\n if (contains(\"Linux\")) return OperatingSystemName.Linux;\n if (contains(\"Windows\")) return OperatingSystemName.Windows;\n if (contains(\"iPhone\")) return OperatingSystemName.iOS;\n if (contains(\"iPad\")) return OperatingSystemName.iPadOS;\n if (contains(\"iPod\")) return OperatingSystemName.iPodOS;\n if (contains(\"Mac\")) return OperatingSystemName.macOS;\n\n return OperatingSystemName.Unknown;\n}\n\nexport const getNativeMobileAppStore = (): NativeMobileAppStore | null => {\n const os = getOSName();\n switch (os) {\n case OperatingSystemName.Android:\n return NativeMobileAppStore.GooglePlayStore;\n case OperatingSystemName.iOS:\n case OperatingSystemName.iPadOS:\n case OperatingSystemName.iPodOS:\n return NativeMobileAppStore.AppleAppStore;\n\n case OperatingSystemName.Linux:\n case OperatingSystemName.Unknown:\n case OperatingSystemName.Windows:\n case OperatingSystemName.macOS:\n return null;\n }\n};\nexport const getShowNativeMobileAppPrompt = () => {\n return getNativeMobileAppStore() != null;\n};\n\nexport enum BrowserName {\n Chrome = \"Chrome\",\n Chromium = \"Chromium\",\n Crawler = \"Crawler\",\n Edge = \"Edge\",\n Firefox = \"Firefox\",\n InternetExplorer = \"InternetExplorer\",\n Opera = \"Opera\",\n Safari = \"Safari\",\n Unknown = \"Unknown\"\n}\n\ninterface BrowserDetection {\n must: RegExp;\n not?: RegExp[];\n name: BrowserName;\n}\n\nconst browsers: BrowserDetection[] = [\n {\n name: BrowserName.Crawler,\n must: /bot|crawl|spider/i\n },\n {\n name: BrowserName.Opera,\n must: /OPR\\/(\\d+)/\n },\n {\n name: BrowserName.Opera,\n must: /Opera\\/(\\d+)/\n },\n {\n name: BrowserName.Edge,\n must: /Edg\\/(\\d+)/\n },\n {\n name: BrowserName.Firefox,\n must: /Firefox\\/(\\d+)/,\n not: [/Seamonkey\\d+/]\n },\n {\n name: BrowserName.Chrome,\n must: /Chrome\\/(\\d+)/,\n not: [/Chromium\\/\\d+/]\n },\n {\n name: BrowserName.Chromium,\n must: /Chromium\\/(\\d+)/\n },\n {\n name: BrowserName.Safari,\n must: /Version\\/(\\d+).+Safari\\/\\d+/\n },\n {\n name: BrowserName.InternetExplorer,\n must: /; MSIE (\\d+);/,\n not: []\n },\n {\n name: BrowserName.InternetExplorer,\n must: /Trident\\/7.0; \\.\\*rv:(\\d+)/\n }\n];\n\nexport function getBrowserName(): BrowserName {\n return getBrowserNameAndVersion().name;\n}\n\nexport function getBrowserNameAndVersion(): { name: BrowserName; version: number | null } {\n const ua = navigator.userAgent;\n\n const check = (browser: BrowserDetection): { name: BrowserName; version: number | null } | null => {\n const notMatch = browser.not?.some((value) => value.test(ua)) ?? false;\n if (notMatch) return null;\n\n const match = browser.must.exec(ua);\n if (!match || match[0] == null) return null;\n\n const versionStr = match[1];\n const version = parseIntAsNormalPositiveNumberOrNull(versionStr);\n\n return { name: browser.name, version };\n };\n\n for (const browser of browsers) {\n const detected = check(browser);\n if (detected != null) return detected;\n }\n\n return { name: BrowserName.Unknown, version: null };\n}\n\nexport function getWindowInnerSizeString(): [number, number] {\n return [window.innerWidth, window.innerHeight];\n}\n","export * from \"./appService\";\n","import { useEffect, useMemo, useState } from \"preact/hooks\";\nimport { log } from \"./logger\";\n\nexport function isEqual<T>(array1: T[], array2: T[]): boolean {\n if (array1 === array2) return true;\n if (array1.length !== array2.length) return false;\n for (let i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) return false;\n }\n return true;\n}\n\nexport function isEqualByPredicate<T>(array1: T[], array2: T[], predicate: (a: T, b: T) => boolean): boolean {\n if (array1 === array2) return true;\n if (array1.length !== array2.length) return false;\n for (let i = 0; i < array1.length; i++) {\n if (!predicate(array1[i], array2[i])) return false;\n }\n return true;\n}\nexport function arrayDifference<T>(values: T[], remove: T[]): T[] {\n return remove.filter((x) => !values.includes(x));\n}\n\nexport function distinct<T>(array: T[], predicate?: (a: T, b: T) => boolean): T[] {\n const newArray: T[] = [];\n array.forEach((a) => {\n if (predicate && newArray.some((b) => predicate(a, b))) return;\n if (!predicate && newArray.indexOf(a) !== -1) return;\n newArray.push(a);\n });\n return newArray;\n}\n\nexport function remove<T>(values: T[], remove: T): boolean {\n const removeIndex = values.indexOf(remove);\n\n if (removeIndex !== -1) {\n values.splice(removeIndex, 1);\n return true;\n } else {\n return false;\n }\n}\n\nexport function splitIntoChunks<T>(array: T[], chunkSize: number): Array<T[]> {\n const newArray: T[][] = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n newArray.push(array.slice(i, i + chunkSize));\n }\n return newArray;\n}\n\nexport function combineAndFilterValues<T>(values: (T | T[] | null | undefined)[]): T[] {\n const v = values.flat();\n const d = v.filter((value) => value != null) as T[];\n return d;\n}\n\nfunction _updateArray<T>(array: T[], findFn: (value: T) => boolean, changeFn: (value: T) => T, _log: boolean, code: `web-${number}-${number}`): T[] {\n const arrayCopy = [...array];\n const value = arrayCopy.find((value) => findFn(value));\n if (!value) {\n if (_log) window.setTimeout(() => log.error({ code, msg: \"value doesn't exist in array\", data: { array, value, findFn } }));\n\n return arrayCopy;\n }\n arrayCopy[arrayCopy.indexOf(value)] = changeFn(value);\n return arrayCopy;\n}\n\nexport function updateArray<T>(array: T[], findFn: (value: T) => boolean, changeFn: (value: T) => T, code: `web-${number}-${number}`): T[] {\n return _updateArray(array, findFn, changeFn, true, code);\n}\n\nexport function tryUpdateArray<T>(array: T[], findFn: (value: T) => boolean, changeFn: (value: T) => T, code: `web-${number}-${number}`): T[] {\n return _updateArray(array, findFn, changeFn, false, code);\n}\n\nexport function addOrUpdateItemInArray<T>(array: T[], findFn: (value: T) => boolean, changeFn: (value: T | null) => T): T[] {\n array = [...array];\n const index = array.findIndex((value) => findFn(value));\n\n if (index === -1) {\n array.push(changeFn(null));\n } else {\n const value = array[index];\n array[index] = changeFn(value);\n }\n\n return array;\n}\n\nexport function findLast<T>(array: T[], predicate: (value: T) => boolean): T | undefined {\n for (let i = array.length - 1; i >= 0; --i) {\n const x = array[i];\n if (predicate(x)) {\n return x;\n }\n }\n}\n\nexport function findLastIndex<T>(array: T[], predicate: (value: T) => boolean): number {\n for (let i = array.length - 1; i >= 0; --i) {\n const x = array[i];\n if (predicate(x)) {\n return i;\n }\n }\n return -1;\n}\n\nexport function split<T>(arr: T[], index: number): { before: T[]; value: T | null; after: T[] } {\n const before = arr.slice(0, index);\n const value = (arr[index] ?? null) as T | null;\n const after = arr.slice(index + 1);\n return { before, value, after };\n}\n\nexport function moveItemToFrontOfArray<T>(array: T[], index: number): T[] {\n if (index === -1) {\n log.error({ code: \"web-210519-1216\", msg: \"the item is not in this array\" });\n return array;\n }\n array.unshift(array.splice(index, 1)[0]);\n return array;\n}\n\nexport function move<T>(array: T[], from: number, to: number, on = 1) {\n return (array = array.slice()), array.splice(to, 0, ...array.splice(from, on)), array;\n}\n\nexport function splitArrayIntoChunks<T>(array: T[], size: number) {\n const results: T[][] = [];\n\n while (array.length) {\n results.push(array.splice(0, size));\n }\n\n return results;\n}\nexport function splitArrayIntoChunksWithReuse<T>(array: T[], size: number, arrayOldChunks: T[][]) {\n const results: T[][] = [];\n let isChanged = false;\n\n while (array.length) {\n const newChunk = array.splice(0, size);\n const oldChunk = arrayOldChunks[results.length];\n const isSame = !!oldChunk && oldChunk.length === newChunk.length && newChunk.every((value, i) => value === oldChunk[i]);\n isChanged ||= !isSame;\n results.push(isSame ? oldChunk : newChunk);\n }\n\n return isChanged ? results : arrayOldChunks;\n}\n\nexport function useSplitArrayIntoChunksWithReuse<T>(array: T[], size: number) {\n const [arrayOldChunks, setArrayOldChunks] = useState<T[][]>([]);\n\n const chunks = useMemo(() => {\n return splitArrayIntoChunksWithReuse([...array], size, arrayOldChunks);\n }, [array, arrayOldChunks, size]);\n\n setArrayOldChunks(chunks);\n return chunks;\n}\n","import { useEffect, useState } from \"preact/hooks\";\nimport type { DomainQueryResult } from \"./backendService\";\nimport { queryDomainModel, useQueryDomainModel } from \"./backendService\";\nimport { mutateDomainModel, mutateDomainModelWithErrors } from \"./mutate\";\nimport { WebAppBrand } from \"shared/models\";\nimport { Feature, isFeatureEnabled } from \"global/config\";\nimport { environment } from \"services/environment\";\nimport { log } from \"services/logger\";\nimport type {\n AddAlbumToFavoritesMutationVariables,\n AddAlbumToPlaylistMutationVariables,\n AddArtistToFavoritesMutationVariables,\n AddPlaylistToFavoritesMutationVariables,\n AddPlaylistToPlaylistMutationVariables,\n AddRecommendationToPlaylistMutationVariables,\n AddTrackChartToPlaylistMutationVariables,\n AddTracksToPlaylistMutationVariables,\n AddTrackToFavoritesMutationVariables,\n AlbumArtistAlbumsByTrackSectionQueryVariables,\n AlbumArtistAlbumsPageQueryVariables,\n AlbumArtistAlbumsPaginationQueryVariables,\n AlbumArtistAlbumsSectionQueryVariables,\n AlbumHeaderSectionByTrackQueryVariables,\n AlbumHeaderSectionFragment,\n AlbumHeaderSectionQueryVariables,\n AlbumPlayQueryVariables,\n AlbumPreviewQueryVariables,\n AlbumTracksPaginationQueryVariables,\n AlbumTracksSectionByTrackQueryVariables,\n AlbumTracksSectionQueryVariables,\n ArtistAlbumsPageQueryVariables,\n ArtistAlbumsPaginationQueryVariables,\n ArtistAlbumsSectionQueryVariables,\n ArtistAppearsOnAlbumsPageQueryVariables,\n ArtistAppearsOnAlbumsPaginationQueryVariables,\n ArtistAppearsOnAlbumsSectionQueryVariables,\n ArtistPageHeaderSectionQueryVariables,\n ArtistPlayQueryVariables,\n ArtistPopularTracksSectionQueryVariables,\n ArtistPreviewQueryVariables,\n ArtistRadioPageQueryVariables,\n ArtistSimilarArtistsPageQueryVariables,\n ArtistSimilarArtistsPaginationQueryVariables,\n ArtistSimilarArtistsSectionQueryVariables,\n ArtistSinglesPageQueryVariables,\n ArtistSinglesPaginationQueryVariables,\n ArtistSinglesSectionQueryVariables,\n ArtistTracksPageQueryVariables,\n ArtistTracksPaginationQueryVariables,\n ChartItemsPaginationQueryVariables,\n ChartPageQueryVariables,\n ChartPreviewQueryVariables,\n CombinedPlaylistsPaginationQueryVariables,\n ConcurrencyCanPlayMutationVariables,\n CreatePlaylistMutationVariables,\n CreateProfileMutationVariables,\n DeletePlaylistMutationVariables,\n DiscoverRecommendationsPageQueryVariables,\n DiscoverRecommendationsPaginationQueryVariables,\n EndlessPlayQueryVariables,\n FavoriteAlbumsQueryVariables,\n FavoriteArtistsQueryVariables,\n FavoriteTracksQueryVariables,\n HistoryRecommendationsPageQueryVariables,\n HistoryRecommendationsPaginationQueryVariables,\n IsFavoriteQueryVariables,\n LayoutItemContentPaginationQueryVariables,\n LayoutItemPageQueryVariables,\n LayoutItemPlayQueryVariables,\n LayoutPageQueryVariables,\n LiveRadioCategoryByLiveRadioLiveRadiosPaginationQueryVariables,\n LiveRadioCategoryLiveRadiosPaginationQueryVariables,\n LiveRadioCategoryPageByLiveRadioQueryVariables,\n LiveRadioCategoryPageQueryVariables,\n LiveRadioHeartbeatInSecondsQueryVariables,\n LiveRadioHeartbeatMutationVariables,\n LiveRadioNowAndRecentlyPlayedQueryVariables,\n LiveRadioPlayQueryVariables,\n MarkNotificationsAsSeenMutationVariables,\n MixRadioCategoryPageQueryVariables,\n MixRadioCategoryPaginationQueryVariables,\n MixRadioPlayQueryVariables,\n MixRadioPreviewQueryVariables,\n MixRadiosPageQueryVariables,\n MixRadioTracksPaginationQueryVariables,\n ModifyTracksInPlaylistMutationVariables,\n NotificationsQueryVariables,\n PlaybackFullQueryVariables,\n PlaybackSampleQueryVariables,\n PlaylistCategoriesPageQueryVariables,\n PlaylistCategoriesPaginationQueryVariables,\n PlaylistCategoryPageQueryVariables,\n PlaylistCategoryPlaylistsPaginationQueryVariables,\n PlaylistNotificationCheckQueryVariables,\n PlaylistPageQueryVariables,\n PlaylistPlayQueryVariables,\n PlaylistPreviewQueryVariables,\n PlaylistTracksPaginationQueryVariables,\n RecentTracksQueryVariables,\n RecommendationContentPaginationQueryVariables,\n RecommendationPageQueryVariables,\n RecommendationPlayQueryVariables,\n RemoveAlbumFromFavoritesMutationVariables,\n RemoveArtistFromFavoritesMutationVariables,\n RemovePlaylistFromFavoritesMutationVariables,\n RemoveProfileMutationVariables,\n RemoveTrackFromFavoritesMutationVariables,\n ReportLyricsMutationVariables,\n ReportPlaybackMutationVariables,\n SearchAlbumsPageQueryVariables,\n SearchAlbumsPaginationQueryVariables,\n SearchArtistsPageQueryVariables,\n SearchArtistsPaginationQueryVariables,\n SearchMixedSectionsQueryVariables,\n SearchPlaylistsPageQueryVariables,\n SearchPlaylistsPaginationQueryVariables,\n SearchPlaylistsSectionQueryVariables,\n SearchTracksPageQueryVariables,\n SearchTracksPaginationQueryVariables,\n SendFeedbackMutationVariables,\n TrackChartNotificationCheckQueryVariables,\n TrackChartPlayQueryVariables,\n TrackLyricsIdQueryVariables,\n TrackLyricsPageQueryVariables,\n TrackLyricsPaginationQueryVariables,\n TrackPreviewQueryVariables,\n TrackRadioPageQueryVariables,\n TrackRadioPlayQueryVariables,\n TrackRecommendationNotificationCheckQueryVariables,\n TrackRecommendationPreviewQueryVariables,\n UpdatePlaylistMutationVariables,\n UpdateProfileMutationVariables,\n UrlTransformQueryVariables\n} from \"generated/graphql-types\";\nimport {\n AddAlbumToFavoritesDocument,\n AddAlbumToPlaylistDocument,\n AddArtistToFavoritesDocument,\n AddPlaylistToFavoritesDocument,\n AddPlaylistToPlaylistDocument,\n AddRecommendationToPlaylistDocument,\n AddTrackChartToPlaylistDocument,\n AddTracksToPlaylistDocument,\n AddTrackToFavoritesDocument,\n AlbumArtistAlbumsByTrackSectionDocument,\n AlbumArtistAlbumsPageDocument,\n AlbumArtistAlbumsPaginationDocument,\n AlbumArtistAlbumsSectionDocument,\n AlbumHeaderSectionByTrackDocument,\n AlbumHeaderSectionDocument,\n AlbumPlayDocument,\n AlbumPreviewDocument,\n AlbumTracksPaginationDocument,\n AlbumTracksSectionByTrackDocument,\n AlbumTracksSectionDocument,\n ArtistAlbumsPageDocument,\n ArtistAlbumsPaginationDocument,\n ArtistAlbumsSectionDocument,\n ArtistAppearsOnAlbumsPageDocument,\n ArtistAppearsOnAlbumsPaginationDocument,\n ArtistAppearsOnAlbumsSectionDocument,\n ArtistPageHeaderSectionDocument,\n ArtistPlayDocument,\n ArtistPopularTracksSectionDocument,\n ArtistPreviewDocument,\n ArtistRadioPageDocument,\n ArtistSimilarArtistsPageDocument,\n ArtistSimilarArtistsPaginationDocument,\n ArtistSimilarArtistsSectionDocument,\n ArtistSinglesPageDocument,\n ArtistSinglesPaginationDocument,\n ArtistSinglesSectionDocument,\n ArtistTracksPageDocument,\n ArtistTracksPaginationDocument,\n ChartItemsPaginationDocument,\n ChartPageDocument,\n ChartPreviewDocument,\n CombinedPlaylistsPaginationDocument,\n ConcurrencyCanPlayDocument,\n ConcurrencyCreateTicketDocument,\n CreatePlaylistDocument,\n CreateProfileDocument,\n DeletePlaylistDocument,\n DiscoverRecommendationsPageDocument,\n DiscoverRecommendationsPaginationDocument,\n EndlessPlayDocument,\n FavoriteAlbumsDocument,\n FavoriteArtistsDocument,\n FavoritesStatisticsDocument,\n FavoriteTracksDocument,\n FavoriteTracksSorting,\n HistoryRecommendationsPageDocument,\n HistoryRecommendationsPaginationDocument,\n InviteFlowHelpUrlDocument,\n InviteFlowHelpUrlQueryVariables,\n IsFavoriteDocument,\n LayoutItemContentPaginationDocument,\n LayoutItemPageDocument,\n LayoutItemPlayDocument,\n LayoutPageDocument,\n LiveRadioCategoryByLiveRadioLiveRadiosPaginationDocument,\n LiveRadioCategoryLiveRadiosPaginationDocument,\n LiveRadioCategoryPageByLiveRadioDocument,\n LiveRadioCategoryPageDocument,\n LiveRadioHeartbeatDocument,\n LiveRadioHeartbeatInSecondsDocument,\n LiveRadioNowAndRecentlyPlayedDocument,\n LiveRadioPlayDocument,\n LogoutAllDevicesDocument,\n LogoutAllDevicesQueryVariables,\n MarkNotificationsAsSeenDocument,\n MixRadioCategoryPageDocument,\n MixRadioCategoryPaginationDocument,\n MixRadioPlayDocument,\n MixRadioPreviewDocument,\n MixRadiosPageDocument,\n MixRadioTracksPaginationDocument,\n ModifyTracksInPlaylistDocument,\n NotificationsDocument,\n NotificationsPollDocument,\n OwnPlaylistsDocument,\n PlaybackFullDocument,\n PlaybackSampleDocument,\n PlaylistCategoriesPageDocument,\n PlaylistCategoriesPaginationDocument,\n PlaylistCategoryPageDocument,\n PlaylistCategoryPlaylistsPaginationDocument,\n PlaylistNotificationCheckDocument,\n PlaylistPageDocument,\n PlaylistPlayDocument,\n PlaylistPreviewDocument,\n PlaylistTracksPaginationDocument,\n RecentTracksDocument,\n RecommendationContentPaginationDocument,\n RecommendationPageDocument,\n RecommendationPlayDocument,\n RemoveAlbumFromFavoritesDocument,\n RemoveArtistFromFavoritesDocument,\n RemovePlaylistFromFavoritesDocument,\n RemoveProfileDocument,\n RemoveTrackFromFavoritesDocument,\n ReportLyricsDocument,\n ReportPlaybackDocument,\n SearchAlbumsPageDocument,\n SearchAlbumsPaginationDocument,\n SearchArtistsPageDocument,\n SearchArtistsPaginationDocument,\n SearchMixedSectionsDocument,\n SearchPlaylistsPageDocument,\n SearchPlaylistsPaginationDocument,\n SearchPlaylistsSectionDocument,\n SearchTracksPageDocument,\n SearchTracksPaginationDocument,\n SendFeedbackDocument,\n TrackChartNotificationCheckDocument,\n TrackChartPlayDocument,\n TrackLyricsIdDocument,\n TrackLyricsPageDocument,\n TrackLyricsPaginationDocument,\n TrackPreviewDocument,\n TrackRadioPageDocument,\n TrackRadioPlayDocument,\n TrackRecommendationNotificationCheckDocument,\n TrackRecommendationPreviewDocument,\n UpdatePlaylistDocument,\n UpdateProfileDocument,\n UrlTransformDocument,\n UseInviteFlowDocument,\n UseInviteFlowQueryVariables,\n UserId2Document,\n UserProfilesDocument\n} from \"generated/graphql-types\";\nimport { createStreamUrl, StreamUrlType } from \"models/app/player/input\";\nimport type { AlbumPreviewModel, FavoriteContentType, MixRadioLinkParentModel, RecommendationOwner, ResourceDisplayType } from \"models/domain\";\nimport {\n createAlbumArtistAlbumsPageModel,\n createAlbumPlayModel,\n createAlbumPreviewConnectionModel,\n createAlbumPreviewModel,\n createArtistAlbumsAppearsOnPageModel,\n createArtistAlbumsPageModel,\n createArtistPlayModel,\n createArtistPreviewConnectionModel,\n createArtistPreviewModel,\n createArtistRadioPageModel,\n createArtistRadioPlayModel,\n createArtistSimilarArtistsPageModel,\n createArtistSinglesPageModel,\n createArtistTracksPageModel,\n createChartItemPreviewConnectionModel,\n createChartPageModel,\n createChartPreviewModel,\n createDiscoverRecommendationsPage,\n createEndlessPlayModel,\n createHistoryRecommendationsPage,\n createLiveRadioCategoryPageModel,\n createLiveRadioPlayModel,\n createLiveRadioPlayTracks,\n createLiveRadioPreviewConnectionModel,\n createMixedContentTrackPlayModel,\n createMixRadioCategoryPageModel,\n createMixRadioPlayModel,\n createMixRadioPreviewConnectionModel,\n createMixRadioPreviewModel,\n createMixRadiosPageModel,\n createMyMusicAlbumsPageModel,\n createMyMusicArtistsPageModel,\n createMyMusicPlaylistsPageModel,\n createMyMusicTrackPreviewConnectionModel,\n createMyMusicTracksPageModel,\n createMyMusicTracksPlayModel,\n createNotificationPreviewConnectionModel,\n createPlaylistCategoriesPageModel,\n createPlaylistCategoryPageModel,\n createPlaylistCategoryPreviewConnectionModel,\n createPlaylistPageModel,\n createPlaylistPlayModel,\n createPlaylistPreviewConnectionModel,\n createPlaylistPreviewModel,\n createPlaylistTrackPreviewConnectionModel,\n createRecentTracksModel,\n createRecommendationItemPreviewConnectionModel,\n createRecommendationPageModel,\n createRecommendationPlayModel,\n createRecommendationPreviewConnectionModel,\n createRecommendationPreviewModel,\n createSearchAlbumResultsPageModel,\n createSearchArtistResultsPageModel,\n createSearchLimitedMainModel,\n createSearchLimitedPlaylistModel,\n createSearchPlaylistResultsPageModel,\n createSearchTrackResultsPageModel,\n createTrackChartPlayModel,\n createTrackNoAlbumPreviewConnectionModel,\n createTrackPlayablePreviewConnectionModelFromSearchTrackResult,\n createTrackPlayablePreviewModelFromMixedContentTrack,\n createTrackPreviewConnectionModel,\n createTrackRadioPageModel,\n createTrackRadioPlayModel,\n MixRadioLinkParentType\n} from \"models/domain\";\nimport { getLayoutPageItemConnectionModelItems } from \"models/domain/helpers\";\nimport { createLayoutItemContentModel, createLayoutItemPageModel, createLayoutPageModel, createTracksLayoutItemPlayModel } from \"models/domain/layoutPage\";\nimport { ContentType } from \"models/ModelType\";\nimport { createUserProfileModel } from \"models/app\";\nimport { hasPermissionFromToken } from \"services/user\";\n\nexport const useAlbumArtistAlbumsPage = (variables: AlbumArtistAlbumsPageQueryVariables) =>\n useQueryDomainModel(AlbumArtistAlbumsPageDocument, variables, (data) => data.catalog.album && createAlbumArtistAlbumsPageModel(data.catalog.album));\n\nexport const getAlbumArtistAlbumsPagination = (variables: AlbumArtistAlbumsPaginationQueryVariables) =>\n queryDomainModel(\n AlbumArtistAlbumsPaginationDocument,\n variables,\n (data) => data.catalog.album?.artist?.albums && createAlbumPreviewConnectionModel(data.catalog.album.artist.albums)\n );\n\nexport const useArtistAlbumsPage = (variables: ArtistAlbumsPageQueryVariables) =>\n useQueryDomainModel(ArtistAlbumsPageDocument, variables, (data) => data.catalog.artist && createArtistAlbumsPageModel(data.catalog.artist));\n\nexport const useArtistAppearsOnPage = (variables: ArtistAppearsOnAlbumsPageQueryVariables) =>\n useQueryDomainModel(ArtistAppearsOnAlbumsPageDocument, variables, (data) => data.catalog.artist && createArtistAlbumsAppearsOnPageModel(data.catalog.artist, variables.id)); //todo: v2 - spørg esben\n\nexport const getArtistAlbumsPagination = (variables: ArtistAlbumsPaginationQueryVariables) =>\n queryDomainModel(ArtistAlbumsPaginationDocument, variables, (data) => data.catalog.artist?.albums && createAlbumPreviewConnectionModel(data.catalog.artist.albums));\n\nexport const getArtistAppearsOnAlbumsPagination = (variables: ArtistAppearsOnAlbumsPaginationQueryVariables) =>\n queryDomainModel(ArtistAppearsOnAlbumsPaginationDocument, variables, (data) => data.catalog.artist?.albums && createAlbumPreviewConnectionModel(data.catalog.artist.albums));\n\nexport const useArtistSimilarArtistsPage = (variables: ArtistSimilarArtistsPageQueryVariables) =>\n useQueryDomainModel(ArtistSimilarArtistsPageDocument, variables, (data) => data.catalog.artist && createArtistSimilarArtistsPageModel(data.catalog.artist));\n\nexport const getArtistSimilarArtistsPagination = (variables: ArtistSimilarArtistsPaginationQueryVariables) =>\n queryDomainModel(\n ArtistSimilarArtistsPaginationDocument,\n variables,\n (data) => data.catalog.artist?.similarArtists && createArtistPreviewConnectionModel(data.catalog.artist.similarArtists)\n );\n\nexport const useArtistSinglesPage = (variables: ArtistSinglesPageQueryVariables) =>\n useQueryDomainModel(ArtistSinglesPageDocument, variables, (data) => data.catalog.artist && createArtistSinglesPageModel(data.catalog.artist));\n\nexport const getArtistSinglesPagination = (variables: ArtistSinglesPaginationQueryVariables) =>\n queryDomainModel(ArtistSinglesPaginationDocument, variables, (data) => data.catalog.artist?.singles && createAlbumPreviewConnectionModel(data.catalog.artist.singles));\n\nexport const useArtistTracksPage = (variables: ArtistTracksPageQueryVariables) =>\n useQueryDomainModel(ArtistTracksPageDocument, variables, (data) => data.catalog.artist && createArtistTracksPageModel(data.catalog.artist));\n\nexport const getArtistTracksPagination = (variables: ArtistTracksPaginationQueryVariables, index: number) =>\n queryDomainModel(ArtistTracksPaginationDocument, variables, (data) => data.catalog.artist?.tracks && createTrackPreviewConnectionModel(data.catalog.artist.tracks, index));\n\nexport const getLayoutItemContentPagination = (variables: LayoutItemContentPaginationQueryVariables) =>\n queryDomainModel(\n LayoutItemContentPaginationDocument,\n variables,\n (data) => data.layout?.item?.content && getLayoutPageItemConnectionModelItems(createLayoutItemContentModel(data.layout.item.content, variables.pageId, variables.itemId))\n );\n\nexport const useSearchAlbumsPage = (variables: SearchAlbumsPageQueryVariables, skip: boolean) =>\n useQueryDomainModel(SearchAlbumsPageDocument, variables, (data) => data.search && createSearchAlbumResultsPageModel(data.search, variables.criterion), skip);\n\nexport const getSearchAlbumsPagination = (variables: SearchAlbumsPaginationQueryVariables) =>\n queryDomainModel(SearchAlbumsPaginationDocument, variables, (data) => data.search.albums && createAlbumPreviewConnectionModel(data.search.albums));\n\nexport const useSearchArtistsPage = (variables: SearchArtistsPageQueryVariables, skip: boolean) =>\n useQueryDomainModel(SearchArtistsPageDocument, variables, (data) => data.search && createSearchArtistResultsPageModel(data.search, variables.criterion), skip);\n\nexport const getSearchArtistsPagination = (variables: SearchArtistsPaginationQueryVariables) =>\n queryDomainModel(SearchArtistsPaginationDocument, variables, (data) => data.search.artists && createArtistPreviewConnectionModel(data.search.artists));\n\nexport const useSearchPlaylistsPage = (variables: SearchPlaylistsPageQueryVariables, skip: boolean) =>\n useQueryDomainModel(SearchPlaylistsPageDocument, variables, (data) => data.search && createSearchPlaylistResultsPageModel(data.search, variables.criterion), skip);\n\nexport const getSearchPlaylistsPagination = (variables: SearchPlaylistsPaginationQueryVariables) =>\n queryDomainModel(SearchPlaylistsPaginationDocument, variables, (data) => data.search.playlists && createPlaylistPreviewConnectionModel(data.search.playlists));\n\nexport const useSearchTracksPage = (variables: SearchTracksPageQueryVariables, skip: boolean) =>\n useQueryDomainModel(SearchTracksPageDocument, variables, (data) => data.search && createSearchTrackResultsPageModel(data.search, variables.criterion), skip);\n\nexport const getSearchTracksPagination = (variables: SearchTracksPaginationQueryVariables) =>\n queryDomainModel(SearchTracksPaginationDocument, variables, (data) => data.search.tracks && createTrackPlayablePreviewConnectionModelFromSearchTrackResult(data.search.tracks));\n\nexport const useHistoryRecommendationsPage = (variables: HistoryRecommendationsPageQueryVariables) =>\n useQueryDomainModel(HistoryRecommendationsPageDocument, variables, (data) => data.me?.recommendations && createHistoryRecommendationsPage(data.me.recommendations));\n\nexport const getHistoryRecommendationsPagination = (variables: HistoryRecommendationsPaginationQueryVariables) =>\n queryDomainModel(\n HistoryRecommendationsPaginationDocument,\n variables,\n (data) => data.me?.recommendations.recommendations && createRecommendationPreviewConnectionModel(data.me.recommendations.recommendations, ContentType.UserHistory)\n );\n\nexport const getRedirectUrl = (variables: UrlTransformQueryVariables) => queryDomainModel(UrlTransformDocument, variables, (data) => data.system.urlTransform.url);\n\nexport const useDiscoverRecommendationsPage = (variables: DiscoverRecommendationsPageQueryVariables) =>\n useQueryDomainModel(DiscoverRecommendationsPageDocument, variables, (data) => data.me?.recommendations && createDiscoverRecommendationsPage(data.me.recommendations));\n\nexport const getDiscoverRecommendationsPagination = (variables: DiscoverRecommendationsPaginationQueryVariables) =>\n queryDomainModel(\n DiscoverRecommendationsPaginationDocument,\n variables,\n (data) => data.me?.recommendations.recommendations && createRecommendationPreviewConnectionModel(data.me.recommendations.recommendations, ContentType.UserRecommendations)\n );\n\n//#endregion\n\n//#region artist page\n//TODO: rename or leave as is?\nexport const fillArtistPage_headerSection = (variables: ArtistPageHeaderSectionQueryVariables) =>\n queryDomainModel(ArtistPageHeaderSectionDocument, variables, (data) => data.catalog.artist);\n\nexport const fillArtistPage_artistTracks = (variables: ArtistPopularTracksSectionQueryVariables) =>\n queryDomainModel(ArtistPopularTracksSectionDocument, variables, (data) => data.catalog.artist);\n\nexport const fillArtistPage_artistAlbums = (variables: ArtistAlbumsSectionQueryVariables) =>\n queryDomainModel(ArtistAlbumsSectionDocument, variables, (data) => data.catalog.artist);\n\nexport const fillArtistPage_artistSingles = (variables: ArtistSinglesSectionQueryVariables) =>\n queryDomainModel(ArtistSinglesSectionDocument, variables, (data) => data.catalog.artist);\n\nexport const fillArtistPage_similarArtists = (variables: ArtistSimilarArtistsSectionQueryVariables) =>\n queryDomainModel(ArtistSimilarArtistsSectionDocument, variables, (data) => data.catalog.artist);\n\nexport const fillArtistPage_appearsOn = (variables: ArtistAppearsOnAlbumsSectionQueryVariables) =>\n queryDomainModel(ArtistAppearsOnAlbumsSectionDocument, variables, (data) => data.catalog.artist);\n\n//#endregion\n\n//#region product pages\n\nexport const useArtistRadioPage = (variables: ArtistRadioPageQueryVariables) =>\n useQueryDomainModel(ArtistRadioPageDocument, variables, (data) => data.catalog.artist && createArtistRadioPageModel(data.catalog.artist));\n\nexport const useChartPage = (variables: ChartPageQueryVariables) =>\n useQueryDomainModel(ChartPageDocument, variables, (data) => data.charts.chart && createChartPageModel(data.charts.chart));\n\nexport const getChartItems = (variables: ChartItemsPaginationQueryVariables, index: number) =>\n queryDomainModel(ChartItemsPaginationDocument, variables, (data) => data.charts.chart && createChartItemPreviewConnectionModel(data.charts.chart, index));\n\nexport const useLiveRadioCategoryPageByLiveRadio = (variables: LiveRadioCategoryPageByLiveRadioQueryVariables) =>\n useQueryDomainModel(\n LiveRadioCategoryPageByLiveRadioDocument,\n variables,\n (data) => data.liveRadios.radio?.category && createLiveRadioCategoryPageModel(data.liveRadios.radio.category)\n );\n\nexport const getLiveRadioCategoryByLiveRadioLiveRadiosPagination = (variables: LiveRadioCategoryByLiveRadioLiveRadiosPaginationQueryVariables) =>\n queryDomainModel(\n LiveRadioCategoryByLiveRadioLiveRadiosPaginationDocument,\n variables,\n (data) => data.liveRadios.radio?.category?.radios && createLiveRadioPreviewConnectionModel(data.liveRadios.radio.category.radios)\n );\n\nexport const useLiveRadioCategoryPage = (variables: LiveRadioCategoryPageQueryVariables) =>\n useQueryDomainModel(LiveRadioCategoryPageDocument, variables, (data) => data.liveRadios.category && createLiveRadioCategoryPageModel(data.liveRadios.category));\n\nexport const getLiveRadioCategoryLiveRadiosPagination = (variables: LiveRadioCategoryLiveRadiosPaginationQueryVariables) =>\n queryDomainModel(\n LiveRadioCategoryLiveRadiosPaginationDocument,\n variables,\n (data) => data.liveRadios.category?.radios && createLiveRadioPreviewConnectionModel(data.liveRadios.category.radios)\n );\n\nexport const useMixRadioCategoryPage = (variables: MixRadioCategoryPageQueryVariables) =>\n useQueryDomainModel(MixRadioCategoryPageDocument, variables, (data) => data.mixRadios.category && createMixRadioCategoryPageModel(data.mixRadios.category));\n\nexport const getMixRadioCategoryPagination = (variables: MixRadioCategoryPaginationQueryVariables) =>\n queryDomainModel(\n MixRadioCategoryPaginationDocument,\n variables,\n (data) =>\n data.mixRadios.category?.radios &&\n createMixRadioPreviewConnectionModel(data.mixRadios.category?.radios, { type: MixRadioLinkParentType.MixRadioCategory, categoryId: variables.id })\n );\n\nexport const useMixRadiosPage = (variables: MixRadiosPageQueryVariables, radioId?: string) =>\n useQueryDomainModel(MixRadiosPageDocument, variables, (data) => createMixRadiosPageModel(data.mixRadios, radioId));\n\nexport const usePlaylistCategoryPage = (variables: PlaylistCategoryPageQueryVariables) =>\n useQueryDomainModel(\n PlaylistCategoryPageDocument,\n variables,\n (data) => data.playlists.playlistCategories.playlistCategory && createPlaylistCategoryPageModel(data.playlists.playlistCategories.playlistCategory)\n );\n\nexport const getPlaylistCategoryPlaylistsPagination = (variables: PlaylistCategoryPlaylistsPaginationQueryVariables) =>\n queryDomainModel(\n PlaylistCategoryPlaylistsPaginationDocument,\n variables,\n (data) =>\n data.playlists.playlistCategories.playlistCategory?.playlists && createPlaylistPreviewConnectionModel(data.playlists.playlistCategories.playlistCategory.playlists)\n );\n\nexport const usePlaylistPage = (variables: PlaylistPageQueryVariables) =>\n useQueryDomainModel(PlaylistPageDocument, variables, (data) => data.playlists.playlist && createPlaylistPageModel(data.playlists.playlist), undefined, undefined, true);\n\nexport const getPlaylistPage = (variables: PlaylistPageQueryVariables) =>\n queryDomainModel(PlaylistPageDocument, variables, (data) => {\n //console.log(`mapping playlist with ${data.playlists?.playlist?.tracks?.items?.length} tracks`);\n return data.playlists.playlist && createPlaylistPageModel(data.playlists.playlist);\n });\n\nexport const getPlaylistTracksPagination = (variables: PlaylistTracksPaginationQueryVariables) =>\n queryDomainModel(\n PlaylistTracksPaginationDocument,\n variables,\n (data) => data.playlists.playlist?.tracks && createPlaylistTrackPreviewConnectionModel(data.playlists.playlist?.tracks)\n );\n\nexport const useRecommendationPage = (variables: RecommendationPageQueryVariables, owner: RecommendationOwner) =>\n useQueryDomainModel(\n RecommendationPageDocument,\n variables,\n (data) => data.me?.recommendations.recommendation && createRecommendationPageModel(data.me.recommendations.recommendation, owner),\n false,\n true\n );\n\nexport const getRecommendationContentPagination = (variables: RecommendationContentPaginationQueryVariables, index: number) =>\n queryDomainModel(\n RecommendationContentPaginationDocument,\n variables,\n (data) => data.me?.recommendations.recommendation && createRecommendationItemPreviewConnectionModel(data.me.recommendations.recommendation, index)\n );\n\nexport const usePlaylistCategoriesPage = (variables: PlaylistCategoriesPageQueryVariables) =>\n useQueryDomainModel(\n PlaylistCategoriesPageDocument,\n variables,\n (data) => data.playlists.playlistCategories && createPlaylistCategoriesPageModel(data.playlists.playlistCategories.playlistCategories)\n ); //TODO: reload when translations arrive from backend\n\nexport const getPlaylistCategoriesPagination = (variables: PlaylistCategoriesPaginationQueryVariables) =>\n queryDomainModel(\n PlaylistCategoriesPaginationDocument,\n variables,\n (data) => data.playlists.playlistCategories && createPlaylistCategoryPreviewConnectionModel(data.playlists.playlistCategories.playlistCategories)\n );\n\nexport const useTrackRadioPage = (variables: TrackRadioPageQueryVariables) =>\n useQueryDomainModel(TrackRadioPageDocument, variables, (data) => data.catalog.track && createTrackRadioPageModel(data.catalog.track));\n\n//#endregion\n\n//#region myMusic pages\nexport const useFavoriteAlbumsPage = (variables: FavoriteAlbumsQueryVariables, skip: boolean) =>\n useQueryDomainModel(FavoriteAlbumsDocument, variables, (data) => createMyMusicAlbumsPageModel(data.me.favorites), skip);\n\nexport const getFavoriteAlbums = (variables: FavoriteAlbumsQueryVariables) =>\n queryDomainModel(FavoriteAlbumsDocument, variables, (data) => createAlbumPreviewConnectionModel(data.me.favorites.albums));\n\nexport const useFavoriteArtistsPage = (variables: FavoriteArtistsQueryVariables, skip: boolean) =>\n useQueryDomainModel(FavoriteArtistsDocument, variables, (data) => createMyMusicArtistsPageModel(data.me.favorites), skip);\n\nexport const getFavoriteArtists = (variables: FavoriteArtistsQueryVariables) =>\n queryDomainModel(FavoriteArtistsDocument, variables, (data) => createArtistPreviewConnectionModel(data.me.favorites.artists));\n\nexport const useFavoritePlaylistsPage = (variables: CombinedPlaylistsPaginationQueryVariables, skip: boolean) =>\n useQueryDomainModel(CombinedPlaylistsPaginationDocument, variables, (data) => createMyMusicPlaylistsPageModel(data.me.playlists), skip);\n\nexport const getCombinedPlaylistsPagination = (variables: CombinedPlaylistsPaginationQueryVariables) =>\n queryDomainModel(CombinedPlaylistsPaginationDocument, variables, (data) => createPlaylistPreviewConnectionModel(data.me.playlists.combinedPlaylists));\n\nexport const useFavoriteTracksPage = (variables: FavoriteTracksQueryVariables, skip: boolean) =>\n useQueryDomainModel(FavoriteTracksDocument, variables, (data) => createMyMusicTracksPageModel(data.me.favorites, variables.orderBy), skip);\n\nexport const getFavoriteTracks = (variables: FavoriteTracksQueryVariables) =>\n queryDomainModel(FavoriteTracksDocument, variables, (data) => data.me.favorites.tracks && createMyMusicTrackPreviewConnectionModel(data.me.favorites.tracks));\n\nexport const getFavoritesStatistics = () => queryDomainModel(FavoritesStatisticsDocument, {}, (data) => data.me.favorites);\n\n//#endregion\n\n//#region album page\n\nexport const getAlbumHeaderSection = (variables: AlbumHeaderSectionQueryVariables): Promise<DomainQueryResult<AlbumHeaderSectionFragment>> =>\n queryDomainModel(AlbumHeaderSectionDocument, variables, (data) => data.catalog.album);\n\nexport const getAlbumHeaderSectionByTrack = (variables: AlbumHeaderSectionByTrackQueryVariables): Promise<DomainQueryResult<AlbumHeaderSectionFragment>> =>\n queryDomainModel(AlbumHeaderSectionByTrackDocument, variables, (data) => data.catalog.track?.album);\n\nexport const getAlbumTracksSection = (variables: AlbumTracksSectionQueryVariables) => queryDomainModel(AlbumTracksSectionDocument, variables, (data) => data.catalog.album);\n\nexport const getAlbumTracksSectionByTrack = (variables: AlbumTracksSectionByTrackQueryVariables) =>\n queryDomainModel(AlbumTracksSectionByTrackDocument, variables, (data) => data.catalog.track?.album);\n\nexport const getAlbumArtistAlbumsSection = (variables: AlbumArtistAlbumsSectionQueryVariables) =>\n queryDomainModel(AlbumArtistAlbumsSectionDocument, variables, (data) => data.catalog.album);\n\nexport const getAlbumArtistAlbumsByTrackSection = (variables: AlbumArtistAlbumsByTrackSectionQueryVariables) =>\n queryDomainModel(AlbumArtistAlbumsByTrackSectionDocument, variables, (data) => data.catalog.track?.album);\n\nexport const getAlbumTracksPagination = (variables: AlbumTracksPaginationQueryVariables, album: AlbumPreviewModel) =>\n queryDomainModel(\n AlbumTracksPaginationDocument,\n variables,\n (data) => data.catalog.album?.tracks && createTrackNoAlbumPreviewConnectionModel(data.catalog.album.tracks, album.cover, album)\n );\n\n//#endregion\n\n//#region layout page\n//TODO: v2 - placeholder??\nexport const useLayoutPageSkeleton = (variables: LayoutPageQueryVariables) =>\n useQueryDomainModel(LayoutPageDocument, variables, (data) => data.layout && createLayoutPageModel(data.layout), false, true); //TODO: is this necessary?\n\nexport const useLayoutPage = (variables: LayoutPageQueryVariables) =>\n useQueryDomainModel(LayoutPageDocument, variables, (data) => data.layout && createLayoutPageModel(data.layout), false, true);\n\nexport const getLayoutItemPage = (variables: LayoutItemPageQueryVariables, displayType: ResourceDisplayType) =>\n queryDomainModel(LayoutItemPageDocument, variables, (data) => data.layout?.item && createLayoutItemPageModel(data.layout.item, variables.pageId, displayType));\n\nexport const useLayoutItemPage = (variables: LayoutItemPageQueryVariables) =>\n useQueryDomainModel(LayoutItemPageDocument, variables, (data) => data.layout?.item && createLayoutItemPageModel(data.layout.item, variables.pageId));\n\n//#endregion\n\n//#region play queries\n\nexport const getMixedContentTrackPlay = (variables: TrackPreviewQueryVariables) =>\n queryDomainModel(TrackPreviewDocument, variables, (data) => data.catalog.track && createMixedContentTrackPlayModel(data.catalog.track));\n\nexport const getRecommendationPlay = (variables: RecommendationPlayQueryVariables, owner: RecommendationOwner) =>\n queryDomainModel(\n RecommendationPlayDocument,\n variables,\n (data) => data.me?.recommendations.recommendation && createRecommendationPlayModel(data.me.recommendations.recommendation, owner)\n );\n\n//#endregion\n\n//#region MixedContent's context menu queries\n\nexport const getAlbumPreview = (variables: AlbumPreviewQueryVariables) =>\n queryDomainModel(AlbumPreviewDocument, variables, (data) => data.catalog.album && createAlbumPreviewModel(data.catalog.album));\n\nexport const getArtistPreview = (variables: ArtistPreviewQueryVariables) =>\n queryDomainModel(ArtistPreviewDocument, variables, (data) => data.catalog.artist && createArtistPreviewModel(data.catalog.artist));\n//TODO: these seem wrong? it's the same but not realy?\nexport const getPlaylistPreview = (variables: PlaylistPreviewQueryVariables) =>\n queryDomainModel(PlaylistPreviewDocument, variables, (data) => data.playlists.playlist && createPlaylistPreviewModel(data.playlists.playlist));\n\n//TODO: rename or leave as is?\nexport const getTrackChartPreview = (variables: ChartPreviewQueryVariables) =>\n queryDomainModel(ChartPreviewDocument, variables, (data) => data.charts.chart && createChartPreviewModel(data.charts.chart));\n\nexport const getTrackPreview = (variables: TrackPreviewQueryVariables) =>\n queryDomainModel(TrackPreviewDocument, variables, (data) => data.catalog.track && createTrackPlayablePreviewModelFromMixedContentTrack(data.catalog.track));\n\n//#endregion\n\n//#region Player queries\n\nexport const getPlaybackSample = (variables: PlaybackSampleQueryVariables) =>\n queryDomainModel(PlaybackSampleDocument, variables, (data) => data.playback.sample && createStreamUrl(data.playback.sample, StreamUrlType.Mp3));\nexport const getPlaybackFull = (variables: PlaybackFullQueryVariables) =>\n queryDomainModel(PlaybackFullDocument, variables, (data) => data.playback.full && createStreamUrl(data.playback.full, StreamUrlType.Hls));\n\n//#endregion\n\n//#region notification feed\nexport const getPlaylistNotificationCheck = (variables: PlaylistNotificationCheckQueryVariables) => queryDomainModel(PlaylistNotificationCheckDocument, variables, (data) => data);\n\nexport const getTrackRecommendationNotificationCheck = (variables: TrackRecommendationNotificationCheckQueryVariables) =>\n queryDomainModel(TrackRecommendationNotificationCheckDocument, variables, (data) => data);\n\nexport const getTrackChartNotificationCheck = (variables: TrackChartNotificationCheckQueryVariables) =>\n queryDomainModel(TrackChartNotificationCheckDocument, variables, (data) => data);\n\nexport const getTrackRecommendationPreview = (variables: TrackRecommendationPreviewQueryVariables) =>\n queryDomainModel(TrackRecommendationPreviewDocument, variables, (data) =>\n data.me?.recommendations.recommendation ? createRecommendationPreviewModel(data.me.recommendations.recommendation, ContentType.UserRecommendations) : null\n );\n\nexport const getChartPreview = (variables: ChartPreviewQueryVariables) =>\n queryDomainModel(ChartPreviewDocument, variables, (data) => (data.charts.chart ? createChartPreviewModel(data.charts.chart) : null));\n\nexport const getNotifications = (variables: NotificationsQueryVariables) =>\n queryDomainModel(NotificationsDocument, variables, (data) => ({\n notSeenCount: data.me.notifications.notSeenCount,\n notificationState: data.me.notifications.available.notificationsState,\n notifications: createNotificationPreviewConnectionModel(data.me.notifications.available.notifications)\n }));\n\nexport const getNotificationsStatus = () =>\n queryDomainModel(NotificationsPollDocument, {}, (data) => ({\n notSeenCount: data.me.notifications.notSeenCount\n }));\n\nexport const mutateMarkNotificationsAsSeen = async (variables: MarkNotificationsAsSeenMutationVariables) =>\n mutateDomainModel(MarkNotificationsAsSeenDocument, variables, (data) => data.notifications.markAsSeen.ok);\n\n//#endregion\n\nexport const getAlbumPlay = (variables: AlbumPlayQueryVariables) =>\n queryDomainModel(AlbumPlayDocument, variables, (data) => data.catalog.album && createAlbumPlayModel(data.catalog.album));\n\nexport const getAlbumArtistAlbumsPage = (variables: AlbumArtistAlbumsPageQueryVariables) =>\n queryDomainModel(AlbumArtistAlbumsPageDocument, variables, (data) => data.catalog.album && createAlbumArtistAlbumsPageModel(data.catalog.album));\n\nexport const getArtistPlay = (variables: ArtistPlayQueryVariables, index: number) =>\n queryDomainModel(ArtistPlayDocument, variables, (data) => data.catalog.artist && createArtistPlayModel(data.catalog.artist, index));\n\nexport const getArtistRadioPage = (variables: ArtistRadioPageQueryVariables) =>\n queryDomainModel(ArtistRadioPageDocument, variables, (data) => data.catalog.artist && createArtistRadioPlayModel(data.catalog.artist));\n\nexport const getArtistSinglesPage = (variables: ArtistSinglesPageQueryVariables) =>\n queryDomainModel(ArtistSinglesPageDocument, variables, (data) => data.catalog.artist && createArtistSinglesPageModel(data.catalog.artist));\n\nexport const getTrackChartPlay = (variables: TrackChartPlayQueryVariables) =>\n queryDomainModel(TrackChartPlayDocument, variables, (data) => data.charts.chart && createTrackChartPlayModel(data.charts.chart));\n\nexport const getLayoutItemPlay = (variables: LayoutItemPlayQueryVariables) =>\n queryDomainModel(LayoutItemPlayDocument, variables, (data) => data.layout?.item && createTracksLayoutItemPlayModel(data.layout.item, variables.pageId));\n\nexport const getPlaylistPlay = (variables: PlaylistPlayQueryVariables) =>\n queryDomainModel(PlaylistPlayDocument, variables, (data) => data.playlists.playlist && createPlaylistPlayModel(data.playlists.playlist));\n\nexport const getMixRadioPlay = (variables: MixRadioPlayQueryVariables, parent: MixRadioLinkParentModel) =>\n queryDomainModel(MixRadioPlayDocument, variables, (data) => data.mixRadios.radio && createMixRadioPlayModel(data.mixRadios.radio, parent));\n\nexport const getMixRadioPreview = (variables: MixRadioPreviewQueryVariables, parent: MixRadioLinkParentModel) =>\n queryDomainModel(MixRadioPreviewDocument, variables, (data) => data.mixRadios.radio && createMixRadioPreviewModel(data.mixRadios.radio, parent));\n\nexport const getMixRadioTracksPagination = (variables: MixRadioTracksPaginationQueryVariables) =>\n queryDomainModel(MixRadioTracksPaginationDocument, variables, (data) => data.mixRadios.radio?.tracks && createTrackPreviewConnectionModel(data.mixRadios.radio.tracks, 0));\n\nexport const getLiveRadioPlay = (variables: LiveRadioPlayQueryVariables) =>\n queryDomainModel(LiveRadioPlayDocument, variables, (data) => data.liveRadios.radio && createLiveRadioPlayModel(data.liveRadios.radio));\n\nexport const getLiveRadioNowAndRecentlyPlayed = (variables: LiveRadioNowAndRecentlyPlayedQueryVariables) =>\n queryDomainModel(LiveRadioNowAndRecentlyPlayedDocument, variables, (data) => data.liveRadios.radio && createLiveRadioPlayTracks(data.liveRadios.radio));\n\nexport const getMyMusicTracksPlay = (variables: FavoriteTracksQueryVariables) => {\n return queryDomainModel(\n FavoriteTracksDocument,\n variables,\n (data) => createMyMusicTracksPlayModel(data.me.favorites, FavoriteTracksSorting.LatestAdded) // TODO: v2\n );\n};\n\nexport const getRecentTracks = (variables: RecentTracksQueryVariables) => queryDomainModel(RecentTracksDocument, variables, (data) => createRecentTracksModel(data.me));\n\nexport const getMeEndlessPlay = (variables: EndlessPlayQueryVariables) =>\n queryDomainModel(EndlessPlayDocument, variables, (data) => (data.catalog.track?.endlessPlay ? createEndlessPlayModel(data.catalog.track.endlessPlay) : null));\n\nexport type UserIdModel = Awaited<ReturnType<typeof getUser>>[\"model\"];\nexport const getUser = () =>\n queryDomainModel(UserId2Document, { includeProfiles: hasPermissionFromToken(\"prof\") }, (data) => ({\n id: data.me.user.id,\n trackingId: data.me.user.trackingId,\n needInvite: data.me.user.useInviteFlow,\n username: data.me.user.username ?? null,\n profiles: data.me.user.profiles?.profiles?.items?.map(createUserProfileModel) ?? [],\n profilesNumberLimit: data.me.user.profiles?.settings.profilesNumberLimit ?? 1,\n profileDefaultColors: (data.me.user.profiles?.settings.defaultColors as string[]) ?? []\n }));\n\nexport const getUserProfiles = () =>\n queryDomainModel(UserProfilesDocument, {}, (data) => ({\n profiles: data.me.user.profiles?.profiles?.items?.map(createUserProfileModel) ?? [],\n profilesNumberLimit: data.me.user.profiles?.settings.profilesNumberLimit ?? 1,\n profileDefaultColors: (data.me.user.profiles?.settings.defaultColors as string[]) ?? []\n }));\n\nexport const getLimitedSearchResultMain = (variables: SearchMixedSectionsQueryVariables) =>\n queryDomainModel(SearchMixedSectionsDocument, variables, (data) => createSearchLimitedMainModel(data.search, variables.criterion));\n\nexport const getLimitedSearchResultPlaylists = (variables: SearchPlaylistsSectionQueryVariables) =>\n queryDomainModel(SearchPlaylistsSectionDocument, variables, (data) => createSearchLimitedPlaylistModel(data.search, variables.criterion));\n\nexport const getTrackRadioPlay = (variables: TrackRadioPlayQueryVariables) =>\n queryDomainModel(TrackRadioPlayDocument, variables, (data) => data.catalog.track && createTrackRadioPlayModel(data.catalog.track));\n\nexport const getIsFavorite = (variables: IsFavoriteQueryVariables) => queryDomainModel(IsFavoriteDocument, variables, (data) => data.me.favorites.isFavorite?.isFavorite ?? null);\n\n// todo: this caching needs to go away when we introduce the favorites delta service\nconst favorite_cache = new Map<string, boolean>();\n\nexport function clearTemporaryFavoriteCache() {\n favorite_cache.clear();\n}\n\nexport async function getIsMeFavoriteWithCustomCache(type: FavoriteContentType, id: string) {\n let isFavorite: boolean | null = null;\n if (!id || !type) {\n return false;\n }\n const cacheId = `${type}_${id}`;\n isFavorite = favorite_cache.get(cacheId) ?? null;\n\n if (isFavorite != null) return isFavorite;\n isFavorite = await getIsMeFavorite(id, type);\n\n if (isFavorite != null) {\n favorite_cache.set(cacheId, isFavorite);\n setTimeout(() => favorite_cache.delete(cacheId), 10_000);\n }\n\n return isFavorite;\n}\n\nconst getIsMeFavorite = async (id: string, type: FavoriteContentType) => {\n const favoritesStatus = await getIsFavorite({ id, type });\n if (favoritesStatus == null) {\n log.error({ code: \"web-220216-1633\", msg: \"unable to retrieve favoritesStatus\" });\n return null;\n }\n return favoritesStatus.model;\n};\n\nexport const getOwnPlaylists = () =>\n queryDomainModel(OwnPlaylistsDocument, {}, (data) => data.me.playlists.ownPlaylists && createPlaylistPreviewConnectionModel(data.me.playlists.ownPlaylists));\n\nexport const mutateProvideFeedback = (variables: SendFeedbackMutationVariables) => mutateDomainModel(SendFeedbackDocument, variables, (data) => data.feedbacks.send.ok);\n\nexport const mutateAddTrackToFavorites = async (variables: AddTrackToFavoritesMutationVariables) => {\n const result = await mutateDomainModelWithErrors(AddTrackToFavoritesDocument, variables);\n return {\n ok: result?.data?.favorites.addTrack.ok ?? false,\n limitExceeded: result?.errors?.some((n) => n.extensions?.code === \"FAVORITES_LIMIT_EXCEEDED\") === true\n };\n};\n\nexport const mutateAddProfile = async (input: CreateProfileMutationVariables[\"input\"]) => {\n const result = await mutateDomainModelWithErrors(CreateProfileDocument, { input });\n return {\n ok: result?.data?.profiles.addProfile?.ok ?? false,\n profile: result?.data?.profiles.addProfile?.profile ? createUserProfileModel(result.data.profiles.addProfile.profile) : null\n };\n};\n\nexport const mutateUpdateProfile = async (variables: UpdateProfileMutationVariables) => {\n const result = await mutateDomainModelWithErrors(UpdateProfileDocument, variables);\n return {\n ok: result?.data?.profiles.updateProfile?.ok ?? false\n };\n};\n\nexport const mutateRemoveProfile = async (variables: RemoveProfileMutationVariables) => {\n const result = await mutateDomainModelWithErrors(RemoveProfileDocument, variables);\n return {\n ok: result?.data?.profiles.removeProfile?.ok ?? false\n };\n};\n\nconst lyricsIdCache: { [id: string]: DomainQueryResult<string | null> } = {\n 0: {\n model: null,\n error: null,\n errorReason: \"\",\n loading: false,\n success: false\n }\n};\n\nexport const getTrackLyricsId = async (variables: TrackLyricsIdQueryVariables): Promise<DomainQueryResult<string | null>> => {\n if (lyricsIdCache[variables.id]) return lyricsIdCache[variables.id];\n const result = await queryDomainModel(TrackLyricsIdDocument, variables, (data) => data.catalog.track?.lyrics?.id ?? null);\n if (result.success) lyricsIdCache[variables.id] = result;\n return result;\n};\n\nexport const useTrackLyricsId = (variables: TrackLyricsIdQueryVariables) => {\n const [result, setResult] = useState<DomainQueryResult<string | null> | null>(null);\n useEffect(() => {\n getTrackLyricsId({ id: variables.id }).then(setResult);\n }, [variables.id, setResult]);\n return result;\n};\n\nexport const getTrackLyrics = (variables: TrackLyricsPageQueryVariables) => queryDomainModel(TrackLyricsPageDocument, variables, (data) => data.catalog.track?.lyrics ?? null);\n\nexport const getTrackLyricsPagination = (variables: TrackLyricsPaginationQueryVariables) =>\n queryDomainModel(TrackLyricsPaginationDocument, variables, (data) => data.catalog.track?.lyrics ?? null);\n\nexport const mutateRemoveTrackFromFavorites = (variables: RemoveTrackFromFavoritesMutationVariables) =>\n mutateDomainModel(RemoveTrackFromFavoritesDocument, variables, (data) => data.favorites.removeTrack.ok);\n\nexport const mutateAddAlbumToFavorites = async (variables: AddAlbumToFavoritesMutationVariables) => {\n const result = await mutateDomainModelWithErrors(AddAlbumToFavoritesDocument, variables);\n return {\n ok: result?.data?.favorites.addAlbum.ok ?? false,\n limitExceeded: result?.errors?.some((n) => n.extensions?.code === \"FAVORITES_LIMIT_EXCEEDED\") === true\n };\n};\n\nexport const mutateRemoveAlbumFromFavorites = (variables: RemoveAlbumFromFavoritesMutationVariables) =>\n mutateDomainModel(RemoveAlbumFromFavoritesDocument, variables, (data) => data.favorites.removeAlbum.ok);\n\nexport const mutateAddArtistToFavorites = async (variables: AddArtistToFavoritesMutationVariables) => {\n const result = await mutateDomainModelWithErrors(AddArtistToFavoritesDocument, variables);\n return {\n ok: result?.data?.favorites.addArtist.ok ?? false,\n limitExceeded: result?.errors?.some((n) => n.extensions?.code === \"FAVORITES_LIMIT_EXCEEDED\") === true\n };\n};\n\nexport const mutateRemoveArtistFromFavorites = (variables: RemoveArtistFromFavoritesMutationVariables) =>\n mutateDomainModel(RemoveArtistFromFavoritesDocument, variables, (data) => data.favorites.removeArtist.ok);\n\nexport const mutateAddPlaylistToFavorites = async (variables: AddPlaylistToFavoritesMutationVariables) => {\n const result = await mutateDomainModelWithErrors(AddPlaylistToFavoritesDocument, variables);\n return {\n ok: result?.data?.favorites.addPlaylist.ok ?? false,\n limitExceeded: result?.errors?.some((n) => n.extensions?.code === \"FAVORITES_LIMIT_EXCEEDED\") === true\n };\n};\n\nexport const mutateRemovePlaylistFromFavorites = (variables: RemovePlaylistFromFavoritesMutationVariables) =>\n mutateDomainModel(RemovePlaylistFromFavoritesDocument, variables, (data) => data.favorites.removePlaylist.ok);\n\nexport const mutateReportLyrics = async (variables: ReportLyricsMutationVariables): Promise<boolean> =>\n (await mutateDomainModel(ReportLyricsDocument, variables, (data) => data.lyrics.reportLyricsDisplay.ok)) ?? false;\n\nexport const mutateReportPlayback = async (variables: ReportPlaybackMutationVariables): Promise<boolean> =>\n (await mutateDomainModel(ReportPlaybackDocument, variables, (data) => data.reportPlayback.ok)) ?? false;\n\nexport const mutateSetActivePlaybackStream = () => mutateDomainModel(ConcurrencyCreateTicketDocument, {}, (data) => data.playbackConcurrency.createTicket);\n\nexport const mutateGetPlaybackStream = (variables: ConcurrencyCanPlayMutationVariables) =>\n mutateDomainModel(ConcurrencyCanPlayDocument, variables, (data) => data.playbackConcurrency.canPlay.canPlay);\n\nexport const mutateCreatePlaylist = (variables: CreatePlaylistMutationVariables) =>\n mutateDomainModel(CreatePlaylistDocument, variables, (data) => data.playlists.create.playlist.id ?? null);\n\nexport const mutateDeletePlaylist = (variables: DeletePlaylistMutationVariables) => mutateDomainModel(DeletePlaylistDocument, variables, (data) => data.playlists.delete.ok);\n\nexport const mutateModifyPlaylist = (variables: UpdatePlaylistMutationVariables) =>\n mutateDomainModel(UpdatePlaylistDocument, variables, (data) => data.playlists.update.playlist.id ?? null);\n\nexport const mutateAddTracksToPlaylist = async (variables: AddTracksToPlaylistMutationVariables) => {\n const result = await mutateDomainModelWithErrors(AddTracksToPlaylistDocument, variables);\n return {\n wasAdded: result?.data ? result.data.playlists.addTracks.ok : false,\n addedCount: result?.data?.playlists.addTracks.addedCount ?? 0,\n duplicates: result?.errors?.some((n) => n.extensions?.code === \"TRACKS_DUPLICATION\") === true,\n duplicatesCount: (result?.errors?.find((n) => n.extensions?.code === \"TRACKS_DUPLICATION\")?.extensions.duplicatedTrackIds as string[] | undefined)?.length ?? 0\n };\n};\n\nexport const mutateAddAlbumToPlaylist = async (variables: AddAlbumToPlaylistMutationVariables) => {\n const result = await mutateDomainModelWithErrors(AddAlbumToPlaylistDocument, variables);\n return {\n wasAdded: result?.data ? result.data.playlists.addAlbum.ok : false,\n addedCount: result?.data?.playlists.addAlbum.addedCount ?? 0,\n duplicates: result?.errors?.some((n) => n.extensions?.code === \"TRACKS_DUPLICATION\") === true,\n duplicatesCount: (result?.errors?.find((n) => n.extensions?.code === \"TRACKS_DUPLICATION\")?.extensions.duplicatedTrackIds as string[] | undefined)?.length ?? 0\n };\n};\n\nexport const mutateAddPlaylistToPlaylist = async (variables: AddPlaylistToPlaylistMutationVariables) => {\n const result = await mutateDomainModelWithErrors(AddPlaylistToPlaylistDocument, variables);\n return {\n wasAdded: result?.data ? result.data.playlists.addPlaylist.ok : false,\n addedCount: result?.data?.playlists.addPlaylist.addedCount ?? 0,\n duplicates: result?.errors?.some((n) => n.extensions?.code === \"TRACKS_DUPLICATION\") === true,\n duplicatesCount: (result?.errors?.find((n) => n.extensions?.code === \"TRACKS_DUPLICATION\")?.extensions.duplicatedTrackIds as string[] | undefined)?.length ?? 0\n };\n};\n\nexport const mutateAddTrackChartToPlaylist = async (variables: AddTrackChartToPlaylistMutationVariables) => {\n const result = await mutateDomainModelWithErrors(AddTrackChartToPlaylistDocument, variables);\n return {\n wasAdded: result?.data ? result.data.playlists.addChart.ok : false,\n addedCount: result?.data?.playlists.addChart.addedCount ?? 0,\n duplicates: result?.errors?.some((n) => n.extensions?.code === \"TRACKS_DUPLICATION\") === true,\n duplicatesCount: (result?.errors?.find((n) => n.extensions?.code === \"TRACKS_DUPLICATION\")?.extensions.duplicatedTrackIds as string[] | undefined)?.length ?? 0\n };\n};\n\nexport const mutateAddRecommendationToPlaylist = async (variables: AddRecommendationToPlaylistMutationVariables) => {\n const result = await mutateDomainModelWithErrors(AddRecommendationToPlaylistDocument, variables);\n return {\n wasAdded: result?.data ? result.data.playlists.addRecommendation.ok : false,\n addedCount: result?.data?.playlists.addRecommendation.addedCount ?? 0,\n duplicates: result?.errors?.some((n) => n.extensions?.code === \"TRACKS_DUPLICATION\") === true,\n duplicatesCount: (result?.errors?.find((n) => n.extensions?.code === \"TRACKS_DUPLICATION\")?.extensions.duplicatedTrackIds as string[] | undefined)?.length ?? 0\n };\n};\n\nexport const mutateModifyTracksInPlaylist = (variables: ModifyTracksInPlaylistMutationVariables) =>\n mutateDomainModel(ModifyTracksInPlaylistDocument, variables, (data) => ({\n ok: data.playlists.modifyTracks.ok,\n playlist: createPlaylistPreviewModel(data.playlists.modifyTracks.playlist)\n }));\n\nexport const getLiveRadioHeartbeatInSeconds = (variables: LiveRadioHeartbeatInSecondsQueryVariables) =>\n queryDomainModel(LiveRadioHeartbeatInSecondsDocument, variables, (data) => data.system.deviceSettings.liveRadioHeartbeatInSeconds);\n\nexport const mutateReportLiveRadioHeartbeat = (variables: LiveRadioHeartbeatMutationVariables) => {\n mutateDomainModel(LiveRadioHeartbeatDocument, variables, (data) => data.liveRadios.reportHeartbeat.ok);\n};\n\nexport const getBackendBaseUrl = (path: string | undefined = undefined) => {\n if (isFeatureEnabled(Feature.ForceRemoteBackend)) {\n return `https://musik.${environment.webAppBrand === WebAppBrand.YouSee ? \"yousee\" : \"telmore\"}.dk${path}`;\n }\n\n const portPath = !document.location.port ? \"\" : document.location.port == \"44303\" ? \":44303\" : \":5000\";\n const url = document.location.hostname !== \"localhost\" ? \"\" : `https://${document.location.hostname}${portPath}`;\n return !path ? url : url + path;\n};\n\nexport const useForceLogoutUrl = (variables: LogoutAllDevicesQueryVariables) => useQueryDomainModel(LogoutAllDevicesDocument, variables, (data) => data.authorize.logoutAllDevices);\nexport const useInviteFlow = (variables: UseInviteFlowQueryVariables) => useQueryDomainModel(UseInviteFlowDocument, variables, (data) => data.me.user.useInviteFlow);\nexport const useInviteFlowHelpUrl = (variables: InviteFlowHelpUrlQueryVariables) =>\n useQueryDomainModel(InviteFlowHelpUrlDocument, variables, (data) => data.authorize.inviteFlowHelpUrl);\n\nexport const apiTokenPath = \"/api/token\";\nexport const apiDelegatedLoginPath = \"/api/delegatedlogin\";\nexport const apiClientlogPath = \"/api/clientlog\";\n","import type { ApolloError, QueryResult, ApolloQueryResult, OperationVariables } from \"@apollo/client\";\nimport { useQuery } from \"@apollo/client\";\nimport type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport type { DocumentNode } from \"graphql\";\nimport { useState, useEffect, useCallback, useMemo, useRef } from \"preact/hooks\";\nimport { graphqlClient } from \".\";\nimport { useLocalization } from \"components/app/hooks\";\nimport { createdIntervalCallbackGroup } from \"services/cancellation/intervalCallbackGroup\";\nimport { log } from \"services/logger\";\nimport { useCoalesced } from \"components/shared/hooks\";\n\ninterface MapDomainResult<DomainModel> {\n model: DomainModel | null;\n error: QueryError.MapError | QueryError.ContentNotFoundError | null;\n errorReason: string | null;\n}\n\nexport interface UseDomainQueryResult<Model> {\n model: Model | null;\n error: QueryError | null;\n errorReason: string | null;\n refetch: (user: boolean) => void;\n refetching: boolean;\n loading: boolean;\n essential?: boolean;\n success: boolean;\n coalesced?: boolean;\n}\n\nexport interface UseCombinedDomainQueryResult<Model> extends UseDomainQueryResult<Model> {\n queries: UseDomainQueryResult<unknown>[];\n}\n\nexport interface DomainQueryResult<Model> {\n model: Model | null;\n error: QueryError | null;\n errorReason: string | null;\n loading: boolean;\n success: boolean;\n}\n\nexport enum QueryError {\n BrowserOfflineError = \"BrowserOfflineError\",\n NetworkClientError = \"NetworkClientError\",\n NetworkServerDownError = \"NetworkServerDownError\",\n NetworkServerError = \"NetworkServerError\",\n NetworkUnknownError = \"NetworkUnknownError\",\n MapError = \"MapError\",\n UnknownError = \"UnknownError\",\n ContentNotFoundError = \"ContentNotFoundError\",\n MultipleErrors = \"MultipleErrors\",\n NotAvailableInSubscriptionError = \"NotAvailableInSubscription\"\n}\n\nfunction getQueryError(error: ApolloError | null): QueryError | null {\n try {\n if (error == null) return null;\n const { networkError, graphQLErrors } = error;\n\n if (networkError) {\n const statusCode = \"statusCode\" in networkError ? networkError.statusCode : null;\n\n if (statusCode != null) {\n if (statusCode === 429) return QueryError.NetworkServerDownError;\n if (statusCode >= 400 && statusCode < 500) return QueryError.NetworkClientError;\n if (statusCode >= 500 && statusCode < 600) return QueryError.NetworkServerError;\n }\n if (!window.navigator.onLine) return QueryError.BrowserOfflineError;\n return QueryError.NetworkUnknownError;\n }\n\n // todo: maybe we should be able to parse resource not found from graphQLErrors?\n if (graphQLErrors.length > 0) return QueryError.UnknownError;\n\n return QueryError.UnknownError;\n } catch (e) {\n log.error({ code: \"web-220216-1522\", msg: \"error in getQueryError\", error: e });\n return QueryError.UnknownError;\n }\n}\n\nfunction useQueryError<Data, Variables extends OperationVariables>(result: QueryResult<Data, Variables>): QueryError | null {\n const [error, setError] = useState<QueryError | null>(null);\n\n useEffect(() => {\n setError(getQueryError(result.error ?? null));\n }, [result]);\n\n return error;\n}\n\nfunction mapDomainModel<Data, Model>(data: Data | null, map: (data: Data) => Model | null | undefined): MapDomainResult<Model> {\n if (data == null) {\n return { error: null, errorReason: null, model: null };\n }\n\n try {\n const model = map(data) ?? null;\n if (model == null) {\n log.error({ code: \"web-211015-1914\", msg: \"model is null when map model\", data: { map, data } });\n const errorReason = `model is null when map model: ${JSON.stringify(data)}`;\n return { error: QueryError.ContentNotFoundError, errorReason, model: null };\n }\n\n return { error: null, errorReason: null, model };\n } catch (e) {\n log.error({ code: \"web-211015-1919\", msg: \"exception when map model\", data: { map, data }, error: e });\n const errorReason = `exception when map model: ${JSON.stringify(data)}`;\n return { error: QueryError.MapError, errorReason, model: null };\n }\n}\n\nfunction useMapDomainModel<Data, Model>(data: Data | null, map: (data: Data) => Model | null | undefined): MapDomainResult<Model> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => mapDomainModel(data, map), [data]);\n}\n\nexport function useModify<Model>(model: Model | null) {\n const [state, setState] = useState(model);\n\n const modify = useCallback((model: Model) => {\n setState(model);\n }, []);\n\n useEffect(() => setState(model), [model]);\n return { model: state, modify };\n}\n\nexport function useModifyQuery<Model>(result: UseDomainQueryResult<Model>) {\n const [modified, setModified] = useState(() => result);\n\n const modify = useCallback((model: Model) => {\n setModified((state) => ({ ...state, model }));\n }, []);\n useEffect(() => setModified(result), [result]);\n return { modified, modify };\n}\n\nfunction useRefetch(refetch: () => void) {\n const [refetching, setRefetching] = useState(false);\n\n const refetchFn = useCallback(\n async (manual: boolean) => {\n if (manual) setRefetching(true);\n try {\n await refetch();\n } catch {\n //\n }\n const timeoutId = setTimeout(() => {\n setRefetching(false);\n }, 0);\n return () => clearTimeout(timeoutId);\n },\n [refetch]\n );\n\n return { refetch: refetchFn, refetching };\n}\n\nasync function query<Data, Variables extends OperationVariables>(operation: TypedDocumentNode<Data, Variables>, variables: Variables): Promise<ApolloQueryResult<Data>> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const query = await graphqlClient!.query({ query: operation, variables, errorPolicy: \"all\" });\n return query;\n}\n\nfunction logQueryError(\n operation: DocumentNode,\n variables: OperationVariables,\n result: QueryResult | ApolloQueryResult<unknown> | null,\n error: QueryError | null,\n errorReason: string | null\n) {\n if (error) {\n log.error({\n code: \"web-211015-1913\",\n msg: \"query error\",\n data: {\n error,\n result,\n operation,\n variables,\n errorReason\n }\n });\n }\n}\n\nexport async function queryDomainModel<Data, Variables extends OperationVariables, Model>(\n operation: TypedDocumentNode<Data, Variables>,\n variables: Variables,\n map: (data: Data) => Model | null | undefined,\n callback?: (query: DomainQueryResult<Model>) => void\n): Promise<DomainQueryResult<Model>> {\n callback?.({ error: null, errorReason: null, model: null, loading: true, success: false });\n\n let queryResult: ApolloQueryResult<Data> | null = null;\n let model: Model | null = null;\n\n let error: QueryError | null = null;\n let errorReason: string | null;\n\n try {\n queryResult = await query(operation, variables);\n error = getQueryError(queryResult?.error ?? null);\n errorReason = error ? JSON.stringify(queryResult?.error) : null;\n } catch (e) {\n if (!window.navigator.onLine) error = QueryError.BrowserOfflineError;\n else error = QueryError.NetworkUnknownError;\n errorReason = JSON.stringify(e);\n }\n\n if (queryResult && !error) {\n const mapModel = mapDomainModel(queryResult.data, map);\n error = mapModel?.error ?? null;\n errorReason = mapModel.errorReason;\n model = mapModel?.model ?? null;\n }\n\n logQueryError(operation, variables, queryResult, error, errorReason);\n\n const success = model !== null;\n\n const result = { error, errorReason, model, loading: false, success };\n callback?.(result);\n return result;\n}\n\nexport function useQueryDomainModel<Data, Variables extends OperationVariables, Model>(\n operation: TypedDocumentNode<Data, Variables>,\n variables: Variables,\n map: (data: Data) => Model | null | undefined,\n skip?: boolean,\n reloadOnLanguageChange = false,\n coalesce = false\n): UseDomainQueryResult<Model> {\n const queryResult = useQuery(operation, { variables, skip });\n let error: QueryError | null = null;\n let errorReason: string | null = null;\n\n const queryError = useQueryError(queryResult);\n if (queryError) {\n error = queryError;\n errorReason = JSON.stringify(queryResult?.error);\n }\n\n const { model, error: parseError, errorReason: parserErrorReason } = useMapDomainModel(!error ? queryResult.data ?? null : null, map);\n if (parseError) {\n error = parseError;\n errorReason = parserErrorReason;\n }\n const local = useLocalization();\n const { refetch, refetching } = useRefetch(queryResult.refetch);\n const loading = queryResult.loading;\n const success = model !== null;\n\n logQueryError(operation, variables, queryResult, error, errorReason);\n\n useEffect(() => {\n if (reloadOnLanguageChange) refetch(false);\n }, [local, refetch, reloadOnLanguageChange]);\n\n const coalescedModel = useCoalesced(model, coalesce);\n\n return useMemo(() => ({ model: coalescedModel, error, errorReason, refetch, refetching, loading, success, coalesced: (coalescedModel !== model) }), [coalescedModel, model, error, errorReason, refetch, refetching, loading, success]);\n}\n\nexport interface QueryParams<Model, Data extends DomainQueryResult<Data>> {\n fetch: () => Promise<DomainQueryResult<Data | null>>;\n map: (model: Model, data: Data) => Model;\n next?: number;\n essential?: boolean;\n}\n\nexport interface CombinedQueryParams<Model> {\n model: Model;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params: QueryParams<Model, any>[];\n}\n\nexport function useDomainQueryResult<Model>(query: Promise<DomainQueryResult<Model> | null>) {\n const [result, setResult] = useState<DomainQueryResult<Model> | null>(null);\n const local = useLocalization();\n useEffect(() => {\n query\n .then((result) => {\n if (result == null) setResult({ model: null, loading: false, error: QueryError.UnknownError, errorReason: \"result is null\", success: false });\n else setResult(result);\n })\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n .catch(() => { });\n }, [query, local]);\n\n return result;\n}\n\nexport function useCombinedQuery<Model>(combine: CombinedQueryParams<Model> | null) {\n const { model: initial, params } = useMemo(() => combine ?? { model: null, params: [] }, [combine]);\n\n const ref = useRef<Model | null>(initial);\n const [model, setModel] = useState(initial);\n const [queries, setQueries] = useState<UseDomainQueryResult<unknown>[]>([]);\n const combined = useCombinedQueryResult(model, queries);\n\n const callbacks = useMemo(() => createdIntervalCallbackGroup(), []);\n const [autoUpdate, setAutoUpdate] = useState(false);\n\n useEffect(() => {\n autoUpdate ? callbacks.resume() : callbacks.pause();\n }, [callbacks, autoUpdate]);\n\n useEffect(() => {\n ref.current = initial;\n setModel(initial);\n setQueries([]);\n if (initial == null) return;\n\n params.forEach((param) => {\n const query: UseDomainQueryResult<unknown> = {\n loading: true,\n error: null,\n errorReason: null,\n model: null,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n refetch: null!,\n refetching: false,\n essential: param.essential,\n success: false\n };\n\n const fetch = (refetching: boolean) => {\n if (refetching) {\n query.refetching = refetching;\n setQueries((queries) => [...queries]);\n }\n\n param.fetch().then((data) => {\n if (ref.current == null) return;\n\n if (data.model != null) {\n const updatedModel = param.map(ref.current, data.model);\n ref.current = updatedModel;\n setModel(updatedModel);\n }\n\n if (param.next != undefined) {\n callback.updateInterval(param.next);\n }\n\n query.error = data.error;\n query.errorReason = data.errorReason;\n query.loading = data.loading;\n query.success = data.success;\n query.model = data.model;\n query.refetching = false;\n\n setQueries((queries) => [...queries]);\n });\n };\n const callback = callbacks.add(() => fetch(false));\n query.refetch = (user: boolean) => fetch(user);\n setQueries((queries) => [...queries, query]);\n });\n\n callbacks.begin();\n return () => callbacks.removeAll();\n }, [initial, params, callbacks]);\n\n return { query: combined, setAutoUpdate, callbacks };\n}\n\nexport function useCombinedQueryResult<Model>(model: Model, queries: UseDomainQueryResult<unknown>[]) {\n return useMemo(() => getCombinedQueryResult(model, queries), [model, queries]);\n}\n\nfunction getCombinedQueryResult<Model>(model: Model, queries: UseDomainQueryResult<unknown>[]): UseCombinedDomainQueryResult<Model> {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n if (queries.length == 0) return { model, error: null, errorReason: null, loading: false, success: false, refetch: () => { }, refetching: false, queries };\n\n const errorQueries = queries.filter((q) => q.error != null);\n const essentialQueries = queries.filter((q) => q.essential);\n\n const errorFirst = errorQueries[0]?.error ?? null;\n const errorEqual = errorQueries.every((q) => q.error === errorFirst);\n const errorType = errorEqual ? errorFirst : QueryError.MultipleErrors;\n const errorAll = queries.every((q) => !!q.error);\n const errorEssential = essentialQueries.some((q) => q.error);\n\n const error: QueryError | null = errorAll || errorEssential ? errorType : null;\n const errorReason = errorQueries.length === 0 ? null : errorQueries.map((n) => n.errorReason).join(\", \");\n const refetching = queries.every((q) => q.refetching) || essentialQueries.some((q) => q.refetching);\n const loading = queries.every((q) => q.loading) || essentialQueries.some((q) => q.loading);\n const refetch = (user: boolean) => queries.forEach((query) => query.refetch(user));\n const success = essentialQueries.length > 0 ? essentialQueries.every((q) => q.success) : queries.every((q) => q.success);\n\n return { model, error, errorReason, refetching, refetch, loading, queries, success };\n}\n","import type { NormalizedCacheObject, Operation } from \"@apollo/client\";\nimport { ApolloClient, ApolloLink, fromPromise, HttpLink, InMemoryCache, split } from \"@apollo/client\";\nimport type { GraphQLErrors } from \"@apollo/client/errors\";\nimport { onError } from \"@apollo/client/link/error\";\nimport { createPersistedQueryLink } from \"@apollo/client/link/persisted-queries\";\nimport { WebSocketLink } from \"@apollo/client/link/ws\";\nimport { getMainDefinition, Observable } from \"@apollo/client/utilities\";\nimport { sha256 } from \"crypto-hash\";\nimport type { GraphQLError } from \"graphql\";\nimport { SubscriptionClient } from \"subscriptions-transport-ws\";\nimport { store } from \"global\";\nimport { WebAppBrand } from \"shared/models\";\nimport { headerNames } from \"shared/services\";\nimport { isFeatureEnabled, Feature } from \"global/config\";\nimport { getAppProperties, getGraphQlLanguageCode, getNewCorrelationId } from \"services/app/appService\";\nimport { getTokens } from \"services/appSession/operations/sessionTokens\";\nimport { fetchGraphqlContent } from \"services/cache\";\nimport type { Environment } from \"services/environment\";\nimport { environment, GraphqlEnvironmentName } from \"services/environment\";\nimport { log } from \"services/logger/initLoggerService\";\nimport { getUserIdFromState, onGqlUnauthenticated, tryRefreshToken } from \"services/user\";\n\nlet webSocketClient: SubscriptionClient | null = null;\nlet webSocketLink: WebSocketLink | null = null;\nlet webSocketCurrentUserId: string | null = null;\n\nexport let graphqlClient: ApolloClient<NormalizedCacheObject> | null = null;\n\nexport function initGraphQLClient() {\n if (graphqlClient) {\n log.error({ code: \"web-210313-1516\", msg: \"graphlql client not null\" });\n return;\n }\n try {\n graphqlClient = client(createApolloLink(environment));\n } catch (e) {\n log.error({ code: \"web-220221-1316\", msg: \"error when creating graphlql client\", error: e });\n throw e;\n }\n}\n\nexport function ensureWebsocketRoutesToUser(userId: string) {\n // in order to reach the right server on environments with multiple servers,\n // we need to append a userid to the url. this must be updated if the userid changes.\n\n if (graphqlClient && userId !== webSocketCurrentUserId) {\n closeWebsocket();\n // ideally we'd just update the WebSocketLink, but that's not allowed.\n // failing that, ideally we'd just recreate the whole link chain and set it on the same client, but that's not allowed.\n // instead we have to create a new client to update the websocket url...\n graphqlClient = client(createApolloLink(environment));\n }\n}\n\nexport function closeWebsocket() {\n if (webSocketClient) {\n webSocketClient.unsubscribeAll();\n webSocketClient.close(true);\n webSocketClient = null;\n }\n}\n\nconst uri = ({ graphqlEnvironmentName, apiPortalId }: Environment): string => {\n switch (graphqlEnvironmentName) {\n case GraphqlEnvironmentName.Dev:\n return `https://graphql-${apiPortalId}.dev.api.247e.com/graphql`;\n case GraphqlEnvironmentName.Local:\n return `https://localhost:44357/graphql/${apiPortalId}`;\n case GraphqlEnvironmentName.Prod:\n case GraphqlEnvironmentName.Stage:\n case GraphqlEnvironmentName.Test:\n return `https://graphql-${apiPortalId}.api.247e.com/graphql`;\n }\n};\n\nconst standardHeadersLink = new ApolloLink((operation, forward) => {\n const { language, userAgent, appVersion, installationId, platform } = getAppProperties();\n const correlationId = getNewCorrelationId();\n const acceptLanguage = getGraphQlLanguageCode(language);\n const headers = {\n [headerNames.acceptLanguage]: acceptLanguage,\n [headerNames.userAgent]: userAgent,\n [headerNames.appVersion]: appVersion,\n [headerNames.installationId]: installationId,\n [headerNames.correlationId]: correlationId,\n [headerNames.platform]: platform\n };\n\n operation.setContext((context: Record<string, Record<string, string>>) => ({ ...context, headers: { ...context.headers, ...headers } }));\n\n return forward(operation);\n});\n\nconst operationHeadersLink = new ApolloLink((operation, forward) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const operationType = (operation?.query?.definitions[0] as unknown as any)?.operation as string | undefined;\n if (operationType) {\n const headers: Record<string, string> = {};\n headers[headerNames.operationType] = operationType;\n operation.setContext((context: Record<string, Record<string, string>>) => ({ ...context, headers: { ...context.headers, ...headers } }));\n }\n\n const operationName = operation?.operationName as string | undefined;\n if (operationName) {\n const headers: Record<string, string> = {};\n headers[headerNames.operationName] = operationName;\n operation.setContext((context: Record<string, Record<string, string>>) => ({ ...context, headers: { ...context.headers, ...headers } }));\n }\n\n return forward(operation);\n});\n\nconst apolloErrorResult = (errorMessage: string) => {\n const fetchResult = {\n errors: []\n };\n\n const linkResult = Observable.of(fetchResult).map(() => {\n throw new Error(errorMessage);\n });\n return linkResult;\n};\n\nconst authHeadersLink = new ApolloLink((operation, forward) => {\n const getOrWaitForTokens = (async () => {\n if (operation.operationName === \"userId\") {\n // this particular query is called during token refresh, so we must not wait for the token-refresh to complete before running it\n return getTokens();\n }\n const tokens = await getTokens();\n if (tokens.refreshToken && !tokens.accessToken && !!store.getState().user.id) {\n // if something maliciously deleted the accesstoken, we need to get a new one\n const refreshResult = await tryRefreshToken();\n tokens.accessToken = refreshResult.accessToken;\n }\n return tokens;\n })();\n\n return fromPromise(getOrWaitForTokens).flatMap((tokens) => {\n const accessToken = tokens.accessToken;\n const authorizationValue = accessToken ? `Bearer ${accessToken}` : `Basic ${getGraphqlClientId()}`;\n const headers = { [headerNames.authorization]: authorizationValue };\n operation.setContext((context: Record<string, Record<string, string>>) => ({ ...context, headers: { ...context.headers, ...headers } }));\n return forward(operation);\n });\n});\n\nconst correlationIdHeaderLink = new ApolloLink((operation, forward) => {\n if (operation.variables.correlationId) {\n // remove the correlationid from variables, and place it in a header instead.\n // (this seems to be the easiest way for the queries to provide this to the link.)\n const headers = { [headerNames.correlationId]: operation.variables.correlationId };\n delete operation.variables.correlationId;\n operation.setContext((context: Record<string, Record<string, string>>) => ({ ...context, headers: { ...context.headers, ...headers } }));\n }\n return forward(operation);\n});\n\nconst refreshTokenLink = onError(({ graphQLErrors, operation, forward }) => {\n if (graphQLErrors) {\n const isAuthError = isAuthenticationError(graphQLErrors);\n if (isAuthError) {\n return fromPromise(onGqlUnauthenticated()).flatMap(({ ok, accessToken }) => {\n if (!ok) return apolloErrorResult(\"unable to refresh token\");\n const headers = {\n [headerNames.authorization]: `Bearer ${accessToken}`\n };\n operation.setContext((context: Record<string, Record<string, string>>) => ({\n ...context,\n headers: { ...context.headers, ...headers }\n }));\n return forward(operation);\n });\n }\n }\n});\n\nconst createHttpLink = (environment: Environment) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const getQuery = (operation: Operation) => {\n const query = \"\";\n return query;\n };\n const httpLink = new HttpLink({ uri: (operation) => `${uri(environment)}${getQuery(operation)}`, fetch: fetchGraphqlContent });\n\n if (isFeatureEnabled(Feature.APQ)) {\n const persistentQueryLink = createPersistedQueryLink({ sha256 });\n return persistentQueryLink.concat(httpLink);\n }\n else {\n return httpLink;\n }\n};\n\nconst createWsLink = (environment: Environment) => {\n webSocketCurrentUserId = getUserIdFromState();\n\n const url = `${uri(environment).replace(\"https://\", \"wss://\").replace(\"http://\", \"ws://\")}?userId=${webSocketCurrentUserId}`;\n\n webSocketClient = new SubscriptionClient(url, {\n reconnect: true,\n lazy: true\n });\n\n webSocketLink = new WebSocketLink(webSocketClient);\n\n return webSocketLink;\n};\n\nconst isWsSubscription = (op: Operation) => {\n const definition = getMainDefinition(op.query);\n return definition.kind === \"OperationDefinition\" && definition.operation === \"subscription\";\n};\n\nconst createApolloLink = (environment: Environment) =>\n ApolloLink.from([\n standardHeadersLink,\n operationHeadersLink,\n authHeadersLink,\n correlationIdHeaderLink,\n errorLink,\n refreshTokenLink,\n split(isWsSubscription, createWsLink(environment), createHttpLink(environment))\n ]);\n\nfunction isAuthenticationError(errors: GraphQLErrors) {\n const isAuthenticationError = !!errors.find((n) => {\n return n?.extensions?.code === \"UNAUTHENTICATED\";\n });\n return isAuthenticationError;\n}\n\nfunction isLoggedError(error: GraphQLError) {\n switch (error?.extensions?.code) {\n case \"TRACKS_DUPLICATION\": return true;\n default: return false;\n }\n}\n\nconst errorLink = onError(({ graphQLErrors, networkError, operation }) => {\n if (graphQLErrors) {\n const isAuthError = isAuthenticationError(graphQLErrors);\n graphQLErrors.forEach((error) => {\n const { message, locations, path } = error;\n if (isAuthError) {\n log.info({\n code: \"web-220916-1342\",\n msg: \"graphQL error\",\n data: {\n message,\n locations,\n path,\n operation\n },\n report: true\n });\n } else if (!isLoggedError(error)) {\n log.error({\n code: \"web-210519-1302\",\n msg: \"graphQL error\",\n data: {\n message,\n locations,\n path,\n operation\n }\n });\n }\n });\n }\n if (networkError) log.info({ code: \"web-210519-1303\", msg: \"network error\", data: { error: networkError } });\n});\n\nconst client = (link: ApolloLink) => {\n const cache = new InMemoryCache();\n\n return new ApolloClient({\n link,\n cache,\n defaultOptions: { watchQuery: { fetchPolicy: \"no-cache\" }, query: { fetchPolicy: \"no-cache\" } }\n });\n};\nfunction getGraphqlClientId(): string {\n switch (environment.graphqlEnvironmentName) {\n case GraphqlEnvironmentName.Dev:\n case GraphqlEnvironmentName.Local:\n case GraphqlEnvironmentName.Test:\n case GraphqlEnvironmentName.Stage:\n {\n switch (environment.webAppBrand) {\n case WebAppBrand.Telmore:\n return \"Z3FsLW51dS13ZWItdGVsbW9yZTplNmYxNzZiYThhMGM0ODUwOThkZDc1YTk2ZjdlNmE3Ng==\";\n case WebAppBrand.YouSee:\n return \"Z3FsLW51dS13ZWIteW91c2VlOmEzMWRlNTFmYjUyOTRiMGI4ZGE4OTk2NGYwNDQzNTlh\";\n }\n }\n break;\n case GraphqlEnvironmentName.Prod: {\n switch (environment.webAppBrand) {\n case WebAppBrand.Telmore:\n return \"Z3FsLW51dS13ZWItdGVsbW9yZTpiN2YzMTVkNWM0MTk0NzEwOGExMzYxZGJlYzRmNmE2NQ==\";\n case WebAppBrand.YouSee:\n return \"Z3FsLW51dS13ZWIteW91c2VlOmUyY2RlZmM2ZmM2MjQ4YTc4YWE5YWZjNDJkYzk1ZWIx\";\n }\n }\n }\n}\n","import { gql } from \"@apollo/client\";\nimport type { Subscription } from \"zen-observable-ts\";\nimport { closeWebsocket, graphqlClient, ensureWebsocketRoutesToUser } from \"./graphqlClient\";\nimport { dispatch, messageBus } from \"global\";\nimport { FAVORITES_UPDATED, USER_LOGGED_IN, USER_LOGGING_OUT, USER_UPDATED_TOKENS } from \"global/actions\";\nimport { getTokens } from \"services/appSession/operations/sessionTokens\";\nimport { environment } from \"services/environment\";\nimport type { FavoritePreviewModel } from \"services/favorites\";\nimport { log, LogTag } from \"services/logger\";\nimport { getIsLoggedInFromState } from \"services/user\";\nimport { ContentType } from \"models/ModelType\";\n\nconst myMusicSubscription = gql`\n subscription myMusicUpdate($token: String!) {\n myMusicUpdates(token: $token) {\n updateType\n playlistId\n trackId\n }\n }\n`;\n\nlet subscription1: Subscription | null = null;\nlet subscription2: Subscription | null = null;\n\nexport async function initGraphqlSubscriptions() {\n try {\n if (!environment.enableGraphQlSubscriptions) return;\n\n const isLoggedIn = await getIsLoggedInFromState();\n\n if (isLoggedIn) {\n subscribe();\n }\n\n messageBus.subscribeEvery(USER_LOGGED_IN, async (msg) => {\n ensureWebsocketRoutesToUser(msg.payload.id);\n subscribe();\n });\n\n messageBus.subscribeEvery(USER_LOGGING_OUT, async () => {\n unsubscribe();\n closeWebsocket();\n });\n\n messageBus.subscribeEvery(USER_UPDATED_TOKENS, (msg) => {\n // recreate the subscription if the user gets a new access token\n if (isSubscribed() && msg.payload.accessToken && subscribedAccessToken != msg.payload.accessToken) {\n resubscribe();\n }\n });\n } catch (e) {\n log.error({ code: \"web-220221-1326\", msg: \"error in initiating graphql subscriptions\", error: e });\n }\n}\n\nconst isSubscribed = () => !!subscription1 || !!subscription2;\n\nlet subscribedAccessToken: string | null = null;\n\nasync function subscribe() {\n log.info({ code: \"web-220926-1538\", msg: \"--- subscribing\", tags: [LogTag.Subscriptions] });\n if (!isSubscribed()) {\n const { accessToken } = await getTokens();\n\n // mymusic subscription\n const observable1 = graphqlClient?.subscribe({\n query: myMusicSubscription,\n variables: {\n token: accessToken\n }\n });\n subscription1 =\n observable1?.subscribe(async (event) => {\n log.info({ code: \"web-220926-1539\", msg: \"favorites observable\", data: { data: event.data }, tags: [LogTag.Subscriptions] });\n\n if (event.data.favoritesUpdates?.updateType == \"FAVORITED_TRACK\" || event.data.favoritesUpdates?.updateType == \"UNFAVORITED_TRACK\") {\n const fakeTrack = {\n contentType: ContentType.TrackPlayable,\n id: event.data.favoritesUpdates.trackId\n } as FavoritePreviewModel;\n\n const operation = event.data.favoritesUpdates?.updateType == \"FAVORITED_TRACK\" ? \"add\" : \"remove\";\n\n dispatch({\n type: FAVORITES_UPDATED,\n payload: {\n changes: {\n playables: [fakeTrack],\n operation\n }\n }\n });\n }\n }) || null;\n\n if (accessToken == null) {\n log.error({ code: \"web-220324-1153\", msg: \"accessToken is null\" });\n return;\n }\n // concurrency subscription\n //TODO Ask Brian\n // const observable2 = graphqlClient?.subscribe({\n // query: ActivePlaybackStreamChangedDocument,\n // variables: {\n // token: accessToken,\n // deviceId: store.getState().app.installationId\n // }\n // });\n // subscription2 =\n // observable2?.subscribe((event) => {\n // const data = event?.data?.activePlaybackStreamChanged;\n // if (data) {\n // dispatch({\n // type: PLAYER_CONCURRENCY_LOST,\n // payload: {\n // deviceId: data.deviceId ?? \"\",\n // friendlyDeviceName: data.friendlyDeviceName\n // }\n // });\n // }\n // }) || null;\n\n //subscription?.unsubscribe();\n log.info({ code: \"web-220926-1540\", msg: \"GraphQL subscriptions active\", tags: [LogTag.Subscriptions] });\n }\n}\n\nfunction unsubscribe() {\n if (subscription2) {\n subscription2.unsubscribe();\n subscription2 = null;\n log.info({ code: \"web-220926-1541\", msg: \"GraphQL concurrency subscription terminated\", tags: [LogTag.Subscriptions] });\n }\n if (subscription1) {\n subscription1.unsubscribe();\n subscription1 = null;\n log.info({ code: \"web-220926-1542\", msg: \"GraphQL favorites subscription terminated\", tags: [LogTag.Subscriptions] });\n }\n subscribedAccessToken = null;\n}\n\nfunction resubscribe() {\n unsubscribe();\n subscribe();\n}\n","export * from \"./backend\";\nexport * from \"./graphqlClient\";\nexport * from \"./graphqlSubscriptions\";\n","import type { ErrorPolicy, FetchResult } from \"@apollo/client\";\nimport type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport { graphqlClient } from \"./graphqlClient\";\nimport { log } from \"services/logger\";\n\nexport async function mutateDomainModelWithErrors<Data, Variables>(\n mutation: TypedDocumentNode<Data, Variables>,\n variables: Variables | null,\n correlationId: string | null | undefined = undefined,\n enableErrorLog = true,\n errorPolicy: ErrorPolicy | undefined = \"all\"\n): Promise<FetchResult<Data> | null> {\n if (!graphqlClient) {\n enableErrorLog && log.error({ code: \"web-210207-1702\", msg: \"no graphQLClient\" });\n return null;\n }\n let result: FetchResult<Data> | null = null;\n if (!graphqlClient) {\n enableErrorLog && log.error({ code: \"web-210207-1701\", msg: \"no graphQLClient\" });\n return null;\n }\n try {\n if (correlationId) {\n // temporarily add the correlationId to the variables.\n // the apollo link will remove it and place it in a header instead.\n // (this seems to be the easiest way to forward generic data to the link.)\n if (!variables) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (variables as any) = {};\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (variables as any).correlationId = correlationId;\n }\n\n result = await graphqlClient.mutate<Data>({ mutation, variables: variables ?? undefined, errorPolicy });\n } catch (e) {\n console.log(\"mutate error\", e);\n enableErrorLog && log.error({ code: \"web-210207-1716\", msg: \"mutate error\", data: { exception: e } });\n return null;\n }\n\n return result;\n}\n\n// this mutate helper should replace the other one: \"mutateDomainModel\"\nexport async function mutateDomainModel<Data, Variables, Model>(\n mutation: TypedDocumentNode<Data, Variables>,\n variables: Variables | null,\n map: (data: Data) => Model | null | undefined,\n correlationId: string | null | undefined = undefined,\n enableErrorLog = true\n): Promise<Model | null> {\n const result = await mutateDomainModelWithErrors(mutation, variables, correlationId, enableErrorLog, undefined);\n if (result?.data == null) {\n enableErrorLog && log.error({ code: \"web-210207-1714\", msg: \"mutate error\" });\n return null;\n }\n if (result?.data) {\n try {\n return map(result.data) ?? null;\n } catch (e) {\n enableErrorLog && log.error({ code: \"web-210207-1715\", msg: \"map error\", data: { exception: e } });\n }\n }\n return null;\n}\n","import { serviceWorkerConfig } from \"shared/services\";\nimport { log } from \"services/logger\";\n\nexport function initCacheQuotaService() {\n const run = () => {\n setTimeout(async () => {\n await enforceCacheQuotas();\n run();\n }, 60_000);\n };\n run();\n}\n\nasync function enforceCacheQuotas() {\n await tryEnforceCacheQuota(serviceWorkerConfig.cacheNameGraphql, serviceWorkerConfig.maxCacheEntriesGraphql);\n await tryEnforceCacheQuota(serviceWorkerConfig.cacheNameHls, serviceWorkerConfig.maxCacheEntriesHls);\n await tryEnforceCacheQuota(serviceWorkerConfig.cacheNameNavigate, serviceWorkerConfig.maxCacheEntriesNavigate);\n}\n\nasync function tryEnforceCacheQuota(cacheName: string, max: number) {\n try {\n await enforceCacheQuota(cacheName, max);\n } catch (e) {\n log.error({ code: \"web-220816-1147\", msg: \"error in enforceCacheQuotas\", data: { cacheName }, error: e });\n\n try {\n caches.delete(cacheName);\n } catch (e) {\n log.info({ code: \"web-230403-1023\", msg: \"cannot delete cache\", data: { cacheName }, error: e });\n }\n }\n}\n\nasync function enforceCacheQuota(cacheName: string, max: number) {\n const cache = await caches.open(cacheName);\n const keys = await cache.keys();\n\n if (keys.length <= max) return;\n\n const remove = keys.slice(0, keys.length - max);\n await Promise.all(\n remove.map((value) => {\n return cache.delete(value.url);\n })\n );\n}\n","import { messageBus, store } from \"global\";\nimport { headerNames, CacheType, serviceWorkerConfig } from \"shared/services\";\nimport { USER_LOGGING_OUT } from \"global/actions\";\nimport { log, DefaultLogMessage } from \"services/logger\";\n\nexport function initGraphqlCacheService() {\n messageBus.subscribeEvery(USER_LOGGING_OUT, async () => {\n await clearPersonalizedCache();\n });\n}\n\nexport async function fetchGraphqlContent(input: RequestInfo, init: RequestInit): Promise<Response> {\n const request = new Request(input, init);\n const userId = store.getState().user.id ?? \"null\";\n\n request.headers.append(headerNames.cacheType, CacheType.GraphQL);\n request.headers.append(headerNames.user, userId);\n\n return await fetch(request);\n}\n\nasync function clearPersonalizedCache() {\n log.info({ code: \"web-210602-2001\", msg: \"clear graphql cache\" });\n\n const cache = await caches.open(serviceWorkerConfig.cacheNameGraphql);\n const userId = store.getState().user.id ?? \"null\";\n const remove: Promise<boolean>[] = [];\n\n (await cache.keys()).forEach((entry) => {\n const entryUserId = entry.headers.get(headerNames.user) ?? null;\n\n if (entryUserId == null) {\n log.error({ code: \"web-210610-1216\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n if (entryUserId != \"null\" && entryUserId !== userId) {\n remove.push(cache.delete(entry));\n // log.info({code: \"web-210610-1244\", \"deleted personalized cache for user\", [{ key: \"userId\", entryUserId }]);\n }\n });\n\n await Promise.all(remove);\n}\n","export * from \"./graphqlCacheService\";\n","export class CancellationToken {\n private _isCancelled = false;\n\n public get isCancelled() {\n return this._isCancelled;\n }\n\n cancel() {\n this._isCancelled = true;\n }\n\n throwIfCancelled() {\n if (this._isCancelled) {\n throw \"Promise cancelled\";\n }\n }\n}\n","import type { StateUpdater } from \"preact/hooks\";\nimport { useCallback, useEffect, useMemo, useState } from \"preact/hooks\";\n\nexport const useDebouncedState = <T>(initialState: T, ms: number): [T, StateUpdater<T>, StateUpdater<T>] => {\n const [state, setStateInstant] = useState<T>(initialState);\n const [setState, teardown] = useMemo(() => debounce(setStateInstant, ms), [setStateInstant, ms]);\n const externalSetStateInstant = useCallback(\n (val: T | ((prevState: T) => T)) => {\n setState(val);\n setStateInstant(val);\n },\n [setStateInstant, setState]\n );\n useEffect(() => () => teardown(), [teardown]);\n return [state, setState, externalSetStateInstant];\n};\n\nexport const useDebounce = <A = unknown, R = void>(fn: (args: A) => R, ms: number): ((args: A) => Promise<R>) => {\n const [debouncedFun, teardown] = useMemo(() => debounce<A, R>(fn, ms), [fn, ms]);\n useEffect(() => () => teardown(), [teardown]);\n return debouncedFun;\n};\n\n// copied from https://dev.to/bwca/create-a-debounce-function-from-scratch-in-typescript-560m\nexport const debounce = <A = unknown, R = void>(fn: (args: A) => R, ms: number): [(args: A) => Promise<R>, () => void] => {\n let timer: NodeJS.Timeout;\n\n const debouncedFunc = (args: A): Promise<R> =>\n new Promise((resolve) => {\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n resolve(fn(args));\n }, ms);\n });\n\n const teardown = () => clearTimeout(timer);\n\n return [debouncedFunc, teardown];\n};\n","export function createdIntervalCallbackGroup() {\n const callbacks = new Map<() => void, IntervalCallback>();\n let started = false;\n\n const begin = () => {\n started = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [...callbacks].forEach(([_, callback]) => callback.begin());\n };\n\n const pause = () => {\n started = false;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [...callbacks].forEach(([_, callback]) => callback.pause());\n };\n\n const resume = () => {\n started = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [...callbacks].forEach(([_, callback]) => callback.resume());\n };\n\n const removeAll = () => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [...callbacks].forEach(([_, callback]) => callback.pause());\n callbacks.clear();\n };\n\n const add = (fn: () => void, begin = false) => {\n const timedCallback = createdIntervalCallback(fn);\n callbacks.set(fn, timedCallback);\n\n if (begin && started) timedCallback.begin();\n\n return timedCallback;\n };\n\n return {\n begin,\n pause,\n resume,\n add,\n removeAll\n };\n}\n\ninterface IntervalCallback {\n begin: () => void;\n pause: () => void;\n resume: () => void;\n updateInterval: (intervalMs: number | null) => void;\n}\n\nfunction createdIntervalCallback(fn: () => void): IntervalCallback {\n let timeoutId: number | undefined;\n let lastRun = 0;\n let interval: number | null = null;\n let started = false;\n\n const execute = () => {\n clearTimeout();\n\n if (!started) return;\n\n lastRun = new Date().getTime();\n fn();\n\n if (interval != null) {\n clearTimeout();\n timeoutId = window.setTimeout(() => execute(), interval);\n }\n };\n\n const schedule = () => {\n clearTimeout();\n\n if (!started) return;\n if (interval == null) return;\n\n const next = interval - (new Date().getTime() - lastRun);\n\n if (next < 0) execute();\n else timeoutId = window.setTimeout(() => execute(), next);\n };\n\n const begin = () => {\n started = true;\n execute();\n };\n\n const resume = () => {\n started = true;\n schedule();\n };\n\n const pause = () => {\n started = false;\n clearTimeout();\n };\n\n const updateInterval = (intervalMs: number | null) => {\n interval = intervalMs;\n schedule();\n };\n\n const clearTimeout = () => {\n if (timeoutId) {\n window.clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n };\n\n return { begin, resume, pause, updateInterval };\n}\n","// TODO merge these two throtle functions\n\nexport function throttle() {\n let registrations: number[] = [];\n let lookBackMs = 0;\n\n const shouldStop = (max: number, timeMs: number) => {\n const now = new Date().getTime();\n const count = registrations.filter((value) => value > now - timeMs).length;\n return count >= max;\n };\n\n const clean = () => {\n const now = new Date().getTime();\n registrations = registrations.filter((value) => value > now - lookBackMs);\n };\n\n const stop = (max: number, timeMs: number): boolean => {\n if (timeMs > lookBackMs) lookBackMs = timeMs;\n clean();\n return shouldStop(max, timeMs);\n };\n\n const register = () => {\n registrations.unshift(new Date().getTime());\n };\n\n return { stop, register };\n}\n\nexport function throttle2() {\n let timer: number | null;\n let lastTime: Date = new Date(0);\n\n const clearTimer = () => {\n if (timer != null) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n const execute = () => {\n lastTime = new Date();\n clearTimer();\n };\n\n const func = (ms: number): Promise<void> =>\n new Promise((resolve) => {\n clearTimer();\n const next = lastTime.getTime() - new Date().getTime() + ms;\n\n if (next <= 0) {\n execute();\n resolve();\n } else {\n timer = window.setTimeout(() => {\n execute();\n resolve();\n }, ms);\n }\n });\n\n return func;\n}\n","import { useEffect, Inputs, useRef } from \"preact/hooks\";\nimport { CancellationToken } from \"./cancellationToken\";\n\nexport const useCancellingEffect = <T>(effect: (token: CancellationToken) => Promise<T>, inputs?: Inputs): void => {\n const ref = useRef<CancellationToken>(new CancellationToken());\n\n useEffect(() => {\n ref.current.cancel();\n const token = (ref.current = new CancellationToken());\n effect(token);\n return () => token.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, inputs);\n};\n","import { getBrowserNameAndVersion, BrowserName } from \"services/app\";\n\nexport enum BrowserCompatibility {\n Compatible = \"Compatible\",\n Crawler = \"Crawler\",\n TooOld = \"TooOld\",\n Unknown = \"Unknown\"\n}\n\nexport function getBrowserCompatibility(): BrowserCompatibility {\n const { name, version } = getBrowserNameAndVersion();\n switch (name) {\n case BrowserName.Crawler:\n return BrowserCompatibility.Crawler;\n case BrowserName.Unknown:\n case BrowserName.InternetExplorer:\n case BrowserName.Opera:\n return BrowserCompatibility.Unknown;\n case BrowserName.Chrome:\n case BrowserName.Chromium:\n case BrowserName.Firefox:\n case BrowserName.Edge:\n if (version != null) return version >= 85 ? BrowserCompatibility.Compatible : BrowserCompatibility.TooOld;\n return BrowserCompatibility.Unknown;\n case BrowserName.Safari:\n if (version != null) return version >= 14 ? BrowserCompatibility.Compatible : BrowserCompatibility.TooOld;\n return BrowserCompatibility.Unknown;\n }\n name;\n}\n","import { currentPlaybackStreamTicket, setActivePlayback } from \"./setActivePlayback\";\nimport { initPlayerStartedByUserEvent } from \"./userTriggeredPlaybackEvent\";\nimport { dispatch, messageBus, store } from \"global\";\nimport { PLAYER_CONCURRENCY_LOST, PLAYER_SET_PLAY, PLAYER_STARTED_BY_USER } from \"global/actions\";\nimport type { PlayerConcurrencyLostAction } from \"global/actions/actionTypes\";\nimport { mutateGetPlaybackStream } from \"services/backend\";\nimport { getCurrentInputAudioItemFromState } from \"services/player/inputs/service/helpers\";\nimport { getIsLoggedInFromState } from \"services/user\";\nimport { AudioControllerType, PlayState } from \"models/app/player\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { showConcurrencyModal } from \"components/organisms/concurrencyModal\";\n\nlet throttled = false;\n// let concurrencyHasBeenAway = false;\n\n// export function getConcurrencyHasBeenAway() {\n// return concurrencyHasBeenAway;\n// }\n\n// export function setConcurrencyHasBeenAway(value: boolean) {\n// concurrencyHasBeenAway = value;\n// }\n\nexport function initConcurrency() {\n initPlayerStartedByUserEvent();\n messageBus.subscribeEvery(PLAYER_STARTED_BY_USER, onPlaybackTriggered);\n\n // todo: if we create a PLAYER_SWITCHED_TRACK event later, we'll want to subscribe to it here\n\n // This is sent by the GraphQL subscription\n messageBus.subscribeEvery(PLAYER_CONCURRENCY_LOST, onPlaybackLost);\n}\n\nasync function onPlaybackTriggered() {\n const isLoggedIn = await getIsLoggedInFromState();\n const isCasting = store.getState().player.controller === AudioControllerType.Chromecast;\n if (!isCasting && isLoggedIn) {\n if (throttled) {\n return;\n }\n throttled = true;\n setTimeout(() => {\n throttled = false;\n }, 1000);\n\n const ticket = currentPlaybackStreamTicket();\n if (ticket == null) {\n await setActivePlayback();\n return;\n }\n const ticketResponse = await mutateGetPlaybackStream({ id: ticket });\n if (ticketResponse !== true) {\n await setActivePlayback();\n }\n }\n}\n\n// export async function concurrencyLost() {\n// await setActivePlayback();\n// const id = currentPlaybackStreamId();\n// const isStillActive = id == null ? true : await getPlaybackStream({ id });\n// if (isStillActive) return;\n\n// setConcurrencyHasBeenAway(true);\n// }\n\nfunction onPlaybackLost(event: PlayerConcurrencyLostAction) {\n const state = getCurrentInputAudioItemFromState();\n const isCasting = store.getState().player.controller === AudioControllerType.Chromecast;\n if (!isCasting && state?.playState === PlayState.Playing) {\n dispatch({\n type: PLAYER_SET_PLAY,\n payload: {\n play: false,\n context: { action: AudioContextAction.ConcurrencyLost, trace: null }\n }\n });\n\n // setConcurrencyHasBeenAway(true);\n showConcurrencyModal(event.payload.deviceId, event.payload.friendlyDeviceName);\n }\n}\n","export * from \"./concurrency\";\n","import { currentPlaybackStreamTicket } from \"./setActivePlayback\";\nimport { dispatch, messageBus, store } from \"global\";\nimport { AUDIO_OUTPUT_AUDIO_ENDED, PLAYER_SET_PLAY, PLAYER_STARTED_BY_USER } from \"global/actions\";\nimport { mutateGetPlaybackStream } from \"services/backend\";\nimport { environment } from \"services/environment\";\nimport { getCurrentInputAudioItemFromState } from \"services/player/inputs/service/helpers\";\nimport { AudioControllerType, PlayState } from \"models/app/player\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { showConcurrencyModal } from \"components/organisms/concurrencyModal\";\n\nconst pollingIntervalInSeconds = 8;\nconst pollingMinIntervalInSeconds = 5; // how much of time to allow since last poll, without triggering a poll at start-of-track\n\nlet lastPoll = secondsSinceEpoch() - pollingIntervalInSeconds;\n\nexport async function initConcurrencyPolling() {\n if (!environment.enableConcurrencyPolling) return;\n\n setInterval(() => {\n try {\n if (!isPollThrottled(pollingIntervalInSeconds)) {\n pollIfPlaying();\n } else {\n //console.log(`-=-= throttled (${ Math.floor(secondsSinceEpoch() - lastPoll) } seconds since last poll` );\n }\n } catch (e) {\n //\n }\n }, 2000);\n\n // there's no reason to check right after the user started playback and set the active device\n messageBus.subscribeEvery(PLAYER_STARTED_BY_USER, () => {\n lastPoll = secondsSinceEpoch();\n });\n\n // hack to poll when a new track starts playing.\n // we don't have an event for that, but this fires when a track ends, so we can just wait a bit\n messageBus.subscribeEvery(AUDIO_OUTPUT_AUDIO_ENDED, () => {\n setTimeout(() => {\n if (!isPollThrottled(pollingMinIntervalInSeconds)) {\n pollIfPlaying();\n }\n }, 2000);\n });\n}\n\nasync function pollIfPlaying() {\n const state = getCurrentInputAudioItemFromState();\n const isCasting = store.getState().player.controller === AudioControllerType.Chromecast;\n if (!isCasting && state?.playState === PlayState.Playing) {\n poll();\n }\n}\n\nasync function poll() {\n //console.log(\"polling\");\n lastPoll = secondsSinceEpoch();\n const ticket = currentPlaybackStreamTicket();\n\n if (ticket != null) {\n const isStillActive = await mutateGetPlaybackStream({ id: ticket });\n if (isStillActive === false) {\n dispatch({\n type: PLAYER_SET_PLAY,\n payload: {\n play: false,\n context: { action: AudioContextAction.ConcurrencyLost, trace: null }\n }\n });\n\n // setConcurrencyHasBeenAway(true);\n showConcurrencyModal(\"legacy\", \"\");\n }\n } else {\n // todo: consider logging\n //console.log(\"concurrency check doesn't have a stream id\");\n }\n}\n\nfunction isPollThrottled(minSecondsSinceLast = 0) {\n return lastPoll + minSecondsSinceLast > secondsSinceEpoch();\n}\nfunction secondsSinceEpoch() {\n return new Date().getTime() / 1000;\n}\n","import { mutateSetActivePlaybackStream } from \"services/backend\";\n\nlet _currentPlaybackStreamTicket: string | null = null;\n\nexport const currentPlaybackStreamTicket = () => _currentPlaybackStreamTicket;\nexport async function setActivePlayback() {\n _currentPlaybackStreamTicket = (await mutateSetActivePlaybackStream())?.ticket ?? null;\n}\n//TODO: maybe delete later?\n// function getFriendlyDeviceName(): string {\n// const name = getBrowserName();\n// if (name == BrowserName.InternetExplorer) return translateWithReplacement(\"ConcurrencyBrowserNameWeb\", \"Name\", \"Internet Explorer\");\n// if (name == BrowserName.Unknown) return translate(\"ConcurrencyBrowserNameUnknownWeb\");\n// return translateWithReplacement(\"ConcurrencyBrowserNameWeb\", \"Name\", name);\n// }\n","import { dispatch, messageBus } from \"global\";\nimport {\n AUDIO_OUTPUT_AUDIO_PLAY_CHANGE,\n PLAYER_NEXT,\n PLAYER_PREVIOUS,\n PLAYER_REWIND,\n PLAYER_SEEK,\n PLAYER_SET_PLAY,\n PLAYER_STARTED_BY_USER,\n PLAYQUEUE_PLAY_TRACK,\n PLAYQUEUE_SET_AND_PLAY\n} from \"global/actions\";\nimport { PlayState } from \"models/app/player\";\nimport { getAudioPropertiesFromState } from \"components/shared/hooks\";\n\n// Convenience event for when playback was started by a user-interaction\nexport function initPlayerStartedByUserEvent() {\n messageBus.subscribeEvery(PLAYQUEUE_PLAY_TRACK, onPlaybackTriggered);\n messageBus.subscribeEvery(PLAYER_REWIND, onPlaybackTriggered);\n messageBus.subscribeEvery(PLAYQUEUE_SET_AND_PLAY, onPlaybackTriggered);\n messageBus.subscribeEvery(PLAYER_NEXT, onPlaybackTriggeredIfPlaying);\n messageBus.subscribeEvery(PLAYER_PREVIOUS, onPlaybackTriggeredIfPlaying);\n messageBus.subscribeEvery(PLAYER_SEEK, onPlaybackTriggeredIfPlaying);\n\n messageBus.subscribeEvery(PLAYER_SET_PLAY, async (msg) => {\n if (msg.payload.play) {\n onPlaybackTriggered();\n } else {\n currentlyPlaying = false;\n clearThrottle();\n }\n });\n\n // this catches when the lowlevel player is started (or stopped) by mediakeys.\n // unfortunately it also catches when tracks finish playing and playback is briefly stopped and then restarted on the new track.\n // BUT we're supposed to claim a playback ticket in that case too, so this case does what we need although in a bad way...so I'm keeping it for now.\n // It would be preferable to have that case raised as a some kind of PLAYER_SWITCHED_TRACK event instead, so lets get back to it later.\n messageBus.subscribeEvery(AUDIO_OUTPUT_AUDIO_PLAY_CHANGE, (msg) => {\n if (!currentlyPlaying && msg.payload.playState === PlayState.Playing) {\n currentlyPlaying = true;\n onPlaybackTriggered();\n } else {\n currentlyPlaying = false;\n }\n });\n}\n\nfunction onPlaybackTriggeredIfPlaying() {\n const isPlaying = getAudioPropertiesFromState().playState === PlayState.Playing;\n if (isPlaying) {\n onPlaybackTriggered();\n }\n}\n\nasync function onPlaybackTriggered() {\n if (throttled) {\n return;\n }\n setThrottle();\n\n dispatch({\n type: PLAYER_STARTED_BY_USER\n });\n}\n\nfunction clearThrottle() {\n if (timeoutId) {\n window.clearTimeout(timeoutId);\n }\n throttled = false;\n}\nfunction setThrottle(time = 1000) {\n clearThrottle();\n timeoutId = window.setTimeout(() => {\n throttled = false;\n timeoutId = null;\n }, time);\n}\nlet timeoutId: number | null;\nlet currentlyPlaying = false;\nlet throttled = false;\n","import { ComponentChild } from \"preact\";\n\nexport function replaceStringsWithCompoenents(array: ComponentChild[], search: string, replace: ComponentChild): ComponentChild[] {\n return array\n .map((component) => {\n if (typeof component !== \"string\") return component;\n const split = component.split(search);\n if (split.length != 2) return component;\n return [split[0], replace, split[1]];\n })\n .flat();\n}\n","import { ConnectionModel } from \"models/domain\";\n\nexport function combineConnections<T>(a: ConnectionModel<T>, b: ConnectionModel<T>): ConnectionModel<T> {\n return {\n ...a,\n ...b,\n items: [...a.items, ...b.items]\n };\n}\n","import { pagination } from \"global/constants/pagination\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport type { ConnectionModel } from \"models/domain\";\nimport { ConnectionState } from \"models/domain\";\nimport type { ConnectionFetchFn } from \"components/shared/hooks/useConnectionHandler\";\nimport { openToast } from \"components/organisms/toast\";\nimport { LoadMorePageContentFailToast } from \"components/organisms/toast/toasts\";\n\nexport interface ConnectionHandler<T> {\n connection: ConnectionModel<T>;\n fetchFn?: ConnectionFetchFn<T>;\n more: (value?: number) => void;\n modify: (convert: (item: T[]) => T[]) => void;\n getMore: number;\n inCall: boolean;\n state: ConnectionState;\n onChange?: () => void;\n defaultMore?: number;\n dispose: () => void;\n}\n\nexport interface Props<T> {\n connection: ConnectionModel<T>;\n fetchFn?: ConnectionFetchFn<T>;\n eagerLoadingCount: number;\n max?: number;\n}\n\nexport function createConnectionHandler<T>({ connection, fetchFn, eagerLoadingCount, max }: Props<T>): ConnectionHandler<T> {\n let handler: ConnectionHandler<T> | null = null;\n\n const getDefaultMore = () => handler?.defaultMore ?? pagination.paginationDefaultMore;\n\n const run = async (): Promise<void> => {\n if (!fetchFn) return;\n if (!handler) {\n log.error({ code: \"web-210218-0904\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n const items = handler.connection.items.length;\n if (handler.inCall) return;\n if (items >= handler.getMore && items >= eagerLoadingCount) return;\n if (max != null && items >= max) return;\n if (!handler.connection.pageInfo.hasNextPage) return;\n\n handler.inCall = true;\n handler.state = ConnectionState.Fetching;\n\n //const connection = handler.connection;\n\n const after = handler.connection.pageInfo.endCursor;\n const first = getDefaultMore();\n\n if (after == null) {\n log.error({ code: \"web-210222-1407\", msg: DefaultLogMessage.UnexpectedNull });\n handler.inCall = false;\n handler.state = ConnectionState.UnknownError;\n if (handler.onChange) handler.onChange();\n return;\n }\n\n // log.info({ code: \"web-210225-1748\", msg: \"paginate fetch...\", data: { first, after } });\n\n const newConnection = (await fetchFn(first, after, handler.connection.items.length))?.model ?? null;\n\n // log.info({\n // code: \"web-210225-1749\",\n // msg: \"...paginate fetched\",\n // data: {\n // fetched: newConnection?.items.length ?? 0,\n // \"has more\": newConnection?.pageInfo.hasNextPage\n // }\n // });\n\n if (!newConnection) {\n log.error({ code: \"web-210218-1845\", msg: \"could not get connection\" });\n handler.inCall = false;\n handler.state = ConnectionState.UnknownError; // todo\n\n openToast(LoadMorePageContentFailToast());\n\n if (handler.onChange) handler.onChange();\n return;\n }\n\n handler.connection.items = [...handler.connection.items, ...newConnection.items];\n handler.connection.pageInfo = newConnection.pageInfo;\n //handler.connection = connection;\n\n handler.inCall = false;\n handler.state = ConnectionState.Ok;\n\n if (handler.onChange) handler.onChange();\n run();\n };\n\n const more = (value?: number) => {\n if (!handler) {\n log.error({ code: \"web-210218-0906\", msg: DefaultLogMessage.UnexpectedNull });\n return false;\n }\n value = value ?? handler.connection.items.length + 50;\n\n if (handler.getMore === value) return;\n handler.getMore = value;\n\n if (value) run();\n };\n\n const modify = (convert: ((item: T[]) => T[]) | null) => {\n if (handler && convert) {\n const newItems = convert(handler.connection.items);\n if (newItems !== handler.connection.items) {\n handler.connection.items = newItems;\n if (handler.onChange) handler.onChange();\n }\n }\n };\n\n handler = {\n connection,\n fetchFn,\n more,\n modify,\n getMore: 0,\n inCall: false,\n state: ConnectionState.Ok,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n dispose: () => {}\n };\n\n return handler;\n}\n","import { h } from \"preact\";\nimport { OpenMenuResult } from \"./open\";\nimport { getNextUUID } from \"services/utils\";\nimport {\n ContextMenuPosition,\n ContextMenuItemType,\n ContextMenuAlign,\n ContextMenuItemModel,\n ContextMenuSheetModel,\n ContextMenuTreeModel,\n ContextMenuLinkModel,\n ContextMenuSheetWidth,\n ContextMenuLayerModel\n} from \"models/view/contextMenu\";\n\ninterface CreateContextMenuLinkParams {\n layer: ContextMenuLayerModel;\n parent?: ContextMenuItemModel;\n position: ContextMenuPosition | null;\n tree: ContextMenuTreeModel;\n}\n\nexport function createContextMenuLink({ parent, tree, layer, position }: CreateContextMenuLinkParams): ContextMenuLinkModel {\n const link: ContextMenuLinkModel = {\n children: [],\n id: getNextUUID(),\n layer,\n parent: parent ?? null,\n position,\n tree,\n type: ContextMenuItemType.Link\n };\n if (parent) parent.children = [...parent.children, link];\n return link;\n}\n\ninterface CreateContextMenuSheetParams {\n align: ContextMenuAlign;\n gap?: boolean;\n layer: ContextMenuLayerModel;\n menu: h.JSX.Element;\n onClose?: (result: OpenMenuResult) => void;\n parent: ContextMenuItemModel;\n tree: ContextMenuTreeModel;\n width: ContextMenuSheetWidth;\n}\n\nexport function createContextMenuSheet({ tree, layer, parent, menu: content, align, width, gap = false }: CreateContextMenuSheetParams): ContextMenuSheetModel {\n const sheet: ContextMenuSheetModel = {\n align,\n children: [],\n content,\n gap,\n id: getNextUUID(),\n layer,\n parent,\n position: null,\n tree,\n type: ContextMenuItemType.Sheet,\n width\n };\n parent.children = [...parent.children, sheet];\n return sheet;\n}\n","import { DefaultLogMessage, log } from \"services/logger\";\nimport type { ContextMenuItemModel, AppContextMenuModel, ContextMenuSheetModel, ContextMenuLinkModel, ContextMenuLayerModel } from \"models/view/contextMenu\";\nimport { ContextMenuItemType } from \"models/view/contextMenu\";\n\nexport function getAllContextMenuChildren(item: ContextMenuItemModel): ContextMenuItemModel[] {\n const childs: ContextMenuItemModel[] = [];\n const add = (child: ContextMenuItemModel) => {\n childs.push(child);\n child.children.forEach((child) => add(child));\n };\n item.children.forEach((child) => add(child));\n return childs;\n}\n\nexport function getAllContextMenuParents(item: ContextMenuItemModel): ContextMenuItemModel[] {\n const parents: ContextMenuItemModel[] = [];\n const add = (parent: ContextMenuItemModel) => {\n parents.push(parent);\n if (parent.parent) add(parent.parent);\n };\n if (item.parent) add(item.parent);\n return parents;\n}\n\nexport function getAllContextMenus(item: ContextMenuItemModel): ContextMenuItemModel[] {\n return [...getAllContextMenuParents(item).reverse(), item, ...getAllContextMenuChildren(item)];\n}\n\nexport function getContextMenuAppSheets(appMenus: AppContextMenuModel): ContextMenuSheetModel[] {\n const open = appMenus.open;\n const all = open ? ([open, ...getAllContextMenuParents(open).filter((item) => item.type === ContextMenuItemType.Sheet)] as ContextMenuSheetModel[]) : [];\n return all;\n}\n\nexport function getContextMenuSheetChildrenLayers(sheet: ContextMenuItemModel): ContextMenuLayerModel[] {\n const layers = sheet.tree.layers;\n const index = layers.indexOf(sheet.layer);\n\n if (index === -1) {\n log.error({ code: \"web-220410-1146\", msg: DefaultLogMessage.UnexpectedValue });\n return [];\n }\n\n const children = layers.slice(index);\n return children;\n}\n\nexport function isContextMenuLayerHover(hoverIds: string[], item: ContextMenuItemModel): boolean {\n const top = ([item, ...getAllContextMenuParents(item)].reverse()[0] ?? null) as ContextMenuItemModel | null;\n return top != null && [top, ...getAllContextMenuChildren(top)].some((child) => isContextMenuHover(hoverIds, child, item.layer));\n}\n\nexport function isContextMenuChildHover(hoverIds: string[], item: ContextMenuItemModel): boolean {\n return getAllContextMenuChildren(item).some((child) => isContextMenuHover(hoverIds, child, item.layer));\n}\n\nexport function isContextMenuChildOpen(openId: string | null, item: ContextMenuItemModel): boolean {\n return getAllContextMenuChildren(item).some((child) => child.type === ContextMenuItemType.Sheet && child.id === openId);\n}\n\nexport function isContextMenuChildOpenWithAnotherLayer(item: ContextMenuItemModel): boolean {\n return getAllContextMenuChildren(item).some((child) => child.type === ContextMenuItemType.Sheet && child.layer != item.layer);\n}\n\nexport function isContextMenuHover(hovers: string[], item: ContextMenuItemModel, layer: ContextMenuLayerModel): boolean {\n if (item.layer !== layer) return false;\n return hovers.indexOf(item.id) !== -1;\n}\n\nexport function isContextMenuLinkActive(openId: string | null, hoverIds: string[], item: ContextMenuLinkModel): boolean {\n const hover = isContextMenuHover(hoverIds, item, item.layer);\n if (hover) return true;\n\n const childHover = isContextMenuChildHover(hoverIds, item);\n if (childHover) return true;\n\n const layerHover = isContextMenuLayerHover(hoverIds, item);\n if (layerHover) return false;\n\n const childOpen = isContextMenuChildOpen(openId, item);\n if (childOpen) return true;\n\n return false;\n}\n\nexport function isContextMenuSheetOpen(open: ContextMenuSheetModel | null, sheet: ContextMenuSheetModel): boolean {\n return open?.id === sheet.id;\n}\n\nexport function isContextMenuSheetVisible(visible: ContextMenuSheetModel[], sheet: ContextMenuSheetModel): boolean {\n return visible.indexOf(sheet) !== -1;\n}\n\nexport function isContextMenuSheetOpenOrVisible(open: ContextMenuSheetModel | null, visible: ContextMenuSheetModel[], sheet: ContextMenuSheetModel): boolean {\n return isContextMenuSheetOpen(open, sheet) || isContextMenuSheetVisible(visible, sheet);\n}\n\nexport function isContextMenuLayerVisible(open: ContextMenuSheetModel | null, sheet: ContextMenuItemModel): boolean {\n return open?.layer == sheet.layer;\n}\n\nexport function isContextMenuTreeVisible(open: ContextMenuSheetModel | null, sheet: ContextMenuItemModel): boolean {\n return open?.tree == sheet.tree;\n}\n","export * from \"./create\";\nexport * from \"./helpers\";\nexport * from \"./open\";","import type { h } from \"preact\";\nimport { dispatch, store } from \"global\";\nimport { CONTEXT_MENU_OPEN } from \"global/actions\";\nimport { createContextMenuSheet, createContextMenuLink } from \"services/contextMenus\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ContextMenuLinkModel, ContextMenuTreeModel, ContextMenuPosition, ContextMenuLayerModel } from \"models/view/contextMenu\";\nimport { ContextMenuPositionType, ContextMenuAlign, ContextMenuSheetWidth } from \"models/view/contextMenu\";\n\nexport interface OpenMenuResult {\n action: OpenMenuResultAction;\n}\n\nexport enum OpenMenuResultAction {\n Click,\n Cancel\n}\n\nexport function openMenuByElement(\n menu: h.JSX.Element,\n element: HTMLElement,\n closeOnNavigation = true,\n width: ContextMenuSheetWidth = ContextMenuSheetWidth.Default,\n context?: PreviewContextModel\n): Promise<OpenMenuResult> {\n return openMenu(menu, { type: ContextMenuPositionType.Anchor, element }, closeOnNavigation, width, context);\n}\n\nexport function openMenuByMouse(\n menu: h.JSX.Element,\n event: MouseEvent,\n closeOnNavigation = true,\n width: ContextMenuSheetWidth = ContextMenuSheetWidth.Default,\n context?: PreviewContextModel\n): Promise<OpenMenuResult> {\n return openMenu(menu, { type: ContextMenuPositionType.ScreenPosition, screenPosition: { x: event.x, y: event.y } }, closeOnNavigation, width, context);\n}\n\nexport function openMenuAtPosition(\n menu: h.JSX.Element,\n x: number,\n y: number,\n closeOnNavigation = true,\n width: ContextMenuSheetWidth = ContextMenuSheetWidth.Default,\n context?: PreviewContextModel,\n): Promise<OpenMenuResult> {\n return openMenu(menu, { type: ContextMenuPositionType.ScreenCorner, screenPosition: { x, y } }, closeOnNavigation, width, context, ContextMenuAlign.UpperRight);\n}\n\nexport function openMenu(\n menu: h.JSX.Element,\n position: ContextMenuPosition,\n closeOnNavigation = true,\n width: ContextMenuSheetWidth = ContextMenuSheetWidth.Default,\n context?: PreviewContextModel,\n align?: ContextMenuAlign\n): Promise<OpenMenuResult> {\n const parent = store.getState().menu.open ?? undefined;\n\n const tree: ContextMenuTreeModel = parent?.tree ?? { layers: [] };\n const layer: ContextMenuLayerModel = {};\n tree.layers.push(layer);\n\n const link = createContextMenuLink({ parent, tree, layer, position });\n\n const promise = new Promise<OpenMenuResult>((resolve) => {\n link.layer.onClose = resolve;\n const sheet = createContextMenuSheet({ parent: link, menu, tree, layer, align: align ?? ContextMenuAlign.Below, gap: false, width });\n dispatch({ type: CONTEXT_MENU_OPEN, payload: { sheet, closeOnNavigation, context } });\n });\n\n return promise;\n}\n\ninterface OpenSubmenuParams {\n parent: ContextMenuLinkModel;\n menu: h.JSX.Element;\n}\n\nexport function openSubmenu({ parent, menu }: OpenSubmenuParams) {\n const sheet = createContextMenuSheet({ parent, menu, tree: parent.tree, layer: parent.layer, align: ContextMenuAlign.Right, gap: true, width: ContextMenuSheetWidth.Default });\n dispatch({ type: CONTEXT_MENU_OPEN, payload: { sheet } });\n\n return sheet;\n}\n","import { closeContextMenuSheet } from \"./closeContextMenu\";\nimport { OpenMenuResult } from \"services/contextMenus/open\";\nimport { AppContextMenuModel } from \"models/view/contextMenu/AppContextMenuModel\";\n\nexport function closeAllContextMenus(appMenus: AppContextMenuModel, result: OpenMenuResult): AppContextMenuModel {\n const { open } = appMenus;\n if (open) return closeContextMenuSheet(appMenus, open, result);\n else return appMenus;\n}\n","import { isContextMenuSheetOpen } from \"..\";\nimport { OpenMenuResult } from \"services/contextMenus/open\";\nimport { AppContextMenuModel } from \"models/view/contextMenu/AppContextMenuModel\";\nimport { ContextMenuSheetModel } from \"models/view/contextMenu/items/ContextMenuSheetModel\";\n\nexport function closeContextMenuSheet(appMenus: AppContextMenuModel, sheet: ContextMenuSheetModel, result: OpenMenuResult): AppContextMenuModel {\n if (!isContextMenuSheetOpen(appMenus.open, sheet)) return appMenus;\n sheet.tree.layers.forEach((layer) => layer.onClose && layer.onClose(result));\n return { ...appMenus, open: null };\n}\n","import { AppContextMenuModel } from \"models/view/contextMenu\";\n\nexport const hoverContextMenuItem = (appMenus: AppContextMenuModel, menuId: string, on: boolean): AppContextMenuModel => {\n const index = appMenus.hovers.indexOf(menuId);\n const wasOn = index !== -1;\n\n if (on === wasOn) return appMenus;\n\n const hovers = [...appMenus.hovers];\n if (on) hovers.push(menuId);\n else hovers.splice(index, 1);\n\n return { ...appMenus, hovers };\n};\n","export * from \"./closeAllContextMenus\";\nexport * from \"./closeContextMenu\";\nexport * from \"./openContextMenu\";\nexport * from \"./hoverContextMenuItem\";\nexport * from \"./navigated\";\n","import { closeAllContextMenus } from \".\";\nimport { OpenMenuResultAction } from \"..\";\nimport { AppContextMenuModel } from \"models/view/contextMenu/AppContextMenuModel\";\n\nexport function onNavigated(appMenus: AppContextMenuModel): AppContextMenuModel {\n return appMenus.closeOnNavigation ? closeAllContextMenus(appMenus, { action: OpenMenuResultAction.Cancel }) : appMenus;\n}\n","import { closeAllContextMenus } from \"./closeAllContextMenus\";\nimport { getContextMenuSheetChildrenLayers, isContextMenuTreeVisible } from \"../helpers\";\nimport type { OpenMenuResult } from \"../open\";\nimport { OpenMenuResultAction } from \"../open\";\nimport type { AppContextMenuModel, ContextMenuSheetModel } from \"models/view/contextMenu\";\n\nexport const openContextMenu = (appMenus: AppContextMenuModel, sheet: ContextMenuSheetModel, closeOnNavigation: boolean | undefined): AppContextMenuModel => {\n closeOnNavigation = appMenus.open ? (closeOnNavigation = appMenus.closeOnNavigation) : closeOnNavigation === undefined ? true : closeOnNavigation;\n\n const isOpen = isContextMenuTreeVisible(appMenus.open, sheet);\n const result = { action: OpenMenuResultAction.Cancel };\n\n if (isOpen) sheet = closeContextMenuChildren(sheet, result);\n else appMenus = closeAllContextMenus(appMenus, result);\n\n return { ...appMenus, open: sheet, closeOnNavigation };\n};\n\nfunction closeContextMenuChildren(sheet: ContextMenuSheetModel, result: OpenMenuResult): ContextMenuSheetModel {\n const layers = getContextMenuSheetChildrenLayers(sheet);\n layers.forEach((layer) => layer != sheet.layer && layer.onClose && layer.onClose(result));\n\n sheet.children = [];\n\n return sheet;\n}\n","import { AppContextMenuModel, ContextMenuSheetModel } from \"models/view/contextMenu\";\n\nexport const setVisibleContextMenu = (appMenu: AppContextMenuModel, sheet: ContextMenuSheetModel, on: boolean): AppContextMenuModel => {\n const index = appMenu.visible.indexOf(sheet);\n const wasOn = index !== -1;\n\n if (on === wasOn) return appMenu;\n\n const visible = [...appMenu.visible];\n if (on) visible.push(sheet);\n else visible.splice(index, 1);\n\n return { ...appMenu, visible };\n};\n","import { ContextMenuPosition, ContextMenuItemModel } from \"models/view/contextMenu\";\nimport { AppContextMenuModel } from \"models/view/contextMenu/AppContextMenuModel\";\n\nexport function updateContextMenuPosition(appMenus: AppContextMenuModel, item: ContextMenuItemModel, position: ContextMenuPosition): AppContextMenuModel {\n item.position = position;\n return { ...appMenus }; // todo should update state at item level...\n}\n","import { dispatch, store } from \"global\";\nimport { serviceWorkerConfig } from \"shared/services/serviceWorkerConfig\";\nimport { ENABLE_LOGTYPE, NOTIFICATION_FEED_SET_NOTIFICATIONS, UPDATE_CONTROL_PANEL } from \"global/actions/actions\";\nimport { setEnvironmentPresetFromControlPanel, setEnvironmentPropertiesFromControlPanel } from \"services/environment\";\nimport { LogTag, log } from \"services/logger\";\nimport { getNotificationFeedFromState } from \"services/notificationFeed\";\nimport type { ControlPanelModel } from \"models/app\";\nimport type { NotificationPreviewModel } from \"models/domain\";\n\nfunction update(controlPanel: Partial<ControlPanelModel>) {\n dispatch({ type: UPDATE_CONTROL_PANEL, payload: { controlPanel } });\n return { settings: controlPanel };\n}\nfunction enableLogType(type: LogTag, enable: boolean) {\n dispatch({ type: ENABLE_LOGTYPE, payload: { type, enable } });\n}\n\nconst enableAudioCachePool = (value: boolean) => update({ enableAudioCachePool: value });\n\nconst enableAudioPreload = (value: boolean) => update({ enableAudioPreload: value });\n\nconst enableFeedbackResponse = (value: boolean) => update({ enableFeedbackResponse: value });\n\nconst enableNotificationFeed = (value: boolean) => update({ enableNotificationFeed: value });\n\nconst enableNotificationFeedTestMode = (value: boolean) => update({ enableNotificationFeedTestMode: value });\n\nasync function getCacheStats() {\n const cacheGraphqlLength = (await (await caches.open(serviceWorkerConfig.cacheNameGraphql)).keys()).length;\n const cacheHlsLength = (await (await caches.open(serviceWorkerConfig.cacheNameHls)).keys()).length;\n const cacheInstallationLength = (await (await caches.open(serviceWorkerConfig.cacheNameInstallation)).keys()).length;\n const cacheNavigateLength = (await (await caches.open(serviceWorkerConfig.cacheNameNavigate)).keys()).length;\n\n return { cacheGraphqlLength, cacheHlsLength, cacheInstallationLength, cacheNavigateLength };\n}\n\nconst getArrayOfConditionalLogTypeEnum = () => {\n return Object.keys(LogTag).map((name) => {\n return LogTag[name as keyof typeof LogTag];\n });\n};\n\nconst getReduxState = () => ({ ...store.getState() });\nconst getReduxDump = () => JSON.stringify(store.getState());\nconst getReduxDumpLength = () => getReduxDump().length;\nconst getSettings = () => ({ settings: store.getState().controlPanel });\n\n// settings.setNotifications( settings.getReduxState().notificationFeed.feeds[0].notifications )\nconst setNotifications = (notifications: NotificationPreviewModel[]) => {\n dispatch({\n type: NOTIFICATION_FEED_SET_NOTIFICATIONS,\n payload: {\n notifications,\n notificationState: null,\n notSeenCount: 0\n }\n });\n};\n\nconst logPlayback = (value: boolean) => enableLogType(LogTag.Playback, value);\nconst logChromecast = (value: boolean) => enableLogType(LogTag.Chromecast, value);\nconst logRemoteConfig = (value: boolean) => enableLogType(LogTag.RemoteConfig, value);\nconst logDispatches = (value: boolean) => enableLogType(LogTag.Dispatch, value);\nconst logInfo = (value: boolean) => enableLogType(LogTag.Info, value);\n\nconst logPlaylist = (value: boolean) => enableLogType(LogTag.Playlist, value);\nconst logAppSetting = (value: boolean) => enableLogType(LogTag.AppSetting, value);\nconst logNotifications = (value: boolean) => enableLogType(LogTag.Notifications, value);\n\nconst logNavigationStack = (value: boolean) => enableLogType(LogTag.NavigationStack, value);\nconst logUser = (value: boolean) => enableLogType(LogTag.User, value);\nconst logCollection = (value: boolean) => enableLogType(LogTag.Collection, value);\nconst logSubscriptions = (value: boolean) => enableLogType(LogTag.Subscriptions, value);\n\nconst logAll = (value?: boolean) => {\n if (value === undefined) {\n console.log(\"Usage: settings.logAll(true|false)\");\n return;\n }\n update({ enabledLogTypes: value ? getArrayOfConditionalLogTypeEnum() : [] });\n};\n\nconst sendLog = (type: \"simple\" | \"info\" | \"warn\" | \"error\") => {\n if (type === undefined) {\n console.log('Usage: settings.logAll(\"simple\"|\"info\"|\"warn\"|\"error\")');\n return;\n }\n switch (type) {\n case \"simple\":\n log.simple({ code: \"web-221208-1527\", msg: \"test simple message\" });\n break;\n case \"info\":\n log.info({ code: \"web-221208-1527\", msg: \"test info message\" });\n break;\n case \"warn\":\n log.warn({ code: \"web-221208-1527\", msg: \"test warn message\" });\n break;\n case \"error\":\n default:\n log.error({ code: \"web-221208-1527\", msg: \"test error message\" });\n break;\n }\n return \"Ok.\";\n};\n\nexport let showDropZone: boolean;\n\nexport function initControlPanelService() {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).settings = {\n enableAudioCachePool,\n enableAudioPreload,\n enableFeedbackResponse,\n enableNotificationFeed,\n enableNotificationFeedTestMode,\n getCacheStats,\n getReduxState,\n getReduxDump,\n getReduxDumpLength,\n getSettings,\n getNotifications: getNotificationFeedFromState,\n setNotifications,\n logAll,\n logChromecast,\n logDispatches,\n logRemoteConfig,\n logInfo,\n logPlayback,\n logPlaylist,\n logAppSetting,\n logNotifications,\n logNavigationStack,\n logUser,\n logCollection,\n logSubscriptions,\n sendLog,\n setEnvironmentPreset: setEnvironmentPresetFromControlPanel,\n setEnvironmentProperties: setEnvironmentPropertiesFromControlPanel,\n showDropZone: (value: boolean) => (showDropZone = value)\n };\n } catch (e) {\n log.error({ code: \"web-220218-1424\", msg: \"init control panel service failed\", error: e });\n }\n}\n","export function setCookie(name: string, value: string, expires?: Date, domain?: string) {\n if (!expires) expires = new Date(new Date().getTime() + 30 * 24 * 60 * 60 * 1000);\n\n let cookie = `${name}=${value}; expires=${expires.toUTCString()}; path=/`;\n if (domain) cookie = cookie += `; domain=${domain}`;\n\n document.cookie = cookie;\n}\n\nexport function getCookie(name: string): string | null {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n\n if (parts.length == 2) {\n return parts.pop()?.split(\";\").shift() ?? null;\n }\n\n return null;\n}\n\nexport function deleteCookie(name: string, domain?: string) {\n const expires = new Date(0);\n setCookie(name, \"\", expires, domain);\n}\n","export * from \"./cookie\";","import { translate } from \"global/config\";\nimport { getLinkFromResource } from \"services/resource\";\nimport type { PlayQueuePlayableModel } from \"models/domain\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function getDragTitle(resource: PlayQueuePlayableModel) {\n const trackCount = resource.trackCount;\n if (trackCount != null && trackCount > 1) return `${trackCount} ${translate(\"Tracks\").toLowerCase()}`;\n return getLinkFromResource(resource)?.text ?? \"\";\n}\n","import { WebAppEnvironment, WebAppBrand } from \"shared/models\";\nimport { setTranslations } from \"global/config\";\nimport { getRuntimeEnvironment } from \"services/app\";\nimport { addQueryParameterToUrl } from \"services/urlHelper\";\nimport type { NuuApps } from \"generated/localization\";\nimport type { Language } from \"models/view/Localization\";\n\nexport enum LoginMode {\n OauthPopup = \"oauthPopup\",\n OauthNavigation = \"oauthNavigation\",\n OauthEmbedded = \"oauthEmbedded\"\n}\n\nexport enum GraphqlEnvironmentName {\n Local = \"local\",\n Dev = \"dev\",\n Prod = \"prod\",\n Stage = \"stage\",\n Test = \"test\"\n}\n\nexport enum EnvironmentPreset {\n Default = \"default\",\n Prod = \"prod\",\n Stage = \"stage\",\n Dev = \"dev\"\n}\n\ntype ChromecastPortal = \"yousee\" | \"telmore\";\n\n// const chromecastRecieverAppIds = { // old ones\n// telmoreDev: \"6B9D8BAB\",\n// telmoreProd: \"9C16B8B7\",\n// youSeeDev: \"73E2CD23\",\n// youSeeProd: \"449E3874\"\n// };\n\nconst chromecastRecieverAppIds = {\n telmoreDev: \"\", // CC todo\n telmoreProd: \"19269CB1\",\n youSeeDev: \"\", // CC todo\n youSeeProd: \"EDA3F5EA\"\n};\n\nexport interface EnvironmentConfig {\n graphqlEnvironmentName: GraphqlEnvironmentName;\n apiFrontPageId: string;\n apiMoreStationsCategoryId: string;\n apiPortalId: string;\n apiRadioPageId: string;\n chromecastPortal: ChromecastPortal;\n chromecastRecieverAppId: string;\n enableConcurrencyPolling: boolean;\n enableGraphQlSubscriptions: boolean;\n loginMode: LoginMode;\n buildEnvironment: WebAppEnvironment;\n runtimeEnvironment: WebAppEnvironment;\n contentEditorMode: boolean;\n sessionHackUrl: string | null;\n}\n\nexport interface Environment extends EnvironmentConfig {\n webAppBrand: WebAppBrand;\n}\n\nexport interface BuildEnvironment {\n environment: Environment;\n translations: { [key in Language]: NuuApps };\n}\n\nconst environmentSessionStorageKey = \"environment\";\n\nexport let environment: Environment;\n\nexport function initEnvironment(env: BuildEnvironment) {\n try {\n environment = env.environment;\n setTranslations(env.translations);\n\n tryReadSessionEnvironment();\n readEnvironmentPresetFromUrl();\n readEnvironmentPropertiesFromUrl();\n } catch (e) {\n console.error({ code: \"web-220217-1312\", msg: \"environment could not initiate\", e });\n throw e;\n }\n}\n\nexport function setEnvironmentPresetFromControlPanel(preset?: EnvironmentPreset): string {\n if (preset == null) return `possible environment presets: ${Object.values(EnvironmentPreset)}`;\n\n updateSessionEnvironmentFromPreset(preset);\n return logAndReload();\n}\n\nexport function setEnvironmentPropertiesFromControlPanel(partial?: Partial<EnvironmentConfig>): string {\n if (partial == null) return `possible environment properties: ${Object.keys(getEnvironmentConfigDefault())}`;\n\n updateSessionEnvironment({ ...environment, ...partial });\n return logAndReload();\n}\n\nfunction logAndReload(): string {\n const status = `environment updated: ${JSON.stringify(environment)}`;\n // console.warn(status);\n\n setTimeout(() => {\n window.location.reload();\n }, 0);\n\n return status;\n}\n\nfunction tryReadSessionEnvironment() {\n const envStr = sessionStorage.getItem(environmentSessionStorageKey);\n if (envStr == null) return;\n\n const env: EnvironmentConfig = JSON.parse(envStr);\n // console.warn(\"custom session environment from storage\", env);\n\n environment = { ...environment, ...env };\n}\n\nfunction readEnvironmentPresetFromUrl() {\n const params = new URLSearchParams(window.location.search);\n\n const preset = params.get(\"preset\") as EnvironmentPreset | null;\n if (preset != null) {\n // console.warn(`custom session environment from url, preset: ${preset}`);\n updateSessionEnvironmentFromPreset(preset);\n }\n}\n\nfunction readEnvironmentPropertiesFromUrl() {\n const params = new URLSearchParams(window.location.search);\n const env = environment;\n let change = false;\n\n params.forEach((value, key) => {\n if (Object.keys(environment).indexOf(key) !== -1) {\n change = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (env as any)[key] = value;\n }\n });\n\n if (change) {\n // console.warn(\"custom session environment from url\", env);\n updateSessionEnvironment(env);\n }\n}\n\nfunction updateSessionEnvironmentFromPreset(preset: EnvironmentPreset) {\n switch (preset) {\n case EnvironmentPreset.Default:\n resetSessionEnvironment();\n break;\n case EnvironmentPreset.Prod:\n updateSessionEnvironment(getEnvironmentConfigProd());\n break;\n case EnvironmentPreset.Stage:\n updateSessionEnvironment(getEnvironmentConfigStage());\n break;\n case EnvironmentPreset.Dev: {\n // console.error(\"preset not supported\", preset);\n return;\n }\n }\n}\n\nfunction updateSessionEnvironment(env: EnvironmentConfig) {\n environment = { ...environment, ...env };\n sessionStorage.setItem(environmentSessionStorageKey, JSON.stringify(environment));\n}\n\nfunction resetSessionEnvironment() {\n environment = { ...environment, ...getEnvironmentConfigDefault() };\n sessionStorage.removeItem(environmentSessionStorageKey);\n}\n\nconst isDevBuildEnvironment = () => process.env.NODE_ENV === \"development\";\n\nfunction getEnvironmentConfigDefault(): EnvironmentConfig {\n switch (environment.webAppBrand) {\n case WebAppBrand.Telmore:\n return getEnvironmentConfigTelmoreDefault();\n case WebAppBrand.YouSee:\n return getEnvironmentConfigYouSeeDefault();\n }\n}\n\nfunction getEnvironmentConfigProd(): EnvironmentConfig {\n switch (environment.webAppBrand) {\n case WebAppBrand.Telmore:\n return getEnvironmentConfigTelmoreProd();\n case WebAppBrand.YouSee:\n return getEnvironmentConfigYouSeeProd();\n }\n}\n\nfunction getEnvironmentConfigStage(): EnvironmentConfig {\n switch (environment.webAppBrand) {\n case WebAppBrand.Telmore:\n return getEnvironmentConfigTelmoreStage();\n case WebAppBrand.YouSee:\n return getEnvironmentConfigYouSeeStage();\n }\n}\n\nexport function getEnvironmentConfigTelmoreDefault(): EnvironmentConfig {\n const env = getEnvironmentConfigTelmoreProd();\n env.runtimeEnvironment = getRuntimeEnvironment();\n\n const isDevBuild = isDevBuildEnvironment();\n if (isDevBuild) {\n env.buildEnvironment = WebAppEnvironment.Development;\n // env.chromecastRecieverAppId = chromecastRecieverAppIds.telmoreDev;\n }\n\n return env;\n}\n\nexport function getEnvironmentConfigTelmoreStage(): EnvironmentConfig {\n const env = getEnvironmentConfigTelmoreDefault();\n env.apiPortalId = \"1787\";\n env.apiFrontPageId = \"5ac39715f65c4f244455d4ab\";\n env.apiRadioPageId = \"61ddf7389dd0ea0c04fcc958\";\n\n return env;\n}\n\nexport function getEnvironmentConfigYouSeeDefault(): EnvironmentConfig {\n const env = getEnvironmentConfigYouSeeProd();\n env.runtimeEnvironment = getRuntimeEnvironment();\n\n const isDevBuild = isDevBuildEnvironment();\n if (isDevBuild) {\n env.buildEnvironment = WebAppEnvironment.Development;\n // env.chromecastRecieverAppId = chromecastRecieverAppIds.youSeeDev;\n }\n\n return env;\n}\n\nexport function getEnvironmentConfigYouSeeStage(): EnvironmentConfig {\n const env = getEnvironmentConfigYouSeeDefault();\n env.apiPortalId = \"1858\";\n env.apiFrontPageId = \"5ac395f29dd0ea25e8ad26c1\";\n env.apiRadioPageId = \"61ddf552f65c4f09fc1a8089\";\n\n return env;\n}\n\nfunction getEnvironmentConfigTelmoreProd(): EnvironmentConfig {\n return {\n apiPortalId: \"1387\",\n chromecastPortal: \"telmore\",\n chromecastRecieverAppId: chromecastRecieverAppIds.telmoreProd,\n enableConcurrencyPolling: true,\n enableGraphQlSubscriptions: false,\n apiFrontPageId: \"615d6f939dd0ea1308e81609\",\n apiMoreStationsCategoryId: \"188722\",\n graphqlEnvironmentName: GraphqlEnvironmentName.Prod,\n loginMode: LoginMode.OauthEmbedded,\n // apiRadioPageId: \"63bbeb1521cd8e0afc409666\", (mereRadio page)\n apiRadioPageId: \"60c1f27e9dd0ec0d5c861165\",\n buildEnvironment: WebAppEnvironment.Production,\n runtimeEnvironment: WebAppEnvironment.Production,\n contentEditorMode: false,\n sessionHackUrl: null\n };\n}\n\nfunction getEnvironmentConfigYouSeeProd(): EnvironmentConfig {\n return {\n apiPortalId: \"1458\",\n chromecastPortal: \"yousee\",\n chromecastRecieverAppId: chromecastRecieverAppIds.youSeeProd,\n enableConcurrencyPolling: true,\n enableGraphQlSubscriptions: false,\n apiFrontPageId: \"615d6ce19dd0ea1308e81608\",\n apiMoreStationsCategoryId: \"188721\",\n graphqlEnvironmentName: GraphqlEnvironmentName.Prod,\n loginMode: LoginMode.OauthNavigation,\n // apiRadioPageId: \"63bbeaec21cd931724167157\", (mereRadio page)\n apiRadioPageId: \"60c1d9659dd0ec0d5c861164\",\n buildEnvironment: WebAppEnvironment.Production,\n runtimeEnvironment: WebAppEnvironment.Production,\n contentEditorMode: false,\n sessionHackUrl: \"\"//https://login.yousee.dk/idp/startSLO.ping\"\n };\n}\n\nexport function addEnvironmentVariablesToUrl(url: string): string {\n const { graphqlEnvironmentName, apiPortalId } = environment;\n url = addQueryParameterToUrl(url, \"graphqlEnvironmentName\", graphqlEnvironmentName);\n url = addQueryParameterToUrl(url, \"apiPortalId\", apiPortalId);\n\n return url;\n}\n","export * from \"./environmentService\";","import { useEffect, useState } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { dispatch, messageBus } from \"global\";\nimport { FAVORITES_UPDATED, PLAYER_TOGGLE_FAVORITE } from \"global/actions\";\nimport { useMessageBus } from \"global/hooks\";\nimport {\n clearTemporaryFavoriteCache,\n getIsMeFavoriteWithCustomCache,\n mutateAddAlbumToFavorites,\n mutateAddArtistToFavorites,\n mutateAddPlaylistToFavorites,\n mutateAddTrackToFavorites,\n mutateRemoveAlbumFromFavorites,\n mutateRemoveArtistFromFavorites,\n mutateRemovePlaylistFromFavorites,\n mutateRemoveTrackFromFavorites\n} from \"services/backend\";\nimport type { RootModel } from \"models/app\";\nimport { LoginState } from \"models/app/LoginState\";\nimport type {\n LocationContentType,\n ResourceModel,\n AlbumModel,\n PlaylistModel,\n AlbumPreviewModel,\n PlaylistPreviewModel,\n ArtistPreviewModel,\n AlbumPageModel,\n ArtistPageModel,\n PlaylistPageModel,\n LiveRadioTrackPreviewModel,\n LiveRadioTrackModel,\n PlayQueuePlayableModel,\n ArtistModel,\n TrackPreviewModel\n} from \"models/domain\";\nimport { FavoriteContentType } from \"models/domain\";\nimport type { TrackPlayableModel, TrackPlayablePreviewModel } from \"models/domain/TrackPlayableModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { promptLoginIfRequired } from \"components/organisms/login\";\nimport { openToast } from \"components/organisms/toast\";\nimport { AddMusicToMyMusicFailToast, AddMusicToMyMusicLimitExceededToast, AddMusicToMyMusicSuccessToast, RemoveMusicFromMyMusicFailToast, RemoveMusicFromMyMusicSuccessToast } from \"components/organisms/toast/toasts\";\n\nexport type FavoriteModel = TrackPlayableModel | AlbumModel | ArtistModel | PlaylistModel | LiveRadioTrackModel | FavoritePreviewModel;\nexport type FavoritePreviewModel = TrackPlayablePreviewModel | AlbumPreviewModel | ArtistPreviewModel | PlaylistPreviewModel | LiveRadioTrackPreviewModel | FavoritePageModel;\nexport type FavoritePageModel = AlbumPageModel | ArtistPageModel | PlaylistPageModel;\n\nexport type FavoriteModelType = FavoriteModel[\"contentType\"];\n\nexport function initFavorites() {\n messageBus.subscribeEvery(PLAYER_TOGGLE_FAVORITE, async (msg) => {\n const { operation, playables } = msg.payload;\n if (playables && (await promptLoginIfRequired())) {\n operation === \"remove\" ? removeFavorites(playables) : addFavorites(playables);\n }\n });\n}\nexport function isFavoriteContentType(type: LocationContentType): type is FavoriteModelType {\n switch (type) {\n case ContentType.Album:\n case ContentType.TrackPlayable:\n case ContentType.Artist:\n case ContentType.Playlist:\n return true;\n }\n return false;\n}\n\nexport function isFavorite(resource: ResourceModel): resource is FavoriteModel {\n return isFavoriteContentType(resource.contentType);\n}\n\nexport function useFavoriteStatus(playable: FavoriteModel | null) {\n const [result, setResult] = useState<boolean | null>(null);\n const userState = useSelector((root: RootModel) => root.user.state);\n useEffect(() => {\n if (userState === LoginState.LoggedIn) {\n const type = getFavoriteType(playable);\n if (playable?.id && type != null) {\n const id = playable.id;\n getIsMeFavoriteWithCustomCache(type, id).then((result) => {\n setResult(result);\n });\n }\n }\n }, [playable, userState]);\n\n useMessageBus(FAVORITES_UPDATED, (message) => {\n if (playable) {\n // FAVORITES TODO: reimplent this\n\n const type = getFavoriteType(playable);\n let ids: string[] = [];\n let operation: \"add\" | \"remove\" | null = null;\n const payload = message.payload;\n switch (type) {\n case FavoriteContentType.Album:\n ids = payload.changes.playables.filter((n) => n.contentType == ContentType.Album).map((n) => n.id);\n operation = payload.changes.operation;\n break;\n case FavoriteContentType.Artist:\n ids = payload.changes.playables.filter((n) => n.contentType == ContentType.Artist).map((n) => n.id);\n operation = payload.changes.operation;\n break;\n case FavoriteContentType.Playlist:\n ids = payload.changes.playables.filter((n) => n.contentType == ContentType.Playlist).map((n) => n.id);\n operation = payload.changes.operation;\n break;\n case FavoriteContentType.Track:\n ids = payload.changes.playables.filter((n) => n.contentType == ContentType.TrackPlayable).map((n) => n.id);\n operation = payload.changes.operation;\n break;\n }\n const id = playable.id;\n if (operation === \"add\" && ids?.includes(id)) {\n setResult(true);\n }\n if (operation === \"remove\" && ids?.includes(id)) {\n setResult(false);\n }\n }\n });\n\n return userState === LoginState.LoggedIn ? result : null;\n}\n\nasync function addFavorites(playables: PlayQueuePlayableModel[] | TrackPreviewModel[]): Promise<boolean> {\n // todo: instead get graphql support for adding multiples in a single call\n const addedPlayables: PlayQueuePlayableModel[] = [];\n let notAddedCount = 0;\n let limitExceeded = false;\n let playable: PlayQueuePlayableModel | TrackPreviewModel | undefined;\n for (let i = 0; i < playables.length && !limitExceeded; i++) {\n playable = playables[i];\n let ok: boolean;\n switch (playable.contentType) {\n case ContentType.Track:\n case ContentType.TrackPlayable:\n ({ ok, limitExceeded } = await mutateAddTrackToFavorites({ id: playable.id }));\n break;\n case ContentType.Album:\n ({ ok, limitExceeded } = await mutateAddAlbumToFavorites({ id: playable.id }));\n break;\n case ContentType.Artist:\n ({ ok, limitExceeded } = await mutateAddArtistToFavorites({ id: playable.id }));\n break;\n case ContentType.Playlist:\n ({ ok, limitExceeded } = await mutateAddPlaylistToFavorites({ id: playable.id }));\n break;\n default:\n continue;\n }\n if (ok && !limitExceeded) {\n addedPlayables.push(playable as unknown as PlayQueuePlayableModel); // todo\n } else {\n notAddedCount++;\n }\n }\n if (limitExceeded && playable) {\n openToast(AddMusicToMyMusicLimitExceededToast(playable.contentType));\n }\n else if (notAddedCount && !addedPlayables.length) {\n // todo: also different new toast if some were added and some werent?\n openToast(AddMusicToMyMusicFailToast());\n } else if (addedPlayables.length) {\n clearTemporaryFavoriteCache();\n openToast(AddMusicToMyMusicSuccessToast());\n dispatch({\n type: FAVORITES_UPDATED,\n payload: {\n changes: {\n playables: addedPlayables,\n operation: \"add\"\n }\n }\n });\n }\n return true;\n}\n\nasync function removeFavorites(playables: FavoritePreviewModel[] | TrackPreviewModel[]): Promise<boolean> {\n // todo: instead get graphql support for removing multiple in a single call\n const removedPlayables: PlayQueuePlayableModel[] = [];\n let notRemovedCount = 0;\n for (let i = 0; i < playables.length; i++) {\n const playable = playables[i];\n let result: boolean;\n switch (playable.contentType) {\n case ContentType.Track:\n case ContentType.TrackPlayable:\n result = (await mutateRemoveTrackFromFavorites({ id: playable.id })) ?? false;\n break;\n case ContentType.Album:\n result = (await mutateRemoveAlbumFromFavorites({ id: playable.id })) ?? false;\n break;\n case ContentType.Artist:\n result = (await mutateRemoveArtistFromFavorites({ id: playable.id })) ?? false;\n break;\n case ContentType.Playlist:\n result = (await mutateRemovePlaylistFromFavorites({ id: playable.id })) ?? false;\n break;\n default:\n continue;\n }\n if (result) {\n removedPlayables.push(playable as unknown as PlayQueuePlayableModel); // todo\n } else {\n notRemovedCount++;\n }\n }\n if (notRemovedCount && !removedPlayables.length) {\n // todo: also different new toast if some were removed and some werent\n openToast(RemoveMusicFromMyMusicFailToast());\n } else if (removedPlayables.length) {\n clearTemporaryFavoriteCache();\n openToast(RemoveMusicFromMyMusicSuccessToast(() => addFavorites(playables as unknown as PlayQueuePlayableModel[]))); // todo\n dispatch({\n type: FAVORITES_UPDATED,\n payload: {\n changes: {\n playables: removedPlayables,\n operation: \"remove\"\n }\n }\n });\n }\n return true;\n}\n//TODO: remove?\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction getFavoriteIdsOfType(playables: FavoriteModel[], type: FavoriteContentType): string[] | null {\n const filtered = playables\n .filter((p) => getFavoriteType(p) == type)\n .map((n) => {\n return n.id;\n });\n return filtered.length === 0 ? null : filtered;\n}\n\nfunction getFavoriteType(playable: FavoriteModel | null): FavoriteContentType | null {\n if (playable) {\n switch (playable.contentType) {\n case ContentType.Album:\n return FavoriteContentType.Album;\n case ContentType.Artist:\n return FavoriteContentType.Artist;\n case ContentType.Playlist:\n return FavoriteContentType.Playlist;\n case ContentType.LiveRadioTrack:\n case ContentType.TrackPlayable:\n return FavoriteContentType.Track;\n }\n }\n return null;\n}\n","import { messageBus } from \"global\";\nimport { FAVORITES_UPDATED } from \"global/actions\";\nimport { getFavoritesStatistics } from \"services/backend\";\nimport { log } from \"services/logger\";\nimport { ConcurrentEntryGuard } from \"services/utils\";\n\nconst expirationInSeconds = 10 * 60;\nlet cache: FavoritesStatistics | null = null;\nlet isExpired = true;\nlet timer = 0;\nconst entryGuard = new ConcurrentEntryGuard<void>();\n\nexport type FavoritesStatistics = {\n playlistCount: number;\n artistCount: number;\n albumCount: number;\n trackCount: number;\n};\n\nexport async function getFavoritesStatisticsFromCache(): Promise<FavoritesStatistics | null> {\n if (isExpired || !cache) {\n await tryUpdateCache();\n }\n return cache;\n}\n\nasync function tryUpdateCache() {\n await entryGuard.call(async () => {\n clearTimeout(timer);\n const result = await getFavoritesStatistics();\n if (result.success && result.model) {\n cache = {\n playlistCount: result.model.playlists.totalCount ?? 0,\n artistCount: result.model.artists.totalCount ?? 0,\n albumCount: result.model.albums.totalCount ?? 0,\n trackCount: result.model.tracks.totalCount ?? 0\n }\n isExpired = false;\n timer = window.setTimeout(expire, expirationInSeconds * 1000);\n } else {\n log.error({ code: \"web-220626-1810\", msg: \"Couldn't load favorites statistics\" });\n }\n });\n}\n\nexport function initializeCachedFavoritesStatistics() {\n messageBus.subscribeEvery(FAVORITES_UPDATED, expire);\n}\n\nfunction expire() {\n isExpired = true;\n clearTimeout(timer);\n}","export * from \"./favorites\";\nexport * from \"./favoritesCache\";","import type { ResourcePreviewModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\n\nexport function filterItem(item: ResourcePreviewModel, filter: string) {\n if (!filter) return true;\n filter = stripCasing(filter.trim());\n\n switch (item.contentType) {\n case ContentType.TrackPlayable:\n return (\n -1 != stripCasing(item.track.title).indexOf(filter) ||\n -1 != stripCasing(item.track.album.title).indexOf(filter) ||\n -1 != stripCasing(item.track.artist.name).indexOf(filter)\n );\n case ContentType.Album:\n return -1 != stripCasing(item.title).indexOf(filter) || -1 != stripCasing(item.artist?.name).indexOf(filter);\n case ContentType.Artist:\n return -1 != stripCasing(item.name).indexOf(filter);\n case ContentType.Playlist:\n return -1 != stripCasing(item.title).indexOf(filter);\n case ContentType.MixedContent:\n return -1 != stripCasing(item.title).indexOf(filter) || (item.subtitle && -1 != stripCasing(item.subtitle).indexOf(filter));\n default:\n console.log(item.contentType);\n return true;\n }\n}\n\nconst _cache: { [key: string]: string } = {};\n\nfunction stripCasing(text: string | undefined): string {\n if (!text) return \"\";\n let res = _cache[text];\n if (!res) {\n res = _cache[text] = text.toUpperCase();\n }\n return res;\n}\n","export * from \"./filterItem\";\nexport * from \"./useFilter\";\n","import { useMemo, useState, useCallback } from \"preact/hooks\";\nimport { filterItem } from \"./filterItem\";\nimport { search } from \"global/constants\";\nimport { useDebouncedState } from \"services/cancellation/debounce\";\nimport type { ResourcePreviewModel } from \"models/domain\";\nimport type { Pagination } from \"components/shared/hooks/usePagination\";\n\nexport function useFilteredItems(items: ResourcePreviewModel[] | null, filter: string) {\n filter = filter.toLocaleLowerCase().trim();\n return useMemo(() => {\n if (!items || !filter) return items;\n //console.time(`filtering benchmark for ${items.length} items`);\n const filteredItems = items.filter((item) => filterItem(item, filter));\n //console.timeEnd(`filtering benchmark for ${items.length} items`);\n return filteredItems;\n }, [items, filter]);\n}\n\nexport function useFilter<T>(items: ResourcePreviewModel[] | null, pagination?: Pagination<T>) {\n const [filterIsExpanded, setFilterIsExpanded] = useState(false);\n const [hasLoadedOnce, setHasLoadedOnce] = useState(!!items);\n if (items) {\n setHasLoadedOnce(true);\n }\n const [filter, setFilterDebounced, setFilterInstant] = useDebouncedState(\"\", search.filterDebounceMs);\n const setFilter = useCallback((value: string) => (value ? setFilterDebounced(value) : setFilterInstant(\"\")), [setFilterDebounced, setFilterInstant]);\n const filteredItems = useFilteredItems(items, filter);\n\n !!filter && pagination?.more && pagination.more(10000);\n\n return { filteredItems, filter, setFilter, filterIsExpanded, setFilterIsExpanded, hasLoadedOnce };\n}\n","export * from \"./stringFormatters\";\nexport * from \"./timeFormatters\";","import { getLanguageCodeFromState } from \"services/app\";\n\nexport function combineStrings(values: (string | null | undefined)[], seperator?: string): string {\n let str = \"\";\n values.forEach((value) => {\n str = addToStringWithSeperator(str, value, seperator);\n });\n return str;\n}\n\nexport function addToStringWithSeperator(str: string, add: string | null | undefined, seperator?: string): string {\n if (str == null || str == \"\") return add ?? \"\";\n if (add == null || str == \"\") return str;\n\n if (seperator == undefined) return str + add;\n else return str + seperator + add;\n}\n\nexport function toLocaleStringUsingLocalization(value: number): string {\n const locale = getLanguageCodeFromState();\n return value.toLocaleString(locale);\n}\n\nexport function replaceAllBackwardsCompatible(value: string, search: string, replace: string) {\n return value.split(search).join(replace);\n}\n\nexport function capitalizeString(value: string) {\n if (value == null || value.length == 0) return value;\n return value[0].toUpperCase() + value.slice(1);\n}\n","import { addToStringWithSeperator } from \"./stringFormatters\";\nimport { getLangFromState } from \"components/app/hooks\";\nimport { translate } from \"global/config\";\nimport { getLanguageCodeFromState } from \"services/app\";\nimport { Language } from \"models/view/Localization\";\n\nexport const getShortTimeSpanFromSecondsHHMMSS = (time: number): string => {\n const hours = Math.floor(time / 3600);\n time %= 3600;\n const minutes = Math.floor(time / 60);\n time %= 60;\n const seconds = Math.floor(time);\n\n let str = \"\";\n if (hours > 0) str = addToStringWithSeperator(str, hours.toString().padStart(2, \"0\"), \":\");\n str = addToStringWithSeperator(str, minutes.toString().padStart(2, \"0\"), \":\");\n str = addToStringWithSeperator(str, seconds.toString().padStart(2, \"0\"), \":\");\n return str;\n};\n\nexport const getLongTimeSpanFromSecondsHHMM = (time: number): string => {\n const hours = Math.floor(time / 3600);\n time %= 3600;\n const minutes = Math.floor(time / 60);\n\n const hourUnit = (value: number) => translate(value === 1 ? \"GlobalHourUnit\" : \"GlobalHoursUnit\");\n const minuteUnit = (value: number) => translate(value === 1 ? \"GlobalMinuteUnit\" : \"GlobalMinutesUnit\");\n\n let str = \"\";\n if (hours > 0) str = addToStringWithSeperator(str, `${hours} ${hourUnit(hours)}`, \" \");\n if (hours == 0 || minutes > 0) str = addToStringWithSeperator(str, `${minutes} ${minuteUnit(hours)}`, \" \");\n return str;\n};\n\nexport const getShortDateDDMMYYYY = (date: Date): string => {\n const yearStr = date.getFullYear().toString().padStart(4, \"0\");\n const monthStr = (date.getMonth() + 1).toString().padStart(1, \"0\");\n const dateStr = date.getDate().toString().padStart(1, \"0\");\n\n return `${dateStr}.${monthStr}.${yearStr}`;\n};\n\nconst monthNamesDa = [\"jan.\", \"feb.\", \"mar.\", \"apr.\", \"maj\", \"jun.\", \"jul.\", \"aug.\", \"sep.\", \"okt.\", \"nov.\", \"dec.\"];\nconst monthNamesEn = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\nexport const getAppDateDDMMMM = (date: Date): string => {\n switch (getLangFromState()) {\n case Language.Danish: return `${date.getDate()}. ${monthNamesDa[date.getMonth()]}`;\n case Language.English: return `${date.getDate()}. ${monthNamesEn[date.getMonth()]}`;\n }\n};\n\nexport const getYearYYYY = (date: Date) => {\n const yearStr = date.getFullYear().toString().padStart(4, \"0\");\n return yearStr;\n};\n\nexport const getShortTimeSpanFromSecondsTIMEAGO = (time: number): string => {\n const local = getLanguageCodeFromState();\n const long = new Intl.RelativeTimeFormat(local, { style: \"short\" });\n\n const relativeTime = time - new Date().getTime();\n const neg = relativeTime < 0;\n\n const seconds = Math.floor(Math.abs(relativeTime) / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const months = Math.floor(days / 30);\n const years = Math.floor(months / 12);\n\n let val: number;\n let unit: Intl.RelativeTimeFormatUnit;\n\n if (years >= 1) {\n val = years;\n unit = \"years\";\n } else if (months >= 1) {\n val = months;\n unit = \"months\";\n } else if (days >= 1) {\n val = days;\n unit = \"days\";\n } else if (hours >= 1) {\n val = hours;\n unit = \"hours\";\n } else if (minutes >= 1) {\n val = minutes;\n unit = \"minutes\";\n } else {\n val = seconds;\n unit = \"seconds\";\n }\n\n if (neg) val *= -1;\n\n return long.format(val, unit);\n};\n\nexport const getNotificationsDateOrTimeAgo = (time: number): string => {\n const now = new Date();\n const cphTimezoneAndSummertimeFudgeFactor = (1000 * 60 * 60 * 3);\n const today = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate())).getTime() - cphTimezoneAndSummertimeFudgeFactor;\n\n if (time >= today) return translate(\"NotificationFeedTodayTitle\");\n const yesterday = today - (1000 * 60 * 60 * 24);\n if (time >= yesterday) return translate(\"NotificationFeedYesterdayTitle\");\n const date = new Date(time);\n //return getShortDateDDMMYYYY(date);\n return getAppDateDDMMMM(date);\n}","import { getAppVersionString } from \"shared/services/appSettings\";\nimport { getBrowserName, getInstallationId, getOSName, OperatingSystemName } from \"services/app/appService\";\nimport { mutateProvideFeedback } from \"services/backend\";\nimport { environment } from \"services/environment\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { isAppRunAsPWA } from \"services/pwa/initPWAService\";\nimport type { FeedbackApplicationInfoInput, FeedbackDeviceInfoInput } from \"generated/graphql-types\";\nimport { FeedbackOperatingSystem } from \"generated/graphql-types\";\nimport { FeedbackCategory as BackendCategory } from \"models/domain\";\n\nexport enum FeedbackCategory {\n Default = \"Default\",\n Function = \"Function\",\n Stability = \"Stability\",\n Content = \"Content\",\n Other = \"Other\"\n}\n\nexport async function submitInAppFeedback(category: FeedbackCategory, message: string, email: string | null): Promise<boolean> {\n const result = await mutateProvideFeedback({\n feedback: { category: getBackendCategory(category), text: message, deviceInfo: getDeviceInfo(), applicationInfo: getApplicationInfo(), email: email ?? undefined }\n });\n return result ?? false;\n}\n\nfunction getBackendCategory(category: FeedbackCategory): BackendCategory {\n switch (category) {\n case FeedbackCategory.Content:\n return BackendCategory.Contents;\n case FeedbackCategory.Function:\n return BackendCategory.Function;\n case FeedbackCategory.Other:\n return BackendCategory.OtherThings;\n case FeedbackCategory.Stability:\n return BackendCategory.Stability;\n case FeedbackCategory.Default:\n log.error({ code: \"web-210729-1552\", msg: DefaultLogMessage.UnexpectedValue });\n return BackendCategory.OtherThings;\n }\n}\n\nfunction getApplicationInfo(): FeedbackApplicationInfoInput {\n return { brand: environment.webAppBrand, supportKey: getInstallationId(), version: getAppVersionString() };\n}\n\nfunction getDeviceInfo(): FeedbackDeviceInfoInput {\n return { brand: getFeedbackBrand(), model: window.navigator.userAgent, operatingSystem: getFeedbackOS() };\n}\n\nfunction getFeedbackBrand(): string {\n const browser = getBrowserName();\n const isPWA = isAppRunAsPWA();\n\n let brand = browser.toString();\n if (isPWA) brand += \" (PWA)\";\n\n return brand;\n}\n\nfunction getFeedbackOS(): FeedbackOperatingSystem {\n const os = getOSName();\n switch (os) {\n case OperatingSystemName.Android:\n return FeedbackOperatingSystem.Android;\n case OperatingSystemName.Linux:\n return FeedbackOperatingSystem.Linux;\n case OperatingSystemName.Unknown:\n return FeedbackOperatingSystem.Unknown;\n case OperatingSystemName.Windows:\n return FeedbackOperatingSystem.Windows;\n case OperatingSystemName.iOS:\n case OperatingSystemName.iPadOS:\n case OperatingSystemName.iPodOS:\n return FeedbackOperatingSystem.Apple;\n case OperatingSystemName.macOS:\n return FeedbackOperatingSystem.MacOs;\n }\n}\n","export * from \"./inAppFeedbackService\";\n","export * from \"./init\";\n","import { getLang } from \"components/app/hooks\";\nimport { dispatch, messageBus } from \"global\";\nimport { SET_BROWSER_LANGUAGE, SET_LOCALIZATION_SETTING } from \"global/actions\";\nimport { getISOLanguageCode } from \"services/app\";\nimport type { LanguageSetting } from \"models/view/Localization\";\nimport { Language } from \"models/view/Localization\";\n\nexport function initLanguageService() {\n const browserLanguageChange = () => {\n const lang = getBrowserLang();\n dispatch({ type: SET_BROWSER_LANGUAGE, payload: { localization: lang } });\n };\n browserLanguageChange();\n window.addEventListener(\"languagechange\", browserLanguageChange);\n\n messageBus.subscribeEvery(SET_LOCALIZATION_SETTING, (msg) => {\n browserLanguageChange();\n updateHtmlLang(msg.payload.localizationSetting);\n });\n}\n\nfunction getBrowserLang(): Language {\n const browserLanguages = navigator.languages.map((item) => item.toLowerCase());\n\n if (browserLanguages.find((lang) => lang === \"da\" || lang === \"da-dk\")) return Language.Danish;\n return Language.English;\n}\nconst updateHtmlLang = (setting: LanguageSetting) => {\n const local = getLang(setting);\n const isoLangCode = getISOLanguageCode(local);\n document.documentElement.lang = isoLangCode;\n};\n","import { DefaultLogMessage, log } from \".\";\nimport { getChangeSettingEndlessPlayData, getChangeSettingLanguageSettingData, getChangeSettingThemeSettingData } from \"./analytics/changeSetting\";\nimport {\n getAnalyticsLogInEvent,\n getAnalyticsLogOutEvent,\n getAnalyticsPlayedContentEvent,\n getAnalyticsMyMusicChangedEvent,\n getAnalyticsPlaylistCreatedEvent,\n getAnalyticsPlaylistDeletedEvent,\n getAnalyticsFeedNotificationsSeenEvent,\n getAnalyticsPlayedContentErrorEvent,\n getAnalyticsSearchContentEvent,\n getAnalyticsSingleNotificationConvertedEvent,\n getAnalyticsSingleNotificationSeenEvent,\n getAnalyticsViewPageEvent,\n getAddToPlaylistEvent,\n getAnalyticsSentryCutoffEvent\n} from \"./analytics/events\";\nimport { getAnalyticsLyricsDisplayedEvent } from \"./analytics/events/lyricsDisplayed\";\nimport { initPlayerActionAnalyticsService } from \"./analytics/playerAction/playerActionService\";\nimport { initQueueActionAnalyticsService } from \"./analytics/queueAction/queueActionService\";\nimport { dispatch, messageBus, store } from \"global\";\nimport { RouterRedirectingAction, SENTRY_CUTOFF_SHOWN } from \"global/actions\";\nimport {\n ANALYTICS_PLAYED_ERROR_EVENT,\n ANALYTICS_PLAYED_EVENT,\n FAVORITES_UPDATED,\n LOGGING_EVENT_ANALYTICS,\n LOGGING_EVENT_PLAYBACK_REPORT_FINISHED,\n NAVIGATION_NAVIGATED,\n NOTIFICATION_FEED_NOTIFICATIONS_SEEN,\n NOTIFICATION_FEED_NOTIFICATION_CONVERTED,\n PLAYLIST_CREATED,\n PLAYLIST_DELETED,\n PLAYQUEUE_ENDLESSPLAY_TOGGLE,\n SET_LOCALIZATION_SETTING,\n SET_THEME_SETTING,\n ROUTER_REDIRECTING,\n USER_CLICK_SEARCH_RESULT,\n USER_LOGGED_IN,\n USER_LOGGING_OUT,\n PLAYLIST_COLLECTION_ADDED,\n PLAYLIST_TRACKS_ADDED,\n PLAYLIST_TRACK_ADDED,\n PLAYLIST_CANCELLED_ADDING_DUPLICATE_ITEMS,\n DISPLAYED_LYRICS,\n PROFILE_CREATED,\n PROFILE_UPDATED,\n PROFILE_DELETED\n} from \"global/actions\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { onPageContextReady } from \"services/navigationStack/navigationStack\";\nimport { getNotificationFeedFromState } from \"services/notificationFeed\";\nimport { LoginState } from \"models/app\";\nimport type { PlayQueuePlayableModel } from \"models/domain\";\nimport { getCreateProfileEvent, getDeleteProfileEvent, getEditProfileEvent } from \"./analytics/events/profileActions\";\n\nexport const initAnalyticsService = () => {\n initPlayerActionAnalyticsService();\n initQueueActionAnalyticsService();\n let redirect: RouterRedirectingAction[\"payload\"] | null = null;\n\n messageBus.subscribeEvery(NOTIFICATION_FEED_NOTIFICATIONS_SEEN, async (msg) => {\n const { seen, current } = msg.payload;\n\n const feed = getNotificationFeedFromState();\n if (!feed.notificationState) return;\n\n const data = await getAnalyticsFeedNotificationsSeenEvent(current, seen);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"NotificationsSeen\", data } });\n\n seen.forEach((n) =>\n (async () => {\n const data = await getAnalyticsSingleNotificationSeenEvent(current, n);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"SingleNotificationSeen\", data } });\n })()\n );\n });\n\n messageBus.subscribeEvery(NOTIFICATION_FEED_NOTIFICATION_CONVERTED, async (msg) => {\n const { converted, conversion } = msg.payload;\n\n const feed = getNotificationFeedFromState();\n if (!feed) return;\n\n const data = await getAnalyticsSingleNotificationConvertedEvent(converted, conversion);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"SingleNotificationConverted\", data } });\n });\n\n messageBus.subscribeEvery(ANALYTICS_PLAYED_EVENT, async (msg) => {\n const { queueData, loadData, stopData, playableData } = msg.payload;\n\n const data = await getAnalyticsPlayedContentEvent(playableData, queueData, loadData, stopData);\n if (!data) {\n log.error({ code: \"web-220209-1546\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"PlayedContent\", data } });\n });\n\n messageBus.subscribeEvery(ANALYTICS_PLAYED_ERROR_EVENT, async (msg) => {\n const { queueData, loadData, errorData, playableData } = msg.payload;\n\n const data = await getAnalyticsPlayedContentErrorEvent(playableData, queueData, loadData, errorData);\n if (!data) {\n log.error({ code: \"web-220209-1546\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"PlayedContentError\", data } });\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_ENDLESSPLAY_TOGGLE, async () => {\n const data = await getChangeSettingEndlessPlayData();\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"ChangeSetting\", data } });\n });\n\n messageBus.subscribeEvery(SET_THEME_SETTING, async (msg) => {\n const data = await getChangeSettingThemeSettingData(msg);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"ChangeSetting\", data } });\n });\n\n messageBus.subscribeEvery(SET_LOCALIZATION_SETTING, async (msg) => {\n const data = await getChangeSettingLanguageSettingData(msg);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"ChangeSetting\", data } });\n });\n\n messageBus.subscribeEvery(PLAYLIST_CREATED, async (msg) => {\n const { playlist, playlistId } = msg.payload;\n const data = await getAnalyticsPlaylistCreatedEvent(playlistId, playlist);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"CreatePlaylist\", data } });\n });\n\n messageBus.subscribeEvery(PLAYLIST_DELETED, async (msg) => {\n const { playlistId } = msg.payload;\n const data = await getAnalyticsPlaylistDeletedEvent(playlistId);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"DeletePlaylist\", data } });\n });\n\n messageBus.subscribeEvery(PLAYLIST_COLLECTION_ADDED, async (msg) => {\n const { playlist, playlistId, playable, trackCount, duplicateTracksAdded } = msg.payload;\n const data = await getAddToPlaylistEvent(playlistId, playlist, playable, trackCount, duplicateTracksAdded);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"AddToPlaylist\", data } });\n });\n\n messageBus.subscribeEvery(PLAYLIST_TRACKS_ADDED, async (msg) => {\n const { playlist, playlistId, tracks, duplicateTracksAdded } = msg.payload;\n const data = await getAddToPlaylistEvent(playlistId, playlist, null, tracks?.length ?? 0, duplicateTracksAdded);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"AddToPlaylist\", data } });\n });\n\n messageBus.subscribeEvery(PLAYLIST_TRACK_ADDED, async (msg) => {\n const { playlist, playlistId, track, duplicateTracksAdded } = msg.payload;\n const data = await getAddToPlaylistEvent(playlistId, playlist, track ?? null, 1, duplicateTracksAdded);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"AddToPlaylist\", data } });\n });\n\n messageBus.subscribeEvery(PLAYLIST_CANCELLED_ADDING_DUPLICATE_ITEMS, async (msg) => {\n const { playlist, playlistId, trackCount, playable } = msg.payload;\n const data = await getAddToPlaylistEvent(playlistId, playlist, playable, trackCount, \"cancel\");\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"AddToPlaylist\", data } });\n });\n\n messageBus.subscribeEvery(PROFILE_CREATED, async (msg) => {\n let data = await getCreateProfileEvent(msg.payload.profile, msg.payload.entrypoint);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"CreateProfile\", data } });\n });\n\n messageBus.subscribeEvery(PROFILE_UPDATED, async (msg) => {\n let data = await getEditProfileEvent(msg.payload.profile, msg.payload.oldProfile);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"EditProfile\", data } });\n });\n\n messageBus.subscribeEvery(PROFILE_DELETED, async (msg) => {\n let data = await getDeleteProfileEvent(msg.payload.profile);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"DeleteProfile\", data } });\n });\n\n messageBus.subscribeEvery(FAVORITES_UPDATED, (msg) => {\n const { operation, playables } = msg.payload.changes;\n\n const key: AnalyticsKey = operation === \"add\" ? \"AddToMyMusic\" : \"RemoveFromMyMusic\";\n playables.forEach(async (playable) => {\n const data = await getAnalyticsMyMusicChangedEvent(msg.payload.changes.operation, playable as PlayQueuePlayableModel);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: key, data } });\n });\n });\n\n messageBus.subscribeEvery(USER_LOGGED_IN, (msg) => {\n if (!msg.payload.isNewUser) return;\n onPageContextReady(async () => {\n const data = await getAnalyticsLogInEvent();\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"LogIn\", data } });\n });\n });\n\n messageBus.subscribeEvery(SENTRY_CUTOFF_SHOWN, async (msg) => {\n const data = await getAnalyticsSentryCutoffEvent(msg.payload.action);\n dispatch({\n type: LOGGING_EVENT_ANALYTICS,\n payload: {\n name: \"SentryCutOffNotificationClicked\",\n data\n }\n });\n });\n\n messageBus.subscribeEvery(USER_LOGGING_OUT, async (msg) => {\n const data = await getAnalyticsLogOutEvent(msg);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"LogOut\", data } });\n });\n\n messageBus.subscribeEvery(LOGGING_EVENT_PLAYBACK_REPORT_FINISHED, (msg) => {\n const analytics = msg.payload.report.analytics2;\n if (!analytics) {\n // TODO re-enable this log later\n // log.error({code: \"web-210929-2106\", msg: DefaultLogMessage.UnexpectedNull});\n return;\n }\n dispatch({ type: ANALYTICS_PLAYED_EVENT, payload: { ...analytics } });\n });\n\n const onNavigation = () => {\n onPageContextReady(async (payload) => {\n const redirectFrom = redirect?.to === window.location.pathname ? redirect.from : null;\n redirect = null;\n const data = await getAnalyticsViewPageEvent(payload.error ?? null, redirectFrom);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"ViewPage\", data } });\n });\n };\n onNavigation();\n\n messageBus.subscribeEvery(NAVIGATION_NAVIGATED, () => {\n onNavigation();\n });\n\n messageBus.subscribeEvery(ROUTER_REDIRECTING, (msg) => {\n redirect = msg.payload;\n });\n\n messageBus.subscribeEvery(USER_CLICK_SEARCH_RESULT, async (msg) => {\n const { criterion, source, preview } = msg.payload;\n const data = await getAnalyticsSearchContentEvent(criterion, source, preview);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"SearchContent\", data } });\n });\n\n messageBus.subscribeEvery(DISPLAYED_LYRICS, async (msg) => {\n const { playable, lyricsId, startingPoint, sync } = msg.payload;\n if (!playable) return;\n const reducedStartingPoint = startingPoint === \"DesktopPlayer\" ? \"MaxiPlayer\" : startingPoint;\n const data = await getAnalyticsLyricsDisplayedEvent(playable, lyricsId, reducedStartingPoint, sync);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"LyricsDisplayed\", data } });\n });\n};\n\nexport function allowUserAnalytics(): boolean {\n const state = store.getState().user.state;\n\n switch (state) {\n case LoginState.Unknown:\n log.error({ code: \"web-210914-1633\", msg: \"unknown user state while trying to log\" });\n return false;\n case LoginState.LoggedOut:\n return false;\n case LoginState.LoggingOut:\n case LoginState.LoggedIn:\n case LoginState.TemporaryError:\n return true;\n }\n}\n","import { log } from \"../initLoggerService\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { analyticsKeys } from \"global/config\";\nimport { flattenArrayOfPromisesOrData } from \"services/utils\";\n\nexport type AnalyticsProp = AnalyticsPropSet | AnalyticsPropIncrement | AnalyticsPropFirst;\n\ntype Target = \"event\" | \"user\" | \"app\";\n\ninterface AnalyticsPropSet {\n target: Target;\n mode: \"set\";\n data: AnalyticsKey | number | boolean | Date | string[];\n}\n\ninterface AnalyticsPropIncrement {\n target: Target;\n mode: \"increment\";\n data: number | undefined;\n}\n\ninterface AnalyticsPropFirst {\n target: Target;\n mode: \"first\";\n data: AnalyticsKey | number | boolean | Date;\n}\nexport interface AnalyticsData {\n data: [string, AnalyticsProp][];\n}\n\nexport function createAnalyticsData(): AnalyticsData {\n return { data: [] };\n}\n\nexport async function combineAnalyticsData(...maps: (AnalyticsData | null | Promise<AnalyticsData | null>)[]): Promise<AnalyticsData> {\n const data = (await flattenArrayOfPromisesOrData(maps))\n .filter((map): map is AnalyticsData => !!map)\n .map((map) => [...map.data])\n .flat();\n const map: AnalyticsData = { data };\n return map;\n}\n\nexport function SetAnalyticsProp(map: AnalyticsData, target: Target, key: AnalyticsKey, data: AnalyticsPropSet[\"data\"] | null | undefined, allowNull?: true) {\n if (data === null || data === undefined) {\n if (!allowNull) log.warn({ code: \"web-220927-1105\", msg: `analytics key missing: ${key}` });\n return;\n }\n\n if (typeof data == \"number\") data = Math.floor(data);\n\n // eslint-disable-next-line no-prototype-builtins\n if (typeof data == \"string\" && (analyticsKeys as NonNullable<unknown>).hasOwnProperty(data)) data = analyticsKeys[data] as AnalyticsKey;\n\n const newKey = analyticsKeys[key];\n map.data.push([newKey, { target, mode: \"set\", data }]);\n}\n\nexport function IncrementAnalyticsProp(map: AnalyticsData, target: \"user\", key: AnalyticsKey) {\n const newKey = analyticsKeys[key];\n map.data.push([newKey, { target, mode: \"increment\", data: 1 }]);\n}\n\nexport function SetFirstAnalyticsProp(map: AnalyticsData, target: \"app\" | \"user\", key: AnalyticsKey, data: AnalyticsPropFirst[\"data\"]) {\n const newKey = analyticsKeys[key];\n map.data.push([newKey, { target, mode: \"first\", data }]);\n}\n","import { getAnalyticsSettingChangedEvent } from \"../events\";\nimport { getAnalyticsChangeSettingProperties } from \"../properties/event\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { getIsEndlessPlayOnFromState } from \"components/shared/hooks\";\n\nexport async function getChangeSettingEndlessPlayData() {\n const value: AnalyticsKey = getIsEndlessPlayOnFromState() ? \"On\" : \"Off\";\n const endlessPlayData = getAnalyticsChangeSettingProperties(\"EndlessPlay\", value);\n const data = await getAnalyticsSettingChangedEvent(endlessPlayData);\n return data;\n}\n","import { getAnalyticsSettingChangedEvent } from \"../events\";\nimport { getAnalyticsChangeSettingProperties } from \"../properties/event\";\nimport type { SetLocalizationSettingAction } from \"global/actions\";\n\nexport async function getChangeSettingLanguageSettingData(msg: SetLocalizationSettingAction) {\n const languageSettingData = getAnalyticsChangeSettingProperties(\"LanguageSetting\", msg.payload.localizationSetting);\n const data = await getAnalyticsSettingChangedEvent(languageSettingData);\n return data;\n}\n","import { getAnalyticsSettingChangedEvent } from \"../events\";\nimport { convertThemeSetting } from \"../properties/app/convertThemeSetting\";\nimport { getAnalyticsChangeSettingProperties } from \"../properties/event\";\nimport type { SetThemeSettingAction } from \"global/actions\";\nimport type { AnalyticsKey } from \"global/config\";\n\nexport async function getChangeSettingThemeSettingData(msg: SetThemeSettingAction) {\n const { theme, shortcut } = msg.payload;\n const value: AnalyticsKey = convertThemeSetting(theme);\n const themeSettingData = getAnalyticsChangeSettingProperties(\"ThemeSetting\", value, shortcut);\n const data = await getAnalyticsSettingChangedEvent(themeSettingData);\n return data;\n}\n","export * from \"./changeSettingEndlessPlayData\";\nexport * from \"./changeSettingLanguageSettingData\";\nexport * from \"./changeSettingThemeSettingData\";\n","export * from \"./logInOutContent\";\nexport * from \"./myMusicContent\";\nexport * from \"./notifications\";\nexport * from \"./playedContent\";\nexport * from \"./playedContentError\";\nexport * from \"./playlistActions\";\nexport * from \"./searchContent\";\nexport * from \"./singleNotification\";\nexport * from \"./settingChangedContent\";\nexport * from \"./viewPage\";\nexport * from \"./sentryCutoffNotification\";\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport { getAnalyticsLoginProperties, getAnalyticsLogoutProperties, getAndConvertAnalyticsNavigationProperties } from \"../properties/event\";\nimport { getAnalyticsUserProperties } from \"../properties/user\";\nimport type { UserLoggingOutAction } from \"global/actions\";\n\nexport async function getAnalyticsLogInEvent(): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAndConvertAnalyticsNavigationProperties(),\n getAnalyticsUserProperties(),\n getAnalyticsLoginProperties()\n );\n return data;\n}\n\nexport async function getAnalyticsLogOutEvent(action: UserLoggingOutAction): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAndConvertAnalyticsNavigationProperties(),\n getAnalyticsUserProperties(),\n getAnalyticsLogoutProperties(action)\n );\n return data;\n}\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport { convertPlayableProperties, getAnalyticsPlayableProperties } from \"../properties/event\";\nimport { getAndConvertAnalyticsLyricsProperties } from \"../properties/event/lyricsProperties\";\nimport { getAnalyticsUserProperties } from \"../properties/user\";\nimport type { SynchronizationType } from \"generated/graphql-types\";\nimport type { PlayableModel } from \"models/domain\";\n\nexport async function getAnalyticsLyricsDisplayedEvent(\n playableData: PlayableModel,\n lyricsId: string,\n startingPoint: \"ContextMenu\" | \"MaxiPlayer\",\n sync: SynchronizationType\n): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertPlayableProperties(getAnalyticsPlayableProperties(playableData)),\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n getAndConvertAnalyticsLyricsProperties(lyricsId, startingPoint, sync)\n );\n return data;\n}\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { SetAnalyticsProp, combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport { getAnalyticsPlayableIdProperties, convertPlayableProperties, getAnalyticsPlayableProperties, getAndConvertAnalyticsNavigationProperties } from \"../properties/event\";\nimport { getAnalyticsMyMusicAddedProperties, getAnalyticsMyMusicRemovedProperties, getAnalyticsUserProperties } from \"../properties/user\";\nimport type { PlaylistPreviewModel, PlayQueuePlayableModel } from \"models/domain\";\n\nexport async function getAnalyticsMyMusicChangedEvent(operation: \"add\" | \"remove\", playable: PlayQueuePlayableModel): Promise<AnalyticsData> {\n const map = await combineAnalyticsData(\n operation === \"add\" ? getAnalyticsMyMusicAddedProperties() : getAnalyticsMyMusicRemovedProperties(),\n convertPlayableProperties(getAnalyticsPlayableProperties(playable)),\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n getAndConvertAnalyticsNavigationProperties()\n );\n\n return map;\n}\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport type { AnalyticsFeedCurrentNotifications } from \"../properties/event\";\nimport { getAnalyticsNotificationsAdded, getAnalyticsNotificationsSeen } from \"../properties/event\";\nimport { getAnalyticsUserProperties, convertNotificationFeedProperties, getAnalyticsNotificationFeedProperties } from \"../properties/user\";\nimport type { NotificationModel } from \"models/domain/NotificationModel\";\n\nexport async function getAnalyticsNotificationsAddedEvent(current: AnalyticsFeedCurrentNotifications, added: NotificationModel[]): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n getAnalyticsNotificationsAdded(added, current),\n convertNotificationFeedProperties(getAnalyticsNotificationFeedProperties()),\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties()\n );\n return data;\n}\n\nexport async function getAnalyticsFeedNotificationsSeenEvent(current: AnalyticsFeedCurrentNotifications, seen: NotificationModel[]): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n getAnalyticsNotificationsSeen(seen, current),\n convertNotificationFeedProperties(getAnalyticsNotificationFeedProperties()),\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties()\n );\n return data;\n}\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport type { AnalyticsPlayableLoadProperties, AnalyticsPlayableProperties, AnalyticsPlayableStopProperties } from \"../properties/event\";\nimport {\n convertResourceParentProperties,\n getAnalyticsNavigationProperties,\n convertPlayableLoadProperties,\n convertPlayableProperties,\n convertPlayableStopProperties\n} from \"../properties/event\";\nimport type { AnalyticsQueueAddedPropertiesGroup } from \"../properties/groups/queueAddedPropertiesGroup\";\nimport { getAnalyticsUserProperties, getAnalyticsUserPlayProperties } from \"../properties/user\";\n\nexport async function getAnalyticsPlayedContentEvent(\n playableData: AnalyticsPlayableProperties,\n queueData: AnalyticsQueueAddedPropertiesGroup,\n loadData: AnalyticsPlayableLoadProperties,\n stopData: AnalyticsPlayableStopProperties\n): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertPlayableProperties(playableData),\n convertPlayableLoadProperties(loadData),\n convertPlayableStopProperties(stopData),\n convertResourceParentProperties(queueData.resourceParentProperties),\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsNavigationProperties(queueData.pageProperties, queueData.rootPageProperties, queueData.rootSectionProperties),\n getAnalyticsUserProperties(),\n getAnalyticsUserPlayProperties()\n );\n return data;\n}\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport type { AnalyticsPlayableErrorProperties, AnalyticsPlayableLoadProperties, AnalyticsPlayableProperties } from \"../properties/event\";\nimport {\n convertResourceParentProperties,\n getAnalyticsNavigationProperties,\n convertPlayableErrorProperties,\n convertPlayableLoadProperties,\n convertPlayableProperties\n} from \"../properties/event\";\nimport type { AnalyticsQueueAddedPropertiesGroup } from \"../properties/groups/queueAddedPropertiesGroup\";\nimport { getAnalyticsUserProperties } from \"../properties/user\";\nimport { getAnalyticsUserPlayErrorProperties } from \"../properties/user/userPlayErrorProperties\";\n\nexport async function getAnalyticsPlayedContentErrorEvent(\n playableData: AnalyticsPlayableProperties,\n queueData: AnalyticsQueueAddedPropertiesGroup,\n loadData: AnalyticsPlayableLoadProperties,\n stopData: AnalyticsPlayableErrorProperties\n): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertPlayableProperties(playableData),\n convertPlayableLoadProperties(loadData),\n convertPlayableErrorProperties(stopData),\n convertResourceParentProperties(queueData.resourceParentProperties),\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsNavigationProperties(queueData.pageProperties, queueData.rootPageProperties, queueData.rootSectionProperties),\n getAnalyticsUserProperties(),\n getAnalyticsUserPlayErrorProperties()\n );\n return data;\n}\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { SetAnalyticsProp, combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport { getAnalyticsPlayableIdProperties, convertPlayableProperties, getAnalyticsPlayableProperties, getAndConvertAnalyticsNavigationProperties } from \"../properties/event\";\nimport { getAnalyticsMyMusicAddedProperties, getAnalyticsUserProperties } from \"../properties/user\";\nimport { getAnalyticsAddToPlaylistProperties } from \"../properties/user/addToPlaylistProperties\";\nimport type { PlayableModel, PlaylistPreviewModel, TrackPreviewModel } from \"models/domain\";\n\nexport async function getAddToPlaylistEvent(\n playlistId: string,\n playlist: PlaylistPreviewModel | null,\n playable: PlayableModel | TrackPreviewModel | null,\n trackCount: number,\n duplicateTracksAdded: null | \"all\" | \"unique\" | \"cancel\"\n): Promise<AnalyticsData> {\n const playlistData = playlist ? convertPlayableProperties(getAnalyticsPlayableProperties(playlist)) : getAnalyticsPlayableIdProperties(playlistId, \"Playlist\");\n\n const map = await combineAnalyticsData(\n playlistData,\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n getAndConvertAnalyticsNavigationProperties(),\n getAnalyticsAddToPlaylistProperties(duplicateTracksAdded)\n );\n return map;\n}\n\nexport async function getAnalyticsPlaylistCreatedEvent(playlistId: string, playlist?: PlaylistPreviewModel): Promise<AnalyticsData> {\n const playlistData = playlist ? convertPlayableProperties(getAnalyticsPlayableProperties(playlist)) : getAnalyticsPlayableIdProperties(playlistId, \"Playlist\");\n SetAnalyticsProp(playlistData, \"event\", \"NewPlaylist\", true);\n\n const map = await combineAnalyticsData(\n getAnalyticsMyMusicAddedProperties(),\n playlistData,\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n getAndConvertAnalyticsNavigationProperties()\n );\n\n return map;\n}\n\nexport async function getAnalyticsPlaylistDeletedEvent(playlistId: string): Promise<AnalyticsData> {\n const map = await combineAnalyticsData(\n getAnalyticsMyMusicAddedProperties(),\n getAnalyticsPlayableIdProperties(playlistId, \"Playlist\"),\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n getAndConvertAnalyticsNavigationProperties()\n );\n\n return map;\n}\n","import { UserProfileModel } from \"models/app\";\nimport type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport { getAnalyticsUserProperties } from \"../properties/user\";\nimport { getCreateProfileActionProperties, getDeleteProfileActionProperties, getEditProfileActionProperties } from \"../properties/user/userProfileProperties\";\nimport type { AnalyticsKey } from \"global/config\";\n\nexport async function getCreateProfileEvent(profile: UserProfileModel, entrypoint: AnalyticsKey): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n getCreateProfileActionProperties(profile, entrypoint)\n );\n return data;\n}\n\nexport async function getEditProfileEvent(profile: UserProfileModel, oldProfile: UserProfileModel): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n getEditProfileActionProperties(profile, oldProfile)\n );\n return data;\n}\n\nexport async function getDeleteProfileEvent(profile: UserProfileModel): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n getDeleteProfileActionProperties(profile)\n );\n return data;\n}\n\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport type { QueueActionType } from \"../properties/event/queueActionProperties\";\nimport { getAnalyticsQueueActionProperties } from \"../properties/event/queueActionProperties\";\nimport { getAnalyticsUserProperties } from \"../properties/user\";\n\nexport async function getAnalyticsQueueActionEvent(actionType: QueueActionType, IsViewingQueue: boolean): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n getAnalyticsQueueActionProperties(actionType, IsViewingQueue)\n );\n return data;\n}\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport { convertPlayableProperties, getAnalyticsPlayableProperties } from \"../properties/event\";\nimport { convertAnalyticsSearchContentProperties, getAnalyticsSearchContentProperties } from \"../properties/event/searchContentProperties\";\nimport { getAnalyticsUserProperties } from \"../properties/user\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { SearchResultAreaSource } from \"components/molecules/searchResultArea\";\n\nexport async function getAnalyticsSearchContentEvent(criterion: string, source: SearchResultAreaSource, preview: PreviewContextModel): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n convertAnalyticsSearchContentProperties(getAnalyticsSearchContentProperties(criterion, source, preview)),\n convertPlayableProperties(getAnalyticsPlayableProperties(preview.resource as any))\n );\n return data;\n}\n","import type { SentryCutoffAction } from \"global/actions\";\nimport { AnalyticsData, combineAnalyticsData, createAnalyticsData, IncrementAnalyticsProp, SetAnalyticsProp, SetFirstAnalyticsProp } from \"services/logger/analytics/analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"services/logger/analytics\";\nimport { getAnalyticsUserProperties } from \"services/logger/analytics/properties/user\";\n\nexport function getAnalyticsSentryCutoffProperties(action: SentryCutoffAction) {\n const data = createAnalyticsData();\n\n SetFirstAnalyticsProp(data, \"user\", \"SentryCutOffNotificationFirstClicked\", new Date());\n SetAnalyticsProp(data, \"user\", \"SentryCutOffNotificationAction\", action);\n IncrementAnalyticsProp(data, \"user\", \"SentryCutOffNotificationClickCount\");\n\n return { ...data, type: \"SentryCutoffNotificationClicked\" };\n}\n\nexport async function getAnalyticsSentryCutoffEvent(action: SentryCutoffAction): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(convertAnalyticsAppProperties(getAnalyticsAppProperties()), getAnalyticsUserProperties(), getAnalyticsSentryCutoffProperties(action));\n return data;\n}\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { getAndConvertAnalyticsNavigationProperties } from \"../properties/event\";\n\nexport function getAnalyticsSettingChangedEvent(settingData: AnalyticsData) {\n const map = combineAnalyticsData(getAndConvertAnalyticsNavigationProperties(), settingData);\n return map;\n}\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport { getAnalyticsSingleNotificationConverted, getAnalyticsSingleNotificationSeen } from \"../properties/event\";\nimport type { AnalyticsFeedCurrentNotifications } from \"../properties/event\";\nimport { getAnalyticsUserProperties } from \"../properties/user\";\nimport { convertNotificationFeedProperties, getAnalyticsNotificationFeedProperties } from \"../properties/user/userNotificationFeedProperties\";\nimport type { NotificationConversion, NotificationModel } from \"models/domain/NotificationModel\";\n\nexport async function getAnalyticsSingleNotificationSeenEvent(current: AnalyticsFeedCurrentNotifications, seen: NotificationModel): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n getAnalyticsSingleNotificationSeen(seen),\n convertNotificationFeedProperties(getAnalyticsNotificationFeedProperties()),\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties()\n );\n return data;\n}\n\nexport async function getAnalyticsSingleNotificationConvertedEvent(converted: NotificationModel, conversion: NotificationConversion): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n getAnalyticsSingleNotificationConverted(converted, conversion),\n convertNotificationFeedProperties(getAnalyticsNotificationFeedProperties()),\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties()\n );\n return data;\n}\n","import type { AnalyticsData } from \"../analyticsData\";\nimport { combineAnalyticsData } from \"../analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"../properties/app/appProperties\";\nimport { convertPlayableProperties, getAndConvertAnalyticsNavigationProperties } from \"../properties/event\";\nimport { isPagePlayable } from \"../properties/event/isPagePlayable\";\nimport { getAnalyticsPlayablePageProperties } from \"../properties/event/playablePageProperties\";\nimport { convertAnalyticsViewPageProperties, getAnalyticsViewPageProperties } from \"../properties/event/viewPageProperties\";\nimport { getAnalyticsUserProperties } from \"../properties/user\";\nimport { getActivePageContext } from \"services/navigationStack/navigationStack\";\nimport type { PageLoadError } from \"models/app/ViewPageError\";\n\nexport async function getAnalyticsViewPageEvent(error: PageLoadError | null, redirectFrom: string | null): Promise<AnalyticsData> {\n const page = getActivePageContext();\n\n const data = await combineAnalyticsData(\n getAndConvertAnalyticsNavigationProperties(),\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n isPagePlayable(page) ? convertPlayableProperties(getAnalyticsPlayablePageProperties(page)) : null,\n convertAnalyticsViewPageProperties(getAnalyticsViewPageProperties(error, redirectFrom))\n );\n return data;\n}\n","export * from \"./properties/app/appProperties\";\n","import type { AnalyticsData } from \"./analyticsData\";\nimport { combineAnalyticsData } from \"./analyticsData\";\nimport { convertAnalyticsAppProperties, getAnalyticsAppProperties } from \"./properties/app/appProperties\";\nimport type { AnalyticsPlayerActionProperties } from \"./properties/event/playerActionProperties\";\nimport { getAnalyticsPlayerActionProperties } from \"./properties/event/playerActionProperties\";\nimport { getAnalyticsUserProperties } from \"./properties/user\";\n\nexport async function getAnalyticsPlayerActionEvent(props: AnalyticsPlayerActionProperties): Promise<AnalyticsData> {\n const data = await combineAnalyticsData(\n convertAnalyticsAppProperties(getAnalyticsAppProperties()),\n getAnalyticsUserProperties(),\n getAnalyticsPlayerActionProperties(props)\n );\n return data;\n}\n","import { logPlayerActionEvent } from \"./logPlayerActionEvent\";\nimport { store } from \"global\";\n\nexport function logMuteUnmuteEvent() {\n const { muted } = store.getState().player;\n if (muted) {\n logPlayerActionEvent(\"Mute\");\n } else {\n logPlayerActionEvent(\"Unmute\");\n }\n}\n","import { logPlayerActionEvent } from \"./logPlayerActionEvent\";\nimport { PlayState } from \"models/app/player\";\nimport { getAudioPropertiesFromState } from \"components/shared/hooks\";\n\nexport function logPlayPauseToEvent() {\n const { playState } = getAudioPropertiesFromState();\n\n switch (playState) {\n case PlayState.Playing:\n case PlayState.Buffering: {\n logPlayerActionEvent(\"Pause\");\n break;\n }\n case PlayState.Error:\n case PlayState.Stopped:\n case PlayState.Paused: {\n logPlayerActionEvent(\"Play\");\n break;\n }\n }\n}\n","import { getAnalyticsPlayerActionEvent } from \"../playerAction\";\nimport type { PlayerActionType } from \"../properties/event/playerActionProperties\";\nimport { dispatch } from \"global\";\nimport { LOGGING_EVENT_ANALYTICS } from \"global/actions\";\nimport { getDesktopQueueOpen, getSecondsPlayedFromState } from \"components/shared/hooks\";\n\nexport async function logPlayerActionEvent(type: PlayerActionType, queueOpen?: boolean, volumeLevel?: number) {\n if (queueOpen == undefined) queueOpen = getDesktopQueueOpen();\n\n const { secondsPlayed, duration } = getSecondsPlayedFromState();\n\n const data = await getAnalyticsPlayerActionEvent({\n actionType: type,\n actionSource: \"DesktopPlayer\",\n IsViewingQueue: queueOpen,\n trackDuration: duration,\n trackProgress: secondsPlayed,\n volumeLevel\n });\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"PlayerAction\", data } });\n}\n","import { logMuteUnmuteEvent } from \"./logMuteUnmuteEvent\";\nimport { logPlayerActionEvent } from \"./logPlayerActionEvent\";\nimport { logPlayPauseToEvent } from \"./logPlayPauseToEvent\";\nimport { tryLogVolumeSeekEvent } from \"./tryLogVolumeSeekEvent\";\nimport { messageBus } from \"global\";\nimport { PLAYER_TOGGLE_PLAY, PLAYER_SET_MUTE, PLAYER_SEEK, PLAYER_SET_VOLUME, PLAYER_TOGGLE_VOLUME_EXPAND } from \"global/actions\";\n\nexport const initPlayerActionAnalyticsService = () => {\n messageBus.subscribeEvery(PLAYER_TOGGLE_PLAY, () => {\n logPlayPauseToEvent();\n });\n\n messageBus.subscribeEvery(PLAYER_SET_MUTE, () => {\n logMuteUnmuteEvent();\n });\n messageBus.subscribeEvery(PLAYER_SEEK, () => {\n logPlayerActionEvent(\"TrackSeek\");\n });\n\n messageBus.subscribeEvery(PLAYER_SET_VOLUME, () => {\n tryLogVolumeSeekEvent({});\n });\n\n messageBus.subscribeEvery(PLAYER_TOGGLE_VOLUME_EXPAND, () => {\n logPlayerActionEvent(\"ExpandVolume\");\n });\n};\n","import { logPlayerActionEvent } from \"./logPlayerActionEvent\";\nimport { store } from \"global\";\nimport { debounce } from \"services/cancellation/debounce\";\n\nconst debounceMs = 200;\n\nfunction logVolumeSeek() {\n const { volume } = store.getState().player;\n logPlayerActionEvent(\"VolumeSeek\", undefined, volume * 100);\n}\n\nexport const tryLogVolumeSeekEvent = debounce(logVolumeSeek, debounceMs)[0];\n","import { convertThemeSetting, convertTheme } from \"./convertThemeSetting\";\nimport { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport { getThemeSettingFromState, getThemeFromState, getLangFromState, getLanguageSettingFromState } from \"components/app/hooks\";\nimport { WebAppBrand } from \"shared/models\";\nimport { getAppVersionNumber } from \"shared/services\";\nimport { Platform, getWindowInnerSizeString, getBrand, getPlatform } from \"services/app\";\nimport type { AnalyticsKeys } from \"generated/analyticsKeys\";\nimport type { ThemeSetting, Theme } from \"models/view\";\nimport type { Language, LanguageSetting } from \"models/view/Localization\";\n\ninterface AnalyticsAppProperties {\n AppVersion: number;\n Brand: WebAppBrand;\n ThemeSetting: ThemeSetting;\n Theme: Theme;\n LanguageSetting: LanguageSetting;\n Language: Language;\n Platform: Platform;\n WindowWidthWeb: number;\n WindowHeightWeb: number;\n}\n\nexport function getAnalyticsAppProperties(): AnalyticsAppProperties {\n const size = getWindowInnerSizeString();\n\n return {\n AppVersion: getAppVersionNumber(),\n Brand: getBrand(),\n ThemeSetting: getThemeSettingFromState(),\n Theme: getThemeFromState(),\n Platform: getPlatform(),\n WindowWidthWeb: size[0],\n WindowHeightWeb: size[1],\n Language: getLangFromState(),\n LanguageSetting: getLanguageSettingFromState()\n };\n}\n\nexport function convertAnalyticsAppProperties(properties: AnalyticsAppProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"app\", \"AppVersion\", properties.AppVersion);\n SetAnalyticsProp(data, \"app\", \"Brand\", convertBrandValue(properties.Brand));\n SetAnalyticsProp(data, \"app\", \"ThemeSetting\", convertThemeSetting(properties.ThemeSetting));\n SetAnalyticsProp(data, \"app\", \"Theme\", convertTheme(properties.Theme));\n SetAnalyticsProp(data, \"app\", \"LanguageSetting\", properties.LanguageSetting);\n SetAnalyticsProp(data, \"app\", \"Language\", properties.Language);\n SetAnalyticsProp(data, \"app\", \"Platform\", convertPlatformValue(properties.Platform));\n SetAnalyticsProp(data, \"app\", \"WindowWidthWeb\", properties.WindowWidthWeb);\n SetAnalyticsProp(data, \"app\", \"WindowHeightWeb\", properties.WindowHeightWeb);\n\n return data;\n}\n\ntype AnalyticsBrandName = keyof Pick<AnalyticsKeys, \"Telmore\" | \"YouSee\">;\nfunction convertBrandValue(brand: WebAppBrand): AnalyticsBrandName | null {\n switch (brand) {\n case WebAppBrand.Telmore:\n return \"Telmore\";\n case WebAppBrand.YouSee:\n return \"YouSee\";\n case null:\n return null;\n }\n}\ntype AnalyticsPlatformValue = keyof Pick<AnalyticsKeys, \"Desktop\" | \"Web\">;\nfunction convertPlatformValue(platform: Platform): AnalyticsPlatformValue | null {\n switch (platform) {\n case Platform.Desktop:\n return \"Desktop\";\n case Platform.Web:\n return \"Web\";\n }\n}\n","import type { AnalyticsKeys } from \"generated/analyticsKeys\";\nimport { ThemeSetting, Theme } from \"models/view\";\n\ntype AnalyticsThemeSetting = keyof Pick<AnalyticsKeys, \"Auto\" | AnalyticsTheme>;\nexport function convertThemeSetting(themeSetting: ThemeSetting): AnalyticsThemeSetting {\n switch (themeSetting) {\n case ThemeSetting.Auto:\n return \"Auto\";\n case ThemeSetting.Dark:\n return \"Dark\";\n case ThemeSetting.Light:\n return \"Light\";\n }\n}\ntype AnalyticsTheme = keyof Pick<AnalyticsKeys, \"Dark\" | \"Light\">;\nexport function convertTheme(theme: Theme): AnalyticsTheme {\n switch (theme) {\n case Theme.Dark:\n return \"Dark\";\n case Theme.Light:\n return \"Light\";\n }\n}\n","import type { AnalyticsKeys } from \"generated/analyticsKeys\";\nimport type { LocationContentType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\n\ntype ViewPageType =\n | \"Album Artist Albums Show All\"\n | \"AlbumChart\"\n | \"AlbumDownloads\"\n | \"AlbumRecommendation\"\n | \"Album\"\n | \"ArtistAlbumsShowAll\"\n | \"ArtistAppearsOnShowAll\"\n | \"ArtistPopularTracksShowAll\"\n | \"ArtistRadio\"\n | \"ArtistSimilarArtistsShowAll\"\n | \"ArtistSinglesShowAll\"\n | \"Artist\"\n | \"DownloadQueue\"\n | \"Downloads\"\n | \"FrontPageItemShowAll\"\n | \"FrontPage\"\n | \"History\"\n | \"LayoutPageItemShowAll\"\n | \"LiveRadioCategory\"\n | \"LiveRadioHistory\"\n | \"MaxiPlayer\"\n | \"MixRadioCategory\"\n | \"MyAlbums\"\n | \"MyArtists\"\n | \"MyMusic\"\n | \"MyPlaylists\"\n | \"MyRecentTracks\"\n | \"MyTracks\"\n | \"PlaylistCategories\"\n | \"PlaylistCategory\"\n | \"PlaylistDownloads\"\n | \"PlaylistRecommendation\"\n | \"Playlist\"\n | \"Queue\"\n | \"RadioPageItemShowAll\"\n | \"Radio\"\n | \"RecommendationCategory\"\n | \"Recommendations\"\n | \"SearchAlbumResultsShowAll\"\n | \"SearchArtistResultsShowAll\"\n | \"SearchPlaylistResultsShowAll\"\n | \"SearchTrackResultsShowAll\"\n | \"Search\"\n | \"SettingsAbout\"\n | \"SettingsAppearance\"\n | \"SettingsBattery\"\n | \"SettingsDownload\"\n | \"SettingsFeedback\"\n | \"SettingsHelp\"\n | \"SettingsSoundQuality\"\n | \"Settings\"\n | \"ShowAll\"\n | \"TrackChart\"\n | \"TrackDownloads\"\n | \"TrackRadio\"\n | \"TrackRecommendation\";\n\nexport type MixpanelViewPageType = Pick<AnalyticsKeys, ViewPageType>;\nexport const getMixpanelViewPageType = (type: LocationContentType | undefined): keyof MixpanelViewPageType | undefined => {\n if (type == undefined) return undefined;\n\n switch (type) {\n case ContentType.AlbumArtistAlbums:\n return \"Album Artist Albums Show All\";\n case ContentType.ArtistAlbums:\n return \"ArtistAlbumsShowAll\";\n case ContentType.ArtistAppearsOn:\n return \"ArtistAppearsOnShowAll\";\n case ContentType.ArtistSimilarArtists:\n return \"ArtistSimilarArtistsShowAll\";\n case ContentType.ArtistSingles:\n return \"ArtistSinglesShowAll\";\n case ContentType.MyMusicAlbums:\n return \"MyAlbums\";\n case ContentType.MyMusicArtists:\n return \"MyArtists\";\n case ContentType.MyMusicPlaylists:\n return \"MyPlaylists\";\n case ContentType.MyMusicTracks:\n return \"MyTracks\";\n case ContentType.Recommendation:\n return \"Recommendations\";\n case ContentType.SearchAlbumResults:\n return \"SearchAlbumResultsShowAll\";\n case ContentType.SearchArtistResults:\n return \"SearchArtistResultsShowAll\";\n case ContentType.SearchPlaylistResults:\n return \"SearchPlaylistResultsShowAll\";\n case ContentType.SearchTrackResults:\n return \"SearchTrackResultsShowAll\";\n case ContentType.UserHistory:\n return \"History\";\n case ContentType.UserRecommendations:\n return \"RecommendationCategory\";\n case ContentType.FrontPageShowAll:\n return \"FrontPageItemShowAll\";\n case ContentType.ThemePageShowAll:\n return \"LayoutPageItemShowAll\"; //todo is this correct?\n case ContentType.RadioPageShowAll:\n return \"RadioPageItemShowAll\";\n case ContentType.SettingsPage:\n return \"Settings\";\n case ContentType.Album:\n case ContentType.AlbumChart:\n case ContentType.AlbumRecommendation:\n case ContentType.Artist:\n case ContentType.ArtistRadio:\n case ContentType.FrontPage:\n case ContentType.LiveRadioCategory:\n case ContentType.MixRadioCategory:\n case ContentType.Playlist:\n case ContentType.PlaylistCategories:\n case ContentType.PlaylistCategory:\n case ContentType.PlaylistRecommendation:\n case ContentType.Queue:\n case ContentType.Radio:\n case ContentType.Search:\n case ContentType.TrackChart:\n case ContentType.TrackRadio:\n case ContentType.TrackRecommendation:\n return type;\n // case ContentType : return MixpanelViewPageType.ArtistPopularTracksShowAll\n }\n};\n","import type { AnalyticsData } from \"../../analyticsData\";\nimport { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\n\nexport type AnalyticsChangeSettingtProperties = AnalyticsData & { type: \"ChangeSettingtProperties\" };\n\nexport function getAnalyticsChangeSettingProperties(preferenceType: AnalyticsKey, value: AnalyticsKey, shortcutThemeSettingWeb?: boolean) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"PreferenceType\", preferenceType);\n SetAnalyticsProp(data, \"event\", \"Value\", value);\n if (shortcutThemeSettingWeb != undefined) SetAnalyticsProp(data, \"event\", \"ShortcutThemeSettingWeb\", shortcutThemeSettingWeb);\n\n return { ...data, type: \"ChangeSettingtProperties\" };\n}\n","export * from \"./changeSettingProperties\";\nexport * from \"./logInOutProperties\";\nexport * from \"./navigationProperties\";\nexport * from \"./notificationsProperties\";\nexport * from \"./pageProperties\";\nexport * from \"./playableAndParentProperties\";\nexport * from \"./playableErrorProperties\";\nexport * from \"./playableLoadProperties\";\nexport * from \"./playableProperties\";\nexport * from \"./playableStopProperties\";\nexport * from \"./resourceParentProperties\";\nexport * from \"./rootPageProperties\";\nexport * from \"./rootPreviewProperties\";\nexport * from \"./rootSectionProperties\";\nexport * from \"./singleNotificationProperties\";\n","import type { PageContextModel } from \"models/app/resourceContextModel\";\nimport type { LocationContentType } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\n\nexport function isPagePlayable(page: PageContextModel | null) {\n return !isPageMyMusic(page?.type) && page?.type !== ContentType.SettingsPage && page?.type !== ContentType.Search;\n}\n\nconst isPageMyMusic = (type: LocationContentType | undefined) => {\n switch (type) {\n case ContentType.MyMusicAlbums:\n case ContentType.MyMusicArtists:\n case ContentType.MyMusicPlaylists:\n case ContentType.MyMusicTracks:\n return true;\n default:\n return false;\n }\n};\n","import type { AnalyticsData } from \"../../analyticsData\";\nimport { SetAnalyticsProp, createAnalyticsData, IncrementAnalyticsProp, SetFirstAnalyticsProp } from \"../../analyticsData\";\nimport type { UserLoggingOutAction } from \"global/actions\";\nimport type { AnalyticsKey } from \"global/config\";\n\nexport type AnalyticsLoginLogoutProperties = AnalyticsData & { type: \"LoginLogoutProperties\" };\n\nexport function getAnalyticsLoginProperties() {\n const data = createAnalyticsData();\n\n SetFirstAnalyticsProp(data, \"user\", \"FirstLogin\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastLogin\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfLogins\");\n\n return { ...data, type: \"LoginLogoutProperties\" };\n}\n\nexport enum LogoutTrigger {\n Automatic = \"Automatic\",\n Manual = \"Manual\",\n NoMusicRights = \"NoMusicRights\"\n}\n\nexport function getAnalyticsLogoutProperties(action: UserLoggingOutAction) {\n const data = createAnalyticsData();\n\n if (action.payload.refreshTokenDate) {\n const days = Math.floor((new Date().getTime() - action.payload.refreshTokenDate.getTime()) / (1000 * 60 * 60 * 24));\n SetAnalyticsProp(data, \"event\", \"NumberOfDaysSinceLastTokenRefresh\", days);\n } else {\n // the mobile adds also sends \"0\" when the token hasn't been refreshed at all\n SetAnalyticsProp(data, \"event\", \"NumberOfDaysSinceLastTokenRefresh\", 0);\n }\n\n SetAnalyticsProp(data, \"event\", \"LogoutTrigger\", getLogoutTriggerStr(action.payload.trigger));\n SetFirstAnalyticsProp(data, \"user\", \"FirstLogout\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastLogout\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfLogouts\");\n\n return { ...data, type: \"LoginLogoutProperties\" };\n}\n\nfunction getLogoutTriggerStr(trigger: LogoutTrigger): AnalyticsKey {\n switch (trigger) {\n case LogoutTrigger.Automatic:\n return \"Automatic\";\n case LogoutTrigger.Manual:\n return \"Manual\";\n case LogoutTrigger.NoMusicRights:\n return \"NoMusicRights\";\n }\n}\n","import { IncrementAnalyticsProp, SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { SynchronizationType } from \"generated/graphql-types\";\n\nexport function getAndConvertAnalyticsLyricsProperties(\n lyricsId: string,\n startingPoint: \"ContextMenu\" | \"MaxiPlayer\",\n sync: SynchronizationType\n) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"LyricsID\", lyricsId as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"LyricsType\", (sync === SynchronizationType.Lines ? \"LyricsTypeSync\" : \"LyricsTypeStatic\"), true);\n SetAnalyticsProp(data, \"event\", \"LyricsStartingPoint\", (startingPoint === \"ContextMenu\" ? \"LyricsStartingPointContextMenu\" : \"LyricsStartingPointMaxiPlayer\"), true);\n IncrementAnalyticsProp(data, \"user\", sync === SynchronizationType.Lines ? \"NumberOfLyricsDisplayedSync\" : \"NumberOfLyricsDisplayedStatic\");\n\n return data;\n}\n","import type { AnalyticsPageProperties, AnalyticsRootPageProperties, AnalyticsRootSectionProperties } from \".\";\nimport {\n convertPageProperties,\n convertRootPageProperties,\n convertRootSectionProperties,\n getAnalyticsCurrentPageProperties,\n getAnalyticsRootPageProperties,\n getAnalyticsRootSectionProperties\n} from \".\";\nimport type { AnalyticsData } from \"../../analyticsData\";\nimport { combineAnalyticsData } from \"../../analyticsData\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\n\nexport const getAndConvertAnalyticsNavigationProperties = (preview?: PreviewContextModel): Promise<AnalyticsData> => {\n return combineAnalyticsData(\n convertPageProperties(getAnalyticsCurrentPageProperties()),\n convertRootPageProperties(getAnalyticsRootPageProperties()),\n convertRootSectionProperties(getAnalyticsRootSectionProperties(preview))\n );\n};\n\nexport const getAnalyticsNavigationProperties = (page: AnalyticsPageProperties, root: AnalyticsRootPageProperties, section: AnalyticsRootSectionProperties): Promise<AnalyticsData> => {\n return combineAnalyticsData(convertPageProperties(page), convertRootPageProperties(root), convertRootSectionProperties(section));\n};\n","import type { AnalyticsData } from \"../../analyticsData\";\nimport { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport { getCurrentNotifications, getNotificationsCounts } from \"services/notificationFeed\";\nimport type { NotificationModel } from \"models/domain/NotificationModel\";\n\nexport interface AnalyticsFeedCurrentNotifications {\n current: number;\n currentSeen: number;\n currentConverted: number;\n}\n\nexport function getAnalyticsCurrentNotifications(): AnalyticsFeedCurrentNotifications {\n const current = getNotificationsCounts(getCurrentNotifications().currentNotifications);\n\n return {\n current: current.total,\n currentSeen: current.seen,\n currentConverted: current.converted\n };\n}\n\nfunction addCurrentNotificationsProperties(data: AnalyticsData, current: AnalyticsFeedCurrentNotifications) {\n SetAnalyticsProp(data, \"event\", \"Current\", current.current);\n SetAnalyticsProp(data, \"event\", \"CurrentSeen\", current.currentSeen);\n SetAnalyticsProp(data, \"event\", \"CurrentConverted\", current.currentConverted);\n\n return data;\n}\n\nexport function getAnalyticsNotificationsAdded(added: NotificationModel[], current: AnalyticsFeedCurrentNotifications) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"Added\", added.length);\n addCurrentNotificationsProperties(data, current);\n\n return data;\n}\n\nexport function getAnalyticsNotificationsSeen(seen: NotificationModel[], current: AnalyticsFeedCurrentNotifications) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"Seen\", seen.length);\n addCurrentNotificationsProperties(data, current);\n\n return data;\n}\n","import type { MixpanelViewPageType } from \"./MixpanelViewPageType\";\nimport { getMixpanelViewPageType } from \"./MixpanelViewPageType\";\nimport { DefaultLogMessage, log } from \"../../..\";\nimport { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { getActivePageContext, getPreviousPageContext } from \"services/navigationStack/navigationStack\";\nimport { getLink } from \"services/resource\";\nimport type { PageContextModel } from \"models/app/resourceContextModel\";\n\nexport type AnalyticsPageProperties = {\n pageName?: string;\n pageType?: keyof MixpanelViewPageType;\n pageId?: string;\n previousPageName?: string;\n};\n\nexport function getAnalyticsCurrentPageProperties(): AnalyticsPageProperties {\n const page = getActivePageContext();\n const previousPage = getPreviousPageContext();\n\n return {\n pageName: getPageName(page) ?? undefined,\n pageType: getMixpanelViewPageType(page?.pageType ?? page?.type ?? undefined),\n pageId: getPageId(page) ?? undefined,\n previousPageName: previousPage?.name ?? undefined\n };\n}\n\nfunction getPageName(page: PageContextModel | null): string | null {\n if (page == null) {\n log.error({ code: \"web-220901-1542\", msg: \"no page in analytics\" });\n return null;\n }\n\n const name = getLink(page.type, page.resource)?.text ?? null;\n\n if (name == null) {\n log.error({ code: \"web-210928-2045\", msg: DefaultLogMessage.UnexpectedNull, data: { \"page type\": page.type } });\n return null;\n }\n\n return name;\n}\n\nfunction getPageId(page: PageContextModel | null): string | null {\n if (!page) return null;\n return page.resource?.id ?? null;\n}\n\nexport function convertPageProperties(properties: AnalyticsPageProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"PageName\", properties.pageName as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"PageType\", properties.pageType ?? null);\n SetAnalyticsProp(data, \"event\", \"PageID\", properties.pageId as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"LastPageName\", properties.previousPageName as AnalyticsKey, true);\n\n return data;\n}\n","import { convertResourceParentProperties, getAnalyticsResourceParentProperties } from \".\";\nimport type { AnalyticsResourceParentProperties } from \".\";\nimport type { AnalyticsPlayableProperties } from \"./playableProperties\";\nimport { getAnalyticsPlayableProperties, convertPlayableProperties } from \"./playableProperties\";\nimport type { LiveRadioPlayableModel, TrackPlayableModel } from \"models/domain\";\n\nexport function getAndConvertPlayableAndParentProperties(preview: TrackPlayableModel | LiveRadioPlayableModel) {\n return {\n ...convertPlayableProperties(getAnalyticsPlayableProperties(preview)),\n ...convertResourceParentProperties(getAnalyticsResourceParentProperties(preview.parent))\n };\n}\nexport function convertPlayableAndParentProperties(playable: AnalyticsPlayableProperties, parent: AnalyticsResourceParentProperties) {\n return {\n ...convertPlayableProperties(playable),\n ...convertResourceParentProperties(parent)\n };\n}\n","import type { AnalyticsPlayablePlayEndData } from \"./playableStopProperties\";\nimport { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { log } from \"services/logger/initLoggerService\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport type AnalyticsPlayableErrorProperties = {\n playDuration: number;\n playedMoreThan30sec: boolean;\n endReason: AudioContextAction;\n};\n\nexport function getAnalyticsPlayableErrorProperties({ playDuration, endReason }: AnalyticsPlayablePlayEndData): AnalyticsPlayableErrorProperties {\n return {\n playDuration,\n playedMoreThan30sec: playDuration >= 30,\n endReason\n };\n}\n\nexport function convertPlayableErrorProperties(properties: AnalyticsPlayableErrorProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"PlayDuration\", properties.playDuration);\n SetAnalyticsProp(data, \"event\", \"PlayedMoreThan30sec\", properties.playDuration >= 30);\n SetAnalyticsProp(data, \"event\", \"ErrorType\", convertAnalyticsErrorTypeFromAction(properties.endReason));\n\n return data;\n}\n\nfunction convertAnalyticsErrorTypeFromAction(action: AudioContextAction): AnalyticsKey | null {\n switch (action) {\n case AudioContextAction.AudioTrackStreamError:\n return \"FetchTrackStreamError\";\n case AudioContextAction.AudioHtmlElementError:\n case AudioContextAction.AudioHlsError:\n return \"MediaError\";\n action;\n }\n\n log.error({ code: \"web-220712-1519\", msg: \"action is not a valid error type\", data: { action } });\n return null;\n}\n","import { createAnalyticsData, SetAnalyticsProp } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { store } from \"global/config\";\nimport { AudioInputType, PlayerOutputType } from \"models/app/player\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport { RepeatStatus, ShuffleState } from \"models/view\";\n\nexport type AnalyticsPlayableLoadProperties = {\n playDestination: PlayerOutputType;\n queueType?: QueueLane;\n playerSettingShuffle?: ShuffleState;\n playerSettingRepeat?: RepeatStatus;\n};\n\nexport function getAnalyticsPlayableLoadProperties(audio: AudioInputItemModel): AnalyticsPlayableLoadProperties {\n const playDestination = getPlayDestination();\n let queueType: QueueLane | undefined;\n let playerSettingShuffle: ShuffleState | undefined;\n let playerSettingRepeat: RepeatStatus | undefined;\n\n if (audio.input === AudioInputType.PlayQueue) {\n queueType = getQueueType(audio);\n playerSettingShuffle = getPlayerSettingShuffle();\n playerSettingRepeat = getPlayerSettingRepeat();\n }\n\n return {\n playDestination,\n queueType,\n playerSettingShuffle,\n playerSettingRepeat\n };\n}\n\nfunction getPlayDestination(): PlayerOutputType {\n return store.getState().player.output;\n}\n\nfunction getQueueType(item: AudioInputItemModel): QueueLane | undefined {\n return item.input === AudioInputType.PlayQueue ? item.previousQueueLane : undefined;\n}\n\nfunction getPlayerSettingShuffle(): ShuffleState {\n return store.getState().player.shuffle;\n}\n\nfunction getPlayerSettingRepeat(): RepeatStatus {\n return store.getState().player.repeat;\n}\n\nexport function convertPlayableLoadProperties(properties: AnalyticsPlayableLoadProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"PlayDestination\", convertPlayDestination(properties.playDestination));\n SetAnalyticsProp(data, \"event\", \"QueueType\", convertQueueType(properties.queueType ?? null), true);\n SetAnalyticsProp(data, \"event\", \"PlayerSettingShuffle\", convertPlayerSettingShuffle(properties.playerSettingShuffle ?? null), true);\n SetAnalyticsProp(data, \"event\", \"PlayerSettingRepeat\", covertPlayerSettingRepeat(properties.playerSettingRepeat ?? null), true);\n\n return data;\n}\n\nfunction convertPlayDestination(output: PlayerOutputType): AnalyticsKey {\n switch (output) {\n case PlayerOutputType.Browser:\n return \"Browser\";\n case PlayerOutputType.Chromecast:\n return \"Chromecast\";\n }\n}\n\nfunction convertQueueType(lane: QueueLane | null): AnalyticsKey | null {\n switch (lane) {\n case QueueLane.Current:\n return \"Current\";\n case QueueLane.Flow:\n return \"Flow\";\n case QueueLane.Memory:\n return \"Memory\";\n case QueueLane.Priority:\n return \"Priority\";\n case QueueLane.Preview:\n return \"Preview\";\n case null:\n return null;\n }\n}\n\nfunction convertPlayerSettingShuffle(state: ShuffleState | null): AnalyticsKey | null {\n switch (state) {\n case ShuffleState.Heavy:\n return \"Permanent\";\n case ShuffleState.Light:\n return \"Temporary\";\n case ShuffleState.Off:\n return \"Off\";\n case null:\n return null;\n }\n}\n\nfunction covertPlayerSettingRepeat(status: RepeatStatus | null): AnalyticsKey | null {\n switch (status) {\n case RepeatStatus.All:\n return \"All\";\n case RepeatStatus.None:\n return \"Off\";\n case RepeatStatus.One:\n return \"One\";\n case null:\n return null;\n }\n}\n","import type { AnalyticsPlayableProperties } from \"./playableProperties\";\nimport { log } from \"services/logger/initLoggerService\";\nimport type { PageContextModel } from \"models/app/resourceContextModel\";\nimport { ContentType } from \"models/ModelType\";\n\nexport function getAnalyticsPlayablePageProperties(page: PageContextModel | null): AnalyticsPlayableProperties {\n if (!page) {\n log.error({ code: \"web-220901-1451\", msg: \"no page in analytics\" });\n return {};\n }\n\n const resource = page?.resource;\n if (!resource) {\n const properties: AnalyticsPlayableProperties = {\n contentId: \"\"\n };\n return properties;\n }\n\n switch (resource?.contentType) {\n case ContentType.Album: {\n const properties: AnalyticsPlayableProperties = {\n contentId: resource.id,\n contentName: resource.title,\n contentType: resource.contentType,\n graphqlType: resource.graphType,\n contentArtist: resource.artist?.name\n };\n return properties;\n }\n default: {\n const properties: AnalyticsPlayableProperties = {\n contentId: resource.id,\n contentName: (\"title\" in resource ? resource.title : \"name\" in resource ? resource.name : undefined) ?? undefined,\n contentType: resource.contentType,\n graphqlType: resource.graphType\n };\n return properties;\n }\n }\n}\n","import { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { log } from \"services/logger/initLoggerService\";\nimport type { TrackPlayableModel, LiveRadioPlayableModel, PlayQueuePlayableModel, TrackPreviewModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\n\nexport type AnalyticsPlayableProperties = {\n contentId?: string;\n contentType?: ContentType;\n graphqlType?: string;\n contentName?: string;\n contentArtist?: string;\n contentAlbum?: string;\n contentGenre?: string;\n playbackContext?: string;\n trackDuration?: number;\n};\n\nexport function getAnalyticsPlayableProperties(resource: TrackPlayableModel | LiveRadioPlayableModel | PlayQueuePlayableModel): AnalyticsPlayableProperties {\n switch (resource.contentType) {\n case ContentType.TrackPlayable:\n case ContentType.LiveRadioTrack: {\n const track = resource.track;\n const properties: AnalyticsPlayableProperties = {\n contentId: track.id,\n contentName: track.title,\n contentType: track.contentType,\n graphqlType: track.graphType,\n contentArtist: track.artist.name,\n contentAlbum: track.album.title,\n contentGenre: track.genre,\n playbackContext: track.playbackReportContext,\n trackDuration: Math.floor(track.duration)\n };\n return properties;\n }\n case ContentType.Album: {\n const properties: AnalyticsPlayableProperties = {\n contentId: resource.id,\n contentName: resource.title,\n contentType: resource.contentType,\n graphqlType: resource.graphType,\n contentArtist: resource.artist?.name,\n contentGenre: undefined //TODO,\n };\n return properties;\n }\n case ContentType.LiveRadioPlayable: {\n const properties: AnalyticsPlayableProperties = {\n contentId: resource.id,\n contentName: resource.liveRadio.title,\n contentType: resource.contentType,\n graphqlType: resource.graphType\n };\n return properties;\n }\n case ContentType.Artist: {\n const properties: AnalyticsPlayableProperties = {\n contentId: resource.id,\n contentName: resource.name,\n contentType: resource.contentType,\n graphqlType: resource.graphType\n };\n return properties;\n }\n\n case ContentType.MixedContentTrack:\n case ContentType.QueueTrack:\n case ContentType.SearchResultTrack: {\n const properties: AnalyticsPlayableProperties = {\n contentId: resource.id,\n contentName: resource.track?.title,\n contentType: resource.contentType,\n graphqlType: resource.graphType\n };\n return properties;\n }\n case ContentType.ArtistTracks: {\n const properties: AnalyticsPlayableProperties = {\n contentId: resource.id,\n contentName: resource.tracks?.items[0].artist.name,\n contentType: resource.contentType,\n graphqlType: resource.graphType\n };\n return properties;\n }\n case ContentType.LayoutItem: {\n const properties: AnalyticsPlayableProperties = {\n contentId: resource.id,\n contentName: resource.name ?? undefined,\n contentType: resource.contentType,\n graphqlType: resource.graphType\n };\n return properties;\n }\n case ContentType.EndlessPlay: {\n const properties: AnalyticsPlayableProperties = {\n contentId: resource.id,\n contentName: undefined,\n contentType: resource.contentType,\n graphqlType: resource.graphType\n };\n return properties;\n }\n\n default: {\n const properties: AnalyticsPlayableProperties = {\n contentId: resource.id,\n contentName: resource.title,\n contentType: resource.contentType,\n graphqlType: resource.graphType\n };\n return properties;\n }\n }\n resource.contentType;\n}\n\nexport function convertPlayableProperties(properties: AnalyticsPlayableProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"ContentID\", properties.contentId as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"ContentName\", properties.contentName as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"ContentType\", convertContentType(properties.contentType, properties.graphqlType), true);\n SetAnalyticsProp(data, \"event\", \"ContentArtist\", properties.contentArtist as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"ContentAlbum\", properties.contentAlbum as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"ContentGenre\", properties.contentGenre as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"PlaybackContext\", properties.playbackContext as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"TrackDuration\", properties.trackDuration, true);\n\n return data;\n}\n\nexport function convertContentType(type: ContentType | undefined, fallback: string | undefined): AnalyticsKey | null {\n switch (type) {\n case ContentType.LiveRadioTrack:\n case ContentType.TrackPlayable:\n case ContentType.QueueTrack:\n return \"Track\";\n case ContentType.Album:\n return \"Album\";\n case ContentType.Artist:\n return \"Artist\";\n case ContentType.Playlist:\n return \"Playlist\";\n case ContentType.LiveRadioPlayable:\n return \"LiveRadio\";\n }\n\n if (fallback) return fallback as AnalyticsKey;\n\n log.error({ code: \"web-220503-2120\", msg: \"content type not supported in analytics\", data: { type } });\n return null;\n}\n\nexport function getAnalyticsPlayableIdProperties(id: string, type: AnalyticsKey) {\n const data = createAnalyticsData();\n SetAnalyticsProp(data, \"event\", \"ContentID\", id as AnalyticsKey);\n SetAnalyticsProp(data, \"event\", \"ContentType\", type);\n return { ...data, type: \"PlayableProperties\" };\n}\n","import { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { log } from \"services/logger\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport type AnalyticsPlayableStopProperties = {\n playDuration: number;\n playedMoreThan30sec: boolean;\n endReason: AudioContextAction;\n};\n\nexport interface AnalyticsPlayablePlayEndData {\n playDuration: number;\n endReason: AudioContextAction;\n}\n\nexport function getAnalyticsPlayableStopProperties({ playDuration, endReason }: AnalyticsPlayablePlayEndData): AnalyticsPlayableStopProperties {\n return {\n playDuration,\n playedMoreThan30sec: playDuration >= 30,\n endReason\n };\n}\n\nexport function convertPlayableStopProperties(properties: AnalyticsPlayableStopProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"PlayDuration\", properties.playDuration);\n SetAnalyticsProp(data, \"event\", \"PlayedMoreThan30sec\", properties.playDuration >= 30);\n SetAnalyticsProp(data, \"event\", \"EndReason\", convertAnalyticsPlayEndReasonFromAction(properties.endReason));\n\n return data;\n}\n\nfunction convertAnalyticsPlayEndReasonFromAction(action: AudioContextAction): AnalyticsKey | null {\n switch (action) {\n case AudioContextAction.ChromecastApiAvailable:\n case AudioContextAction.ChromecastLocalSync:\n case AudioContextAction.ChromecastNoSession:\n case AudioContextAction.ChromecastResumeTimeoutOnPageLoad:\n case AudioContextAction.ChromecastSessionResumed:\n case AudioContextAction.ChromecastSessionSessionEnded:\n case AudioContextAction.ChromecastSessionSessionEnding:\n case AudioContextAction.ChromecastSessionStartFailed:\n case AudioContextAction.ChromecastSessionStarted:\n return \"Skip\";\n case AudioContextAction.AppSessionEnded:\n return \"AppClose\";\n case AudioContextAction.BrowserAudioEnded:\n case AudioContextAction.ChromecastPlayerStateChange:\n case AudioContextAction.ChromecastMediaLoadedChange:\n case AudioContextAction.ChromecastCurrentTimeChange:\n return \"End\";\n case AudioContextAction.UserMediaControlsNext:\n case AudioContextAction.UserMediaControlsPrevious:\n case AudioContextAction.UserPlayerNext:\n case AudioContextAction.UserPlayerPreviousOrRewind:\n case AudioContextAction.UserPlayerSwipeNext:\n case AudioContextAction.UserPlayerSwipePrevious:\n case AudioContextAction.UserEndChromeCast:\n return \"Skip\";\n case AudioContextAction.UserPageSetAndPlay:\n case AudioContextAction.UserPreviewSetAndPlay:\n return \"Replace\";\n case AudioContextAction.UserLogIn:\n case AudioContextAction.UserLogOut:\n case AudioContextAction.AppStart:\n return \"LogInOut\";\n case AudioContextAction.UserPlayQueueClear:\n return \"Clear\";\n case AudioContextAction.DeeplinkPlay:\n return \"Deeplink\";\n case AudioContextAction.SkipOnFail:\n case AudioContextAction.AudioHlsError:\n case AudioContextAction.AudioHtmlElementError:\n case AudioContextAction.AudioTrackStreamError:\n return \"ErrorSkip\";\n case AudioContextAction.Unknown:\n return null;\n case AudioContextAction.AudioLoadTrackStream:\n case AudioContextAction.BrowserAudioPause:\n case AudioContextAction.BrowserAudioPlayPrevented:\n case AudioContextAction.BrowserAudioPlaying:\n case AudioContextAction.BrowserAudioSeeked:\n case AudioContextAction.BrowserAudioSeeking:\n case AudioContextAction.BrowserAudioWaiting:\n case AudioContextAction.ConcurrencyLost:\n case AudioContextAction.ConcurrencyResume:\n case AudioContextAction.EndlessPlayUpdate:\n case AudioContextAction.UserContextMenuAddToQueue:\n case AudioContextAction.UserKeybordKeySpace:\n case AudioContextAction.UserMediaControlsPause:\n case AudioContextAction.UserMediaControlsPlay:\n case AudioContextAction.UserPlayQueueRemove:\n case AudioContextAction.UserPlayerSeek:\n case AudioContextAction.UserPlayerShuffle:\n case AudioContextAction.UserPlayerTogglePlay:\n case AudioContextAction.UserPreviewDragDrop:\n case AudioContextAction.UserPreviewTogglePlay:\n log.error({ code: \"web-210930-1817\", msg: \"action is not a valid end reason\", data: { action } });\n return null;\n }\n action;\n}\n","import type { ActionSource } from \"./ActionSource\";\nimport { createAnalyticsData, SetAnalyticsProp } from \"../../analyticsData\";\nimport type { AnalyticsKeys } from \"generated/analyticsKeys\";\n\ntype Type = \"Play\" | \"Pause\" | \"TrackSeek\" | \"Mute\" | \"Unmute\" | \"ExpandVolume\" | \"VolumeSeek\";\nexport type PlayerActionType = keyof Pick<AnalyticsKeys, Type>;\n\nexport type AnalyticsPlayerActionProperties = {\n actionType: PlayerActionType;\n actionSource: ActionSource;\n IsViewingQueue: boolean;\n trackProgress: number;\n trackDuration: number;\n volumeLevel?: number;\n};\n\nexport function getAnalyticsPlayerActionProperties({ actionType, actionSource, IsViewingQueue, trackProgress, volumeLevel, trackDuration }: AnalyticsPlayerActionProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"ActionType\", actionType, true);\n SetAnalyticsProp(data, \"event\", \"ActionSource\", actionSource, true);\n SetAnalyticsProp(data, \"event\", \"IsViewingQueue\", IsViewingQueue);\n SetAnalyticsProp(data, \"event\", \"TrackProgress\", trackProgress);\n SetAnalyticsProp(data, \"event\", \"TrackDuration\", trackDuration);\n if (volumeLevel) SetAnalyticsProp(data, \"event\", \"VolumeLevel\", volumeLevel);\n\n return data;\n}\n","import { createAnalyticsData, SetAnalyticsProp } from \"../../analyticsData\";\nimport type { AnalyticsKeys } from \"generated/analyticsKeys\";\nimport { RepeatStatus } from \"models/view\";\n\ntype ActionType =\n | \"Shuffle\"\n | \"Unshuffle\"\n | \"ActivateRepeatOne\"\n | \"ActivateRepeatAll\"\n | \"ActivateRepeatNone\"\n | \"ClearQueue\"\n | \"ClearPriorityQueue\"\n | \"ReorderQueue\"\n | \"RemoveItem\"\n | \"SkipForward\"\n | \"SkipBack\"\n | \"SkipToStart\"\n | \"TurnHistoryOn\"\n | \"TurnHistoryOff\"\n | \"SaveQueueAsPlaylist\"\n | \"OpenQueueView\"\n | \"CloseQueueView\"\n | \"OpenContextMenu\"\n | \"FavoriteTrack\"\n | \"KeepPriorityTracks\"\n | \"DiscardPriorityTracks\"\n | \"UnfavoriteTrack\";\n\nexport type QueueActionType = keyof Pick<AnalyticsKeys, ActionType>;\n\nexport function getAnalyticsQueueActionProperties(actionType: QueueActionType, IsViewingQueue: boolean) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"ActionType\", actionType, true);\n SetAnalyticsProp(data, \"event\", \"ActionSource\", \"DesktopPlayer\", true);\n SetAnalyticsProp(data, \"event\", \"IsViewingQueue\", IsViewingQueue);\n\n return data;\n}\n\nexport const getRepeatStatusAnalyticsKey = (repeat: RepeatStatus): QueueActionType => {\n switch (repeat) {\n case RepeatStatus.None:\n return \"ActivateRepeatNone\";\n case RepeatStatus.All:\n return \"ActivateRepeatAll\";\n case RepeatStatus.One:\n return \"ActivateRepeatOne\";\n }\n};\n","import { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { analyticsKeys } from \"global/config/configcms\";\nimport { log, DefaultLogMessage } from \"services/logger\";\nimport { getLink } from \"services/resource\";\nimport type { LocationContentType, PlayableParentModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\n\nexport type AnalyticsResourceParentProperties = {\n parentName?: string;\n parentGraphType?: string;\n parentType: LocationContentType;\n parentId?: string;\n parentIsMyMusic: boolean;\n parentIsMixedContent: boolean;\n};\n\nfunction isMyMusic(parent: PlayableParentModel): boolean {\n switch (parent.contentType) {\n case ContentType.MyMusicTracks:\n return true;\n case ContentType.Playlist:\n return parent.owner;\n case ContentType.MixedContent: {\n switch (parent.mixedContentType) {\n case ContentType.Playlist:\n return parent.owner ?? false;\n case ContentType.MyMusicTracks:\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getAnalyticsResourceParentProperties(parent: PlayableParentModel): AnalyticsResourceParentProperties {\n const analytics: AnalyticsResourceParentProperties = {\n parentName: getParentName(parent),\n parentGraphType: parent.graphType,\n parentType: parent.contentType,\n parentId: parent.id,\n parentIsMyMusic: isMyMusic(parent),\n parentIsMixedContent: false\n };\n\n if (parent.contentType === ContentType.MixedContent) {\n analytics.parentIsMixedContent = true;\n analytics.parentType = parent.mixedContentType;\n analytics.parentId = parent.mixedContentId ?? undefined;\n }\n\n return analytics;\n}\n\nfunction getParentName(parent: PlayableParentModel): string | undefined {\n if (parent.contentType === ContentType.EndlessPlay) return analyticsKeys[\"AutomatiskFortsættelse\"];\n const name = getLink(parent.contentType, parent)?.text;\n if (name == undefined) {\n log.error({ code: \"web-210928-2047\", msg: DefaultLogMessage.UnexpectedNull, data: { type: parent.contentType } });\n }\n return name;\n}\n\nexport function convertResourceParentProperties(properties: AnalyticsResourceParentProperties) {\n const data = createAnalyticsData();\n SetAnalyticsProp(data, \"event\", \"ParentName\", properties.parentName as AnalyticsKey);\n SetAnalyticsProp(data, \"event\", \"ParentType\", properties.parentGraphType as AnalyticsKey);\n SetAnalyticsProp(data, \"event\", \"ParentID\", properties.parentId as AnalyticsKey);\n\n return data;\n}\n","import { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { getNavigationRoot, getNavigationRootPageAncestryLevel, getNavigationRootPreview } from \"services/navigationStack/navigationStack\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { NavigationPageRootName } from \"models/view/navigationStack\";\n\nexport type AnalyticsRootPageProperties = {\n rootPageId?: string;\n rootPageType?: string;\n\n rootPageName?: NavigationPageRootName;\n rootPageAncestryLevel?: number;\n};\n\nexport function getAnalyticsRootPageProperties(preview?: PreviewContextModel): AnalyticsRootPageProperties {\n let root = getNavigationRootPreview(preview)?.page ?? null;\n if (!root) root = getNavigationRoot()?.page ?? null;\n if (!root) return {};\n\n return {\n rootPageName: root.root ?? undefined,\n rootPageAncestryLevel: getRootPageAncestryLevel() ?? undefined,\n rootPageId: root.id ?? undefined,\n rootPageType: root.type\n };\n}\n\nfunction getRootPageAncestryLevel(): number | null {\n return getNavigationRootPageAncestryLevel();\n}\n\nexport function convertRootPageProperties(properties: AnalyticsRootPageProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"RootPageName\", convertRootPageName(properties.rootPageName ?? null));\n SetAnalyticsProp(data, \"event\", \"RootPageAncestryLevel\", properties.rootPageAncestryLevel, true);\n\n return { ...data, type: \"AnalyticsRootPageProperties\" };\n}\n\nfunction convertRootPageName(rootName: NavigationPageRootName | null): AnalyticsKey {\n switch (rootName) {\n case NavigationPageRootName.Radio:\n return \"Stations\";\n case NavigationPageRootName.Explore:\n return \"Search\";\n case null:\n return \"Deeplink\";\n case NavigationPageRootName.EndlessPlay:\n case NavigationPageRootName.NotificationFeed:\n case NavigationPageRootName.Search:\n case NavigationPageRootName.FrontPage:\n case NavigationPageRootName.Deeplink:\n case NavigationPageRootName.MyMusicAlbums:\n case NavigationPageRootName.MyMusicArtists:\n case NavigationPageRootName.MyMusicPlaylists:\n case NavigationPageRootName.MyMusicTracks:\n return rootName;\n }\n}\n","import { getNavigationRootPreview } from \"services/navigationStack/navigationStack\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { LocationContentType } from \"models/domain\";\n\nexport type AnalyticsRootPreviewProperties = {\n rootPreviewName?: string;\n rootPreviewId?: string;\n rootPreviewRank?: number;\n rootPreviewType?: LocationContentType;\n};\n\nexport function getAnalyticsRootPreviewProperties(preview: PreviewContextModel): AnalyticsRootPreviewProperties {\n const root = getNavigationRootPreview(preview);\n if (!root) return {};\n\n const rootPreviewName = root.preview?.name ?? undefined;\n const rootPreviewId = root.preview?.id ?? undefined;\n const rootPreviewRank = root.preview?.rank ?? undefined;\n const rootPreviewType = root.preview?.type ?? undefined;\n\n return {\n rootPreviewName,\n rootPreviewId,\n rootPreviewRank,\n rootPreviewType\n };\n}\n","import { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport { getNavigationRootPreview } from \"services/navigationStack/navigationStack\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { LocationContentType } from \"models/domain\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport { NavigationPageRootName } from \"models/view/navigationStack\";\n\nexport type AnalyticsRootSectionProperties = {\n rootSectionName?: string;\n rootSectionId?: string;\n rootSectionRank?: number;\n rootSectionDisplay?: ResourceDisplayType;\n rootSectionType?: LocationContentType;\n};\n\nexport function getAnalyticsRootSectionProperties(preview?: PreviewContextModel): AnalyticsRootSectionProperties {\n const root = getNavigationRootPreview(preview);\n if (!root) return {};\n\n if (root.page.root === NavigationPageRootName.Deeplink) return {};\n if (root.page.root === NavigationPageRootName.EndlessPlay) return {};\n\n let rootSectionName: string | undefined;\n let rootSectionId: string | undefined;\n let rootSectionRank: number | undefined;\n let rootSectionDisplay: ResourceDisplayType | undefined;\n let rootSectionType: LocationContentType | undefined;\n\n if (root.page.root === NavigationPageRootName.Explore) {\n rootSectionName = root.preview.name ?? undefined;\n rootSectionId = root.preview.id ?? undefined;\n rootSectionRank = root.preview.rank ?? undefined;\n rootSectionDisplay = root.section.displayType ?? undefined;\n rootSectionType = root.section.type;\n } else {\n rootSectionName = root.section.name ?? undefined;\n rootSectionId = root.section.id ?? undefined;\n rootSectionRank = root.section.visibleRank ?? undefined;\n rootSectionDisplay = root.section.displayType ?? undefined;\n rootSectionType = root.section.type;\n }\n\n return {\n rootSectionName,\n rootSectionId,\n rootSectionRank,\n rootSectionDisplay,\n rootSectionType\n };\n}\n\nexport function convertRootSectionProperties(properties: AnalyticsRootSectionProperties) {\n const data = createAnalyticsData();\n\n const rank = properties.rootSectionRank != null ? properties.rootSectionRank + 1 : undefined;\n\n SetAnalyticsProp(data, \"event\", \"RootSectionName\", properties.rootSectionName as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"RootSectionID\", properties.rootSectionId as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"RootSectionRank\", rank, true);\n SetAnalyticsProp(data, \"event\", \"RootSectionDisplayType\", convertRootSectionDisplayType(properties.rootSectionName, properties.rootSectionDisplay ?? null), true);\n\n return data;\n}\n\nfunction convertRootSectionDisplayType(rootSectionName: string | undefined, display: ResourceDisplayType | null): AnalyticsKey | null {\n if (display == null) return null;\n switch (display) {\n case ResourceDisplayType.Grid:\n return \"Grid\";\n case ResourceDisplayType.List:\n return \"List\";\n case ResourceDisplayType.ListLarge:\n return \"LargeList\";\n case ResourceDisplayType.Scroller:\n return \"Scroller\";\n case ResourceDisplayType.LargeScroller:\n return \"LargeScroller\";\n case ResourceDisplayType.Single:\n return \"Single\";\n case ResourceDisplayType.LargeSingle:\n return \"LargeSingle\";\n case ResourceDisplayType.PromoSingle:\n return \"PromoSingle\";\n case ResourceDisplayType.Deeplink:\n case ResourceDisplayType.ListMedium:\n case ResourceDisplayType.Top:\n case ResourceDisplayType.Unknown:\n log.error({ code: \"web-211004-2247\", msg: DefaultLogMessage.UnexpectedValue, data: { display, rootSectionName } });\n return null;\n }\n display;\n}\n","import { SetAnalyticsProp, createAnalyticsData, SetFirstAnalyticsProp, IncrementAnalyticsProp } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { SearchResultAreaSource } from \"components/molecules/searchResultArea\";\n\nexport type AnalyticsSearchContentProperties = {\n searchName: string | null;\n searchLength: number | null;\n searchGroupRank: number | null;\n resultType: AnalyticsKey;\n};\n\nconst getResultType = (source: SearchResultAreaSource, preview: PreviewContextModel): AnalyticsKey => {\n if (source === SearchResultAreaSource.History) return \"History\";\n if (preview.section.type === ContentType.SearchMixedResults) return \"BestResult\";\n return \"Group\";\n};\n\nexport function getAnalyticsSearchContentProperties(criterion: string | null, source: SearchResultAreaSource, preview: PreviewContextModel): AnalyticsSearchContentProperties {\n const properties: AnalyticsSearchContentProperties = {\n searchName: criterion,\n searchLength: criterion?.length ?? null,\n searchGroupRank: preview.rank != null ? preview.rank + 1 : null,\n resultType: getResultType(source, preview)\n };\n\n return properties;\n}\n\nexport function convertAnalyticsSearchContentProperties(properties: AnalyticsSearchContentProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"SearchName\", properties.searchName as AnalyticsKey, true);\n SetAnalyticsProp(data, \"event\", \"SearchLength\", properties.searchLength, true);\n SetAnalyticsProp(data, \"event\", \"SearchGroupRank\", properties.searchGroupRank, true);\n SetAnalyticsProp(data, \"event\", \"ResultType\", properties.resultType);\n SetFirstAnalyticsProp(data, \"user\", \"FirstSearchContent\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastSearchContent\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfSearches\");\n\n return data;\n}\n","import type { AnalyticsData } from \"../../analyticsData\";\nimport { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { getNotificationRank, getNotificationIndex, getNotificationFeedFromState } from \"services/notificationFeed/helpers\";\nimport type { NotificationConversion, NotificationModel } from \"models/domain/NotificationModel\";\n\nfunction addSingleNotificationProperties(data: AnalyticsData, notification: NotificationModel) {\n const feed = getNotificationFeedFromState();\n\n let rank = feed ? getNotificationRank(feed, notification) : null;\n let index = feed ? getNotificationIndex(feed, notification) : null;\n\n if (index != null) index++;\n if (rank != null) rank++;\n\n SetAnalyticsProp(data, \"event\", \"NotificationID\", notification.id as AnalyticsKey);\n SetAnalyticsProp(data, \"event\", \"NotificationKind\", notification.notificationKind);\n SetAnalyticsProp(data, \"event\", \"NotificationType\", notification.notificationType);\n\n if (notification.eventType) {\n SetAnalyticsProp(data, \"event\", \"NotificationEventType\", notification.eventType as AnalyticsKey);\n }\n\n if (notification.eligibilityReasons) {\n SetAnalyticsProp(data, \"event\", \"EligibilityReasons\", notification.eligibilityReasons);\n }\n\n SetAnalyticsProp(data, \"event\", \"Number\", index);\n SetAnalyticsProp(data, \"event\", \"Rank\", rank);\n SetAnalyticsProp(data, \"event\", \"Score\", notification.score, true);\n\n SetAnalyticsProp(data, \"event\", \"PlayableID\", (notification.playContextId as AnalyticsKey) ?? null, true);\n SetAnalyticsProp(data, \"event\", \"PlayableType\", (notification.playable?.contentType as AnalyticsKey) ?? null, true);\n\n return data;\n}\n\nexport function getAnalyticsSingleNotificationAdded(notification: NotificationModel) {\n const data = createAnalyticsData();\n\n addSingleNotificationProperties(data, notification);\n\n return data;\n}\n\nexport function getAnalyticsSingleNotificationSeen(notification: NotificationModel) {\n const data = createAnalyticsData();\n\n addSingleNotificationProperties(data, notification);\n\n return data;\n}\n\nexport function getAnalyticsSingleNotificationConverted(notification: NotificationModel, conversion: NotificationConversion) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"Conversion\", conversion);\n addSingleNotificationProperties(data, notification);\n\n return data;\n}\n","import { SetAnalyticsProp, createAnalyticsData, IncrementAnalyticsProp, SetFirstAnalyticsProp } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\nimport { QueryError } from \"services/backend/backendService\";\nimport { getActivePageContext } from \"services/navigationStack/navigationStack\";\nimport { ContentPlaylistType } from \"models/app/resourceContextModel\";\nimport type { PageLoadError, PageLoadErrorType } from \"models/app/ViewPageError\";\nimport { ErrorPageType, PageLoadAppErrorType } from \"models/app/ViewPageError\";\nimport { getErrorPageType } from \"components/pages/errorPages/ErrorPage\";\n\nexport type AnalyticsViewPageProperties = {\n contentPlaylistType?: ContentPlaylistType;\n errorType?: PageLoadErrorType;\n error?: boolean;\n errorText?: string;\n errorPage?: ErrorPageType;\n preDeeplinkUrl?: string;\n};\n\nexport function getAnalyticsViewPageProperties(error: PageLoadError | null, preDeeplinkUrl: string | null): AnalyticsViewPageProperties {\n const page = getActivePageContext();\n if (!page) return {};\n\n const properties: AnalyticsViewPageProperties = {\n contentPlaylistType: page.extraInfo?.contentPlaylistType,\n preDeeplinkUrl: preDeeplinkUrl ?? undefined\n };\n\n if (error) {\n properties.error = true;\n properties.errorType = error.type;\n properties.errorText = error.message ?? undefined;\n properties.errorPage = getErrorPageType(error.type);\n }\n\n return properties;\n}\nexport function convertAnalyticsViewPageProperties(properties: AnalyticsViewPageProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"event\", \"ContentPlaylistType\", getContentPlaylistType(properties.contentPlaylistType), true);\n SetFirstAnalyticsProp(data, \"user\", \"FirstViewedPage\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastViewedPage\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfViewedPage\");\n SetAnalyticsProp(data, \"event\", \"DeeplinkUrl\", window.location.href as AnalyticsKey);\n if (properties.preDeeplinkUrl) SetAnalyticsProp(data, \"event\", \"PreDeeplinkUrl\", properties.preDeeplinkUrl as AnalyticsKey);\n\n SetAnalyticsProp(data, \"event\", \"Error\", properties.error ?? false);\n if (properties.error) {\n SetAnalyticsProp(data, \"event\", \"ErrorType\", getErrorType(properties.errorType));\n SetAnalyticsProp(data, \"event\", \"ErrorText\", properties.errorText as AnalyticsKey);\n SetAnalyticsProp(data, \"event\", \"ErrorPage\", getErrorPage(properties.errorPage));\n }\n return data;\n}\n\nfunction getContentPlaylistType(playlistType: ContentPlaylistType | undefined): AnalyticsKey | null {\n if (!playlistType) return null;\n\n switch (playlistType) {\n case ContentPlaylistType.Follow:\n return \"Follow\";\n case ContentPlaylistType.Own:\n return \"Own\";\n case ContentPlaylistType.Public:\n return \"Public\";\n }\n}\n\nfunction getErrorType(type: PageLoadErrorType | undefined): AnalyticsKey | null {\n if (!type) return null;\n\n switch (type) {\n case PageLoadAppErrorType.UrlSchemaNotRecognizedError:\n return \"UrlSchemaNotRecognizedError\";\n case QueryError.BrowserOfflineError:\n return \"OfflineError\";\n case QueryError.ContentNotFoundError:\n return \"ContentNotFoundError\";\n case QueryError.MultipleErrors:\n return \"MultipleErrors\";\n case QueryError.NetworkClientError:\n return \"NetworkClientError\";\n case QueryError.NetworkServerDownError:\n return \"NetworkServerDownError\";\n case QueryError.NetworkServerError:\n return \"NetworkServerError\";\n case QueryError.NotAvailableInSubscriptionError:\n return \"NotAvailableInSubscriptionError\";\n case QueryError.NetworkUnknownError:\n return \"NetworkUnknownError\";\n case QueryError.MapError:\n return \"MapError\";\n case QueryError.UnknownError:\n return \"UnknownError\";\n }\n type;\n}\n\nfunction getErrorPage(type: ErrorPageType | undefined): AnalyticsKey | null {\n if (!type) return null;\n\n switch (type) {\n case ErrorPageType.BackendDownErrorPage:\n return \"BackendDownErrorPage\";\n case ErrorPageType.DefaultErrorPage:\n return \"DefaultErrorPage\";\n case ErrorPageType.ContentNotFoundErrorPage:\n return \"ContentNotFoundErrorPage\";\n case ErrorPageType.NoConnectionErrorPage:\n return \"NoConnectionErrorPage\";\n }\n}\n","export * from \"./queueAddedPropertiesGroup\";\nexport * from \"./queueIntentPropertiesGroup\";\n","import type { AnalyticsQueueIntentPropertiesGroup } from \"./queueIntentPropertiesGroup\";\nimport type { AnalyticsResourceParentProperties } from \"../event/resourceParentProperties\";\nimport { getAnalyticsResourceParentProperties } from \"../event/resourceParentProperties\";\nimport type { PlayableParentModel } from \"models/domain\";\n\nexport interface AnalyticsQueueAddedPropertiesGroup extends AnalyticsQueueIntentPropertiesGroup {\n resourceParentProperties: AnalyticsResourceParentProperties;\n}\n\nexport function createQueueAddedAnalyticsData(queueIntentData: AnalyticsQueueIntentPropertiesGroup, parent: PlayableParentModel): AnalyticsQueueAddedPropertiesGroup {\n return {\n ...queueIntentData,\n resourceParentProperties: getAnalyticsResourceParentProperties(parent)\n };\n}\n","import type { AnalyticsPageProperties } from \"../event/pageProperties\";\nimport { getAnalyticsCurrentPageProperties } from \"../event/pageProperties\";\nimport type { AnalyticsRootPageProperties } from \"../event/rootPageProperties\";\nimport { getAnalyticsRootPageProperties } from \"../event/rootPageProperties\";\nimport type { AnalyticsRootPreviewProperties } from \"../event/rootPreviewProperties\";\nimport { getAnalyticsRootPreviewProperties } from \"../event/rootPreviewProperties\";\nimport type { AnalyticsRootSectionProperties } from \"../event/rootSectionProperties\";\nimport { getAnalyticsRootSectionProperties } from \"../event/rootSectionProperties\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\n\nexport interface AnalyticsQueueIntentPropertiesGroup {\n pageProperties: AnalyticsPageProperties;\n rootPageProperties: AnalyticsRootPageProperties;\n rootSectionProperties: AnalyticsRootSectionProperties;\n rootPreviewProperties: AnalyticsRootPreviewProperties;\n}\n\nexport function getAnalyticsQueueIntentPropertiesGroup(context: PreviewContextModel): AnalyticsQueueIntentPropertiesGroup {\n const group = {\n pageProperties: getAnalyticsCurrentPageProperties(),\n rootPageProperties: getAnalyticsRootPageProperties(context),\n rootSectionProperties: getAnalyticsRootSectionProperties(context),\n rootPreviewProperties: getAnalyticsRootPreviewProperties(context)\n };\n\n return group;\n}\n","import { createAnalyticsData, IncrementAnalyticsProp, SetAnalyticsProp, SetFirstAnalyticsProp } from \"../../analyticsData\";\nimport type { AnalyticsKey } from \"global/config\";\n\nexport async function getAnalyticsAddToPlaylistProperties(duplicateTracksAdded: null | \"all\" | \"unique\" | \"cancel\") {\n const data = createAnalyticsData();\n\n SetFirstAnalyticsProp(data, \"user\", \"FirstAddToPlaylist\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastAddToPlaylist\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfAddedToPlaylist\");\n\n SetAnalyticsProp(data, \"event\", \"DuplicatedTrackDialog\", !!duplicateTracksAdded);\n if (duplicateTracksAdded) {\n const val = duplicateTracksAdded[0].toUpperCase() + duplicateTracksAdded.substring(1);\n SetAnalyticsProp(data, \"event\", \"DuplicatedTrackAdded\", val as AnalyticsKey);\n }\n\n return data;\n}\n","export * from \"./userMyMusicProperties\";\nexport * from \"./userNotificationFeedProperties\";\nexport * from \"./userPlayErrorProperties\";\nexport * from \"./userPlayProperties\";\nexport * from \"./userProperties\";\n","import { SetAnalyticsProp, SetFirstAnalyticsProp, IncrementAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\n\nexport function getAnalyticsMyMusicAddedProperties() {\n const data = createAnalyticsData();\n\n SetFirstAnalyticsProp(data, \"user\", \"FirstAddToMyMusic\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastAddToMyMusic\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfAddedToMyMusic\");\n\n return data;\n}\n\nexport function getAnalyticsMyMusicRemovedProperties() {\n const data = createAnalyticsData();\n\n SetFirstAnalyticsProp(data, \"user\", \"FirstRemoveFromMyMusic\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastRemoveFromMyMusic\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfRemoveFromMyMusic\");\n\n return data;\n}\n","import { SetAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\nimport { getCurrentNotifications, getNotificationFeedFromState, getNotificationsCounts } from \"services/notificationFeed\";\n\nexport type AnalyticsNotificationFeedProperties = {\n numberOfCurrentNotifications: number;\n numberOfCurrentNotificationsSeen: number;\n numberOfCurrentNotificationsConverted: number;\n numberOfNotifications: number;\n numberOfNotificationsSeen: number;\n numberOfNotificationsConverted: number;\n numberOfPreviousNotifications: number;\n numberOfPreviousNotificationsSeen: number;\n numberOfPreviousNotificationsConverted: number;\n};\n\nexport function getAnalyticsNotificationFeedProperties(): AnalyticsNotificationFeedProperties {\n const feed = getNotificationFeedFromState();\n const all = getNotificationsCounts(feed.notifications);\n const currentNotifications = getCurrentNotifications();\n const current = getNotificationsCounts(currentNotifications.currentNotifications);\n const previous = getNotificationsCounts(currentNotifications.previousNotifications);\n\n return {\n numberOfNotifications: all.total,\n numberOfNotificationsSeen: all.seen,\n numberOfNotificationsConverted: all.converted,\n\n numberOfCurrentNotifications: current.total,\n numberOfCurrentNotificationsSeen: current.seen,\n numberOfCurrentNotificationsConverted: current.converted,\n\n numberOfPreviousNotifications: previous.total,\n numberOfPreviousNotificationsSeen: previous.seen,\n numberOfPreviousNotificationsConverted: previous.converted\n };\n}\n\nexport function convertNotificationFeedProperties(properties: AnalyticsNotificationFeedProperties) {\n const data = createAnalyticsData();\n\n SetAnalyticsProp(data, \"user\", \"NumberOfNotifications\", properties.numberOfNotifications);\n SetAnalyticsProp(data, \"user\", \"NumberOfNotificationsSeen\", properties.numberOfNotificationsSeen);\n SetAnalyticsProp(data, \"user\", \"NumberOfNotificationsConverted\", properties.numberOfNotificationsConverted);\n\n SetAnalyticsProp(data, \"user\", \"NumberOfCurrentNotifications\", properties.numberOfCurrentNotifications);\n SetAnalyticsProp(data, \"user\", \"NumberOfCurrentNotificationsSeen\", properties.numberOfCurrentNotificationsSeen);\n SetAnalyticsProp(data, \"user\", \"NumberOfCurrentNotificationsConverted\", properties.numberOfCurrentNotificationsConverted);\n\n SetAnalyticsProp(data, \"user\", \"NumberOfPreviousNotifications\", properties.numberOfPreviousNotifications);\n SetAnalyticsProp(data, \"user\", \"NumberOfPreviousNotificationsSeen\", properties.numberOfPreviousNotificationsSeen);\n SetAnalyticsProp(data, \"user\", \"NumberOfPreviousNotificationsConverted\", properties.numberOfPreviousNotificationsConverted);\n\n return data;\n}\n","import { SetAnalyticsProp, SetFirstAnalyticsProp, IncrementAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\n\nexport function getAnalyticsUserPlayErrorProperties() {\n const data = createAnalyticsData();\n\n SetFirstAnalyticsProp(data, \"user\", \"FirstPlayedContentError\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastPlayedContentError\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfPlayedContentError\");\n\n return data;\n}\n","import { SetAnalyticsProp, SetFirstAnalyticsProp, IncrementAnalyticsProp, createAnalyticsData } from \"../../analyticsData\";\n\nexport function getAnalyticsUserPlayProperties() {\n const data = createAnalyticsData();\n\n SetFirstAnalyticsProp(data, \"user\", \"FirstPlayedContent\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastPlayedContent\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfPlayedContent\");\n\n return data;\n}\n","import { UserProfileModel } from \"models/app\";\nimport { createAnalyticsData, IncrementAnalyticsProp, SetAnalyticsProp, SetFirstAnalyticsProp } from \"../../analyticsData\";\nimport { AnalyticsKey } from \"global/config\";\n\nexport function getCreateProfileActionProperties(profile: UserProfileModel, entrypoint: AnalyticsKey) {\n const data = createAnalyticsData();\n\n SetFirstAnalyticsProp(data, \"user\", \"FirstCreateProfile\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastCreateProfile\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfCreateProfile\");\n\n SetAnalyticsProp(data, \"event\", \"EntryPoint\", entrypoint as any);\n\n SetAnalyticsProp(data, \"event\", \"ProfileColor\", profile.color as any);\n SetAnalyticsProp(data, \"event\", \"ProfileName\", profile.title as any);\n\n return data;\n}\n\nexport function getEditProfileActionProperties(profile: UserProfileModel, oldProfile: UserProfileModel) {\n const data = createAnalyticsData();\n\n SetFirstAnalyticsProp(data, \"user\", \"FirstEditProfile\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastEditProfile\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfEditProfile\");\n\n SetAnalyticsProp(data, \"event\", \"NameChanged\", profile.title !== oldProfile.title);\n SetAnalyticsProp(data, \"event\", \"ColorChanged\", profile.color !== oldProfile.color);\n\n SetAnalyticsProp(data, \"event\", \"ProfileColor\", profile.color as any);\n SetAnalyticsProp(data, \"event\", \"ProfileName\", profile.title as any);\n SetAnalyticsProp(data, \"event\", \"MainProfile\", profile.master);\n\n return data;\n}\n\nexport function getDeleteProfileActionProperties(profile: UserProfileModel) {\n const data = createAnalyticsData();\n\n SetFirstAnalyticsProp(data, \"user\", \"FirstDeleteProfile\", new Date());\n SetAnalyticsProp(data, \"user\", \"LastDeleteProfile\", new Date());\n IncrementAnalyticsProp(data, \"user\", \"NumberOfDeleteProfile\");\n\n SetAnalyticsProp(data, \"event\", \"ProfileName\", profile.title as any);\n\n return data;\n}\n","import { createAnalyticsData, SetAnalyticsProp } from \"../../analyticsData\";\nimport { getFavoritesStatisticsFromCache } from \"services/favorites/favoritesCache\";\nimport { getCurrentProfile, getIsLoggedInFromStateImmediate, hasPermissionFromToken } from \"services/user\";\nimport { getIsEndlessPlayOnFromState } from \"components/shared/hooks\";\n\nexport async function getAnalyticsUserProperties() {\n const data = createAnalyticsData();\n\n if (getIsLoggedInFromStateImmediate()) {\n const stats = await getFavoritesStatisticsFromCache();\n if (stats) {\n SetAnalyticsProp(data, \"user\", \"NumberOfCurrentFavoriteArtists\", stats.artistCount);\n SetAnalyticsProp(data, \"user\", \"NumberOfCurrentFavouriteAlbums\", stats.albumCount);\n SetAnalyticsProp(data, \"user\", \"NumberOfCurrentFavouritePlaylists\", stats.playlistCount);\n SetAnalyticsProp(data, \"user\", \"NumberOfCurrentFavouriteTracks\", stats.trackCount);\n }\n }\n // addData_Set(map, \"user\",ananlyticsKeys[\"Number Of Current Downloaded Tracks\"], undefined); // todo Brian implement\n // addData_Set(map, \"user\",ananlyticsKeys[\"Number Of Current Favourite Playlist tracks\"], undefined); // todo Brian implement\n // addData_Set(map, \"user\",ananlyticsKeys[\"Number Of Current Private Playlists\"], undefined); // todo Brian implement\n // addData_Set(map, \"user\",ananlyticsKeys[\"Number Of Current Private Playlist Tracks\"], undefined); // todo Brian implement\n // addData_Set(map, \"user\",ananlyticsKeys[\"Number Of Current Private Public Playlists\"], undefined); // todo Brian implement\n // addData_Set(map, \"user\",ananlyticsKeys[\"Number Of Current Private Public Playlist Tracks\"], undefined); // todo Brian implement\n SetAnalyticsProp(data, \"user\", \"EndlessPlayWeb\", getIsEndlessPlayOnFromState());\n SetAnalyticsProp(data, \"user\", \"SoundQualityWeb\", \"High\");\n\n const hasProfiles = hasPermissionFromToken(\"prof\");\n SetAnalyticsProp(data, \"user\", \"ProfileAccess\", hasProfiles);\n SetAnalyticsProp(data, \"user\", \"HifiAccess\", hasPermissionFromToken(\"cd\"));\n if (hasProfiles) {\n SetAnalyticsProp(data, \"user\", \"MainProfile\", getCurrentProfile()?.master ?? false);\n }\n\n return data;\n}\n","import { logQueueActionEvent } from \"./logQueueActionEvent\";\nimport type { QueueActionType } from \"../properties/event/queueActionProperties\";\n\nexport function logFavoriteUnfavoriteEvent(operation: string) {\n const type: QueueActionType = operation === \"add\" ? \"FavoriteTrack\" : \"UnfavoriteTrack\";\n logQueueActionEvent(type);\n}\n","import { logQueueActionEvent } from \"./logQueueActionEvent\";\nimport type { QueueActionType } from \"../properties/event/queueActionProperties\";\nimport { getDesktopQueueOpen } from \"components/shared/hooks\";\n\nexport function logOpenCloseQueueViewEvent() {\n const queueOpen = getDesktopQueueOpen();\n const type: QueueActionType = queueOpen ? \"OpenQueueView\" : \"CloseQueueView\";\n logQueueActionEvent(type, queueOpen);\n}\n","import { getAnalyticsQueueActionEvent } from \"../events/queueAction\";\nimport type { QueueActionType } from \"../properties/event/queueActionProperties\";\nimport { dispatch } from \"global\";\nimport { LOGGING_EVENT_ANALYTICS } from \"global/actions\";\nimport { getDesktopQueueOpen } from \"components/shared/hooks\";\n\nexport async function logQueueActionEvent(type: QueueActionType, queueOpen?: boolean) {\n if (queueOpen == undefined) queueOpen = getDesktopQueueOpen();\n const data = await getAnalyticsQueueActionEvent(type, queueOpen);\n dispatch({ type: LOGGING_EVENT_ANALYTICS, payload: { name: \"QueueAction\", data } });\n}\n","import { logQueueActionEvent } from \"./logQueueActionEvent\";\nimport type { QueueActionType } from \"../properties/event/queueActionProperties\";\nimport { store } from \"global\";\n\nexport function logQueueHistoryOnOffEvent() {\n const { historyOpen } = store.getState().queue;\n const type: QueueActionType = historyOpen ? \"TurnHistoryOn\" : \"TurnHistoryOff\";\n logQueueActionEvent(type);\n}\n","import { logQueueActionEvent } from \"./logQueueActionEvent\";\nimport { getRepeatStatusAnalyticsKey } from \"../properties/event/queueActionProperties\";\nimport type { QueueActionType } from \"../properties/event/queueActionProperties\";\nimport { store } from \"global\";\nimport { debounce } from \"services/cancellation/debounce\";\n\nconst debounceMs = 200;\n\nfunction logRepeatChangeEvent() {\n const { repeat } = store.getState().player;\n const type: QueueActionType = getRepeatStatusAnalyticsKey(repeat);\n logQueueActionEvent(type);\n}\n\nexport const tryLogRepeatChangeEvent = debounce(logRepeatChangeEvent, debounceMs)[0];\n","import { logQueueActionEvent } from \"./logQueueActionEvent\";\nimport type { QueueActionType } from \"../properties/event/queueActionProperties\";\nimport { store } from \"global\";\nimport { ShuffleState } from \"models/view\";\n\nexport function logShuffleUnshuffleEvent() {\n const { shuffle } = store.getState().player;\n const isActionFromDesktopPlayer = shuffle !== ShuffleState.Light;\n if (!isActionFromDesktopPlayer) return;\n const type: QueueActionType = shuffle === ShuffleState.Off ? \"Unshuffle\" : \"Shuffle\";\n logQueueActionEvent(type);\n}\n","import { logFavoriteUnfavoriteEvent } from \"./logFavoriteUnfavoriteEvent\";\nimport { logOpenCloseQueueViewEvent } from \"./logOpenCloseQueueViewEvent\";\nimport { logQueueActionEvent } from \"./logQueueActionEvent\";\nimport { logQueueHistoryOnOffEvent } from \"./logQueueHistoryOnOffEvent\";\nimport { tryLogRepeatChangeEvent } from \"./logRepeatChangeEvent\";\nimport { logShuffleUnshuffleEvent } from \"./logShuffleUnshuffleEvent\";\nimport { messageBus } from \"global\";\nimport {\n PLAYER_SHUFFLE,\n PLAYER_REPEAT,\n PLAYQUEUE_CLEAR,\n PLAYQUEUE_REMOVE_TRACK,\n PLAYER_NEXT,\n PLAYER_PREVIOUS,\n PLAYER_REWIND,\n PLAYQUEUE_HISTORY_TOGGLE,\n ANALYTICS_PLAYQUEUE_SAVE_TO_PLAYLIST,\n SET_DESKTOP_QUEUE_OPEN,\n CONTEXT_MENU_OPEN,\n PLAYER_TOGGLE_FAVORITE,\n SET_USER_DRAGGING,\n PLAYQUEUE_KEEP_PRIORITY_LANE,\n PLAYQUEUE_CLEAR_PRIORITY_LANE\n} from \"global/actions\";\nimport { ContentType } from \"models/ModelType\";\n\nexport const initQueueActionAnalyticsService = () => {\n messageBus.subscribeEvery(PLAYER_SHUFFLE, () => {\n logShuffleUnshuffleEvent();\n });\n\n messageBus.subscribeEvery(PLAYER_REPEAT, () => {\n tryLogRepeatChangeEvent({});\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_CLEAR, () => {\n logQueueActionEvent(\"ClearQueue\", true);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_REMOVE_TRACK, () => {\n logQueueActionEvent(\"RemoveItem\", true);\n });\n\n messageBus.subscribeEvery(PLAYER_NEXT, () => {\n logQueueActionEvent(\"SkipForward\");\n });\n\n messageBus.subscribeEvery(PLAYER_PREVIOUS, () => {\n logQueueActionEvent(\"SkipBack\");\n });\n\n messageBus.subscribeEvery(PLAYER_REWIND, () => {\n logQueueActionEvent(\"SkipToStart\");\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_HISTORY_TOGGLE, () => {\n logQueueHistoryOnOffEvent();\n });\n\n messageBus.subscribeEvery(ANALYTICS_PLAYQUEUE_SAVE_TO_PLAYLIST, () => {\n logQueueActionEvent(\"SaveQueueAsPlaylist\");\n });\n\n messageBus.subscribeEvery(SET_DESKTOP_QUEUE_OPEN, (msg) => {\n if (msg.payload.type !== ContentType.Player) return;\n logOpenCloseQueueViewEvent();\n });\n\n messageBus.subscribeEvery(CONTEXT_MENU_OPEN, (msg) => {\n if (msg.payload.context?.section.type !== ContentType.Player) return;\n logQueueActionEvent(\"OpenContextMenu\");\n });\n\n messageBus.subscribeEvery(PLAYER_TOGGLE_FAVORITE, (msg) => {\n const { section, operation } = msg.payload;\n if (section?.type !== ContentType.Player) return;\n logFavoriteUnfavoriteEvent(operation);\n });\n messageBus.subscribeEvery(SET_USER_DRAGGING, (msg) => {\n const type = msg.payload.item?.context.section.type;\n if (type !== ContentType.Queue) return;\n logQueueActionEvent(\"ReorderQueue\");\n });\n messageBus.subscribeEvery(PLAYQUEUE_KEEP_PRIORITY_LANE, () => {\n logQueueActionEvent(\"KeepPriorityTracks\");\n });\n messageBus.subscribeEvery(PLAYQUEUE_CLEAR_PRIORITY_LANE, () => {\n logQueueActionEvent(\"DiscardPriorityTracks\");\n });\n};\n","import type { FirebaseApp } from \"firebase/app\";\nimport type { FirebasePerformance } from \"firebase/performance\";\n\ntype FirebaseGetPerformance = (app: FirebaseApp | null) => FirebasePerformance;\nexport function getFbPerformance(fbApp: FirebaseApp | null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const getPerformance: FirebaseGetPerformance | null = (<any>window).trackingFbase.getPerformance ?? null;\n\n const performance = getPerformance ? getPerformance(fbApp) : null;\n return performance;\n}\n","export * from \"./analyticsService\";\nexport * from \"./initConsoleLoggerService\";\nexport * from \"./initLoggerService\";\nexport * from \"./initFBLoggerService\";\nexport * from \"./initFBTraceService\";\nexport * from \"./initLyricsReportService\";\nexport * from \"./initPlaybackReportSendService\";\nexport * from \"./initPlaybackReportService\";\nexport * from \"./initMPLoggerService\";\nexport * from \"./kibanaLoggerService\";\n","import { LogLevel } from \"./initLoggerService\";\nimport { messageBus } from \"global\";\nimport { EVENT_MESSAGE } from \"global/actions\";\n\nexport const initConsoleLoggerService = () => {\n messageBus.subscribeEvery(EVENT_MESSAGE, (msg) => {\n const { message } = msg.payload;\n switch (message.level) {\n case LogLevel.Debug: {\n console.info(message.msg);\n break;\n }\n case LogLevel.Info: {\n console.info(message.msg, message);\n break;\n }\n case LogLevel.Warning: {\n console.warn(message.msg, message);\n break;\n }\n case LogLevel.Error: {\n console.error(message.msg, message);\n break;\n }\n }\n });\n};\n","import type { Analytics, AnalyticsCallOptions } from \"firebase/analytics\";\nimport type { FirebaseApp, FirebaseOptions } from \"firebase/app\";\nimport { getMessageLogFields } from \".\";\nimport { DefaultLogMessage, log, LogLevel } from \"./initLoggerService\";\nimport { messageBus } from \"global\";\nimport type { WebAppBrand, WebAppEnvironment } from \"shared/models\";\nimport { LOGGING_EVENT_MESSAGE } from \"global/actions\";\nimport { environment } from \"services/environment\";\n\nlet fbApp: FirebaseApp | null | undefined = null;\n\ntype GetConfig = (webAppBrand: WebAppBrand, webAppEnvironment: WebAppEnvironment) => FirebaseOptions;\ntype FirebaseInitializeApp = (options: FirebaseOptions) => FirebaseApp;\ntype FirebaseInitializeAnalytics = (app: FirebaseApp) => Analytics;\ntype FirebaseLogEvent = (analyticsInstance: Analytics, eventName: string, eventParams?: { key: string; value: string }[], options?: AnalyticsCallOptions) => void;\n\nconst initConfig = () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fb_GetConfig: GetConfig | null = (<any>window).trackingFbase?.getConfig ?? null;\n if (!fb_GetConfig) {\n log.warn({ code: \"web-220505-1343\", msg: \"blocked\" });\n return null;\n }\n\n const fbOptions = fb_GetConfig(environment.webAppBrand, environment.runtimeEnvironment);\n if (!fbOptions) {\n log.error({ code: \"web-220505-1344\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n return fbOptions;\n } catch (e) {\n log.error({ code: \"web-220601-1044\", msg: \"exception\", error: e });\n return null;\n }\n};\n\nconst initFbApp = (config: FirebaseOptions | null) => {\n if (!config) return config;\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const initializeApp: FirebaseInitializeApp | null = (<any>window).trackingFbase?.initializeApp ?? null;\n if (!initializeApp) {\n log.warn({ code: \"web-220429-1707\", msg: \"blocked\" });\n return null;\n }\n\n const fbApp = initializeApp(config);\n return fbApp;\n } catch (e) {\n log.error({ code: \"web-220601-1055\", msg: \"exception\", error: e });\n return null;\n }\n};\n\nexport const getOrCreateFbApp = () => {\n try {\n if (!fbApp) {\n const config = initConfig();\n fbApp = initFbApp(config);\n }\n return fbApp;\n } catch (e) {\n log.error({ code: \"web-210519-1542\", msg: \"exception\", error: e });\n return null;\n }\n};\n\nconst initAnalytics = (fbApp: FirebaseApp): Analytics | null => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const initializeAnalytics: FirebaseInitializeAnalytics | null = (<any>window).trackingFbase?.initializeAnalytics ?? null;\n if (!initializeAnalytics) {\n log.warn({ code: \"web-220502-1253\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n\n return initializeAnalytics(fbApp);\n } catch (e) {\n log.error({ code: \"web-211026-1542\", msg: DefaultLogMessage.UnexpectedNull, error: e });\n return null;\n }\n};\nexport const initFbLoggerService = () => {\n const fbApp = getOrCreateFbApp();\n if (!fbApp) return;\n const analytics = initAnalytics(fbApp);\n if (!analytics) return;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const logEvent: FirebaseLogEvent | null = (<any>window).trackingFbase?.logEvent ?? null;\n if (!logEvent) {\n log.warn({ code: \"web-220429-1443\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n const getEventName = (level: LogLevel) => {\n switch (level) {\n case LogLevel.Warning:\n return \"web_warning\";\n case LogLevel.Error:\n return \"web_error\";\n default:\n return null;\n }\n };\n messageBus.subscribeEvery(LOGGING_EVENT_MESSAGE, (msg) => {\n const logToFbaseAnalytics = () => {\n const { message } = msg.payload;\n\n const logName = getEventName(message.level);\n if (logName == null) return;\n\n try {\n const fields = getMessageLogFields(message, \"Web Log Field\");\n logEvent(analytics, logName, fields);\n } catch (e) {\n log.error({ code: \"web-211026-1442\", msg: \"couldn't log to fbase\", error: e });\n }\n };\n setTimeout(() => logToFbaseAnalytics(), 0);\n });\n};\n","import type { FirebasePerformance, PerformanceTrace } from \"firebase/performance\";\nimport { getFbPerformance } from \"./getFbPerformance\";\nimport { getOrCreateFbApp } from \"./initFBLoggerService\";\nimport { DefaultLogMessage, log } from \"./initLoggerService\";\nimport { messageBus } from \"global\";\nimport { TRACING_NEW_TRACE } from \"global/actions\";\nimport { fbaseConfig } from \"global/constants\";\n\ntype FirebaseTrace = (performance: FirebasePerformance, name: string) => PerformanceTrace;\n\nexport const initFbPerformance = () => {\n const fbApp = getOrCreateFbApp();\n\n if (!fbApp) {\n log.warn({ code: \"web-210831-1649\", msg: \"blocked\" });\n return null;\n }\n try {\n const performance = getFbPerformance(fbApp);\n if (!performance) {\n log.warn({ code: \"web-210519-1611\", msg: \"blocked\" });\n return;\n }\n\n performance.instrumentationEnabled = false;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fbTrace: FirebaseTrace | null = (<any>window).trackingFbase?.trace;\n if (!fbTrace) {\n log.warn({ code: \"web-220502-1140\", msg: \"blocked\" });\n return;\n }\n\n messageBus.subscribeEvery(TRACING_NEW_TRACE, (msg) => {\n const { trace } = msg.payload;\n\n const performanceTrace = fbTrace(performance, trace.name);\n\n trace.startCallbacks.push(() => performanceTrace.start());\n\n trace.putAttributeCallbacks.push((attribute) => {\n const value = attribute.value.toString().substring(0, fbaseConfig.MaxTraceValueLength);\n if (value.length === 0) {\n log.error({ code: \"web-220426-1601\", msg: DefaultLogMessage.UnexpectedEmptyString });\n return;\n }\n performanceTrace.putAttribute(attribute.type, value);\n });\n\n trace.stopCallbacks.push(() => performanceTrace.stop());\n });\n } catch (e) {\n log.error({ code: \"web-211026-1611\", msg: DefaultLogMessage.UnexpectedNull, error: e });\n }\n};\n","import { dispatch, messageBus, store } from \"global\";\nimport type { Action } from \"global/actions\";\nimport { EVENT_MESSAGE, LOGGING_EVENT_MESSAGE } from \"global/actions\";\nimport { getAppProperties } from \"services/app/appService\";\nimport { throttle } from \"services/cancellation/throttle\";\n\nexport enum DefaultLogMessage {\n NotImplemented = \"NotImplemented\",\n UnexpectedNull = \"UnexpectedNull\",\n UnexpectedEmptyString = \"UnexpectedEmptyString\",\n UnexpectedValue = \"UnexpectedValue\"\n}\n\nexport type LogCode = `web-${number}-${number}`;\n\nexport enum LogLevel {\n Debug = \"Debug\",\n Info = \"Info\",\n Warning = \"Warning\",\n Error = \"Error\"\n}\n\nexport interface LogMessage {\n code: LogCode;\n correlationId?: string;\n msg: string | DefaultLogMessage;\n level: LogLevel;\n data?: Record<string, unknown>;\n error?: Error | unknown;\n report?: boolean;\n tags: LogTag[];\n}\n\nexport interface LogMessageEntry {\n appVersion: string;\n messageCode: LogCode;\n correlationId?: string;\n data?: Record<string, unknown>;\n hostname: string;\n installationId: string;\n language: string;\n level: LogLevel;\n message: string;\n platform: string;\n stack?: string;\n time: number;\n timeFormatted: string;\n url: string;\n userAgent: string;\n userId: string | null;\n}\n\nconst createLogMessageEntry = ({ msg, code, correlationId, error, level, data }: LogMessage): LogMessageEntry => {\n const now = new Date();\n\n const userId = store.getState().user.id ?? null;\n const timeFormatted = now.toString();\n const stack = (error as Error)?.stack ?? (JSON.stringify(new Error().stack) as string | undefined);\n const hostname = window.location.hostname;\n const url = window.location.href;\n\n const { appVersion, installationId, language, platform, userAgent } = getAppProperties();\n\n return {\n appVersion,\n messageCode: code,\n correlationId,\n data,\n hostname,\n installationId,\n language,\n level,\n message: msg,\n platform,\n stack,\n time: now.getTime(),\n timeFormatted,\n url,\n userAgent,\n userId\n };\n};\nexport interface LogProps {\n code: LogCode;\n msg: string | DefaultLogMessage;\n data?: Record<string, unknown>;\n tags?: LogTag[];\n error?: Error | unknown;\n report?: boolean;\n correlationId?: string;\n}\n\nexport const log = {\n simple: ({ code, msg, data, tags = [LogTag.Info], error }: LogProps) => {\n if (shoudLogTag(tags)) dispatch({ type: EVENT_MESSAGE, payload: { message: { code, msg, data, level: LogLevel.Debug, tags, error } } });\n },\n info: ({ code, msg, data, tags = [LogTag.Info], error, report }: LogProps) => {\n if (shoudLogTag(tags)) dispatch({ type: EVENT_MESSAGE, payload: { message: { code, msg, data, level: LogLevel.Info, tags, error, report } } });\n },\n warn: ({ code, msg, data, tags = [LogTag.Info], error }: LogProps) => {\n dispatch({ type: EVENT_MESSAGE, payload: { message: { code, msg, data, level: LogLevel.Warning, tags, error } } });\n },\n error: ({ code, msg, data, tags = [LogTag.Info], error, correlationId }: LogProps) => {\n dispatch({ type: EVENT_MESSAGE, payload: { message: { code, msg, data, level: LogLevel.Error, tags, error, correlationId } } });\n },\n debug: (tags: LogTag[] = [LogTag.Info], logPropsFn: () => LogProps, level: LogLevel = LogLevel.Info) => {\n if (!shoudLogTag(tags)) return;\n const logProps = logPropsFn();\n\n dispatch({ type: EVENT_MESSAGE, payload: { message: { ...logProps, level, tags } } });\n }\n};\n\nfunction shoudLogTag(tags: LogTag[]): boolean {\n if (tags.length === 0) return true;\n const enabledLogTypes = store.getState().controlPanel.enabledLogTypes;\n return tags.some((tag) => enabledLogTypes.includes(tag));\n}\n\nexport enum LogTag {\n Dispatch = \"Dispatch\",\n Playback = \"Playback\",\n Chromecast = \"Chromecast\",\n RemoteConfig = \"RemoteConfig\",\n Info = \"Info\",\n Playlist = \"Playlist\",\n AppSetting = \"AppSetting\",\n Notifications = \"Notifications\",\n NavigationStack = \"NavigationStack\",\n User = \"User\",\n Collection = \"Collection\",\n Subscriptions = \"Subscriptions\"\n}\n\nexport const initEventLogService = () => {\n messageBus.subscribeEvery(EVENT_MESSAGE, (msg) => {\n const { message } = msg.payload;\n\n if (!shouldReport(message.report, message.level)) return;\n if (throtteLog(message.code)) return;\n\n const loggerErrorEvent = createLogMessageEntry(message);\n dispatch({ type: LOGGING_EVENT_MESSAGE, payload: { message: loggerErrorEvent } });\n });\n\n messageBus.subscribeAll((message) => {\n const enabledLogTypes = store?.getState()?.controlPanel.enabledLogTypes ?? [];\n const log = enabledLogTypes.findIndex((item) => item === LogTag.Dispatch) !== -1;\n\n if (!log) return;\n\n const action = message as Action;\n console.info(\"Dispatch\", action.type, \"payload\" in action ? action.payload : undefined);\n });\n};\n\nconst throttle1 = throttle();\nconst throttle2 = throttle();\nconst overflowCode = \"web-220322-1009\";\n\nfunction shouldReport(report: boolean | undefined, level: LogLevel) {\n if (report) return true;\n if (level != LogLevel.Warning && level != LogLevel.Error) return false;\n return true;\n}\n\nfunction throtteLog(code: string): boolean {\n if (code !== overflowCode) {\n if (throttle1.stop(10, 60 * 1000)) {\n // max 10 logs per minute\n log.error({ code: overflowCode, msg: \"log overflow\", data: { \"log overflow code\": code } });\n return true;\n }\n throttle1.register();\n } else {\n if (throttle2.stop(1, 60 * 1000)) return true; // max 1 overflow log per minute\n throttle2.register();\n }\n return false;\n}\n","import { messageBus } from \"global\";\nimport { DISPLAYED_LYRICS } from \"global/actions\";\nimport { getAppSession } from \"services/appSession\";\nimport { getPendingLyricReports, savePendingLyricReports, type LyricReport } from \"services/appSession/operations/lyricReports\";\nimport { mutateReportLyrics } from \"services/backend\";\nimport { DisplayType, SynchronizationType } from \"generated/graphql-types\";\n\nconst initialDelayInSeconds = 10;\nconst maxDelayInSeconds = 120;\nlet delayInSeconds = initialDelayInSeconds;\n\nexport async function initLyricsReportService() {\n messageBus.subscribeEvery(DISPLAYED_LYRICS, async (msg) => {\n sendOrSaveReport({\n displayType: msg.payload.sync == SynchronizationType.Lines ? DisplayType.Sync : DisplayType.Static,\n displayedAt: new Date().toISOString(),\n lyricsId: msg.payload.lyricsId,\n trackId: msg.payload.playable.id\n })\n });\n setTimeout(trySendPendingReports, delayInSeconds * 1000);\n}\n\nasync function sendOrSaveReport(report: LyricReport) {\n try {\n const ok = await mutateReportLyrics({ report });\n if (!ok) throw new Error(\"Error sending lyrics report.\");\n }\n catch (e) {\n const storageId = getAppSession().storageId;\n const reports = getPendingLyricReports(storageId).slice(-999); // basic sanity-check, lets never store more than 1000 pending lyric-reports\n reports.push(report);\n savePendingLyricReports(storageId, reports);\n }\n}\n\nasync function trySendPendingReports() {\n try {\n let count = 5; // basic sanity-check, lets never try to save more then 5 in a row\n const storageId = getAppSession().storageId;\n while (count > 0) {\n count--;\n let reports = getPendingLyricReports(storageId);\n if (reports.length == 0) return;\n\n try {\n const report = reports[0];\n const ok = await mutateReportLyrics({ report });\n if (!ok) throw new Error(\"Error sending lyrics report.\");\n delayInSeconds = initialDelayInSeconds;\n }\n catch (e) {\n delayInSeconds = Math.min(delayInSeconds * 2, maxDelayInSeconds);\n console.log(`Failed to re-send lyric report, increasing retry-delay to ${delayInSeconds} seconds.`);\n return;\n }\n\n reports = getPendingLyricReports(storageId).slice(1); // fetch again in case it was mutated while we were waiting\n savePendingLyricReports(storageId, reports);\n }\n }\n finally {\n setTimeout(trySendPendingReports, delayInSeconds * 1000);\n }\n}","/* eslint-disable import/no-named-as-default-member */\n\nimport type { Config, OverridedMixpanel } from \"mixpanel-browser\";\nimport { allowUserAnalytics, getMessageLogFields, LogLevel } from \".\";\nimport type { AnalyticsProp } from \"./analytics/analyticsData\";\nimport { DefaultLogMessage, log } from \"./initLoggerService\";\nimport { messageBus, store } from \"global\";\nimport { WebAppEnvironment } from \"shared/models\";\nimport { LOGGING_EVENT_ANALYTICS, LOGGING_EVENT_MESSAGE } from \"global/actions\";\nimport { analyticsKeys } from \"global/config\";\nimport { mpanelConfigDevelopment, mpanelConfigProduction } from \"global/constants/mpanel\";\nimport { environment } from \"services/environment\";\n\nlet currentIdentifyId: string | null = null;\n\nconst initMpanel = (key: string) => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const trackingMpanel: any | null = (<any>window).trackingMpanel ?? null;\n if (!trackingMpanel) {\n console.error({ code: \"web-220603-1221\", msg: \"blocked\" });\n return undefined;\n }\n const mpanel: OverridedMixpanel | null = trackingMpanel.mp ?? null;\n if (!mpanel) {\n console.error({ code: \"web-220502-1547\", msg: DefaultLogMessage.UnexpectedNull });\n return undefined;\n }\n\n mpanel.init(key, getConfig());\n return mpanel;\n } catch (e) {\n console.error({ code: \"web-220217-1322\", msg: \"could not initiate\", e });\n return null;\n }\n};\nexport const initMpLoggerService = () => {\n const key = getKey();\n const mpanel = initMpanel(key);\n if (mpanel === undefined) return;\n\n messageBus.subscribeEvery(LOGGING_EVENT_MESSAGE, (msg) => {\n const logToMpanel = () => {\n const { message } = msg.payload;\n if (message.level === LogLevel.Debug || message.level === LogLevel.Info) return;\n\n const logName = (() => {\n switch (message.level) {\n case LogLevel.Warning:\n return \"Web Warning\";\n case LogLevel.Error:\n return \"Web Error\";\n }\n })();\n if (!mpanel) {\n log.error({ code: \"web-220502-1548\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n try {\n const fields = getMessageLogFields(message, \"Web Log Field\");\n mpanel?.track(logName, fields);\n } catch (e) {\n log.error({ code: \"web-220217-1324\", msg: \"couldn't log\", error: e });\n }\n };\n\n setTimeout(() => logToMpanel(), 0);\n });\n\n messageBus.subscribeEvery(LOGGING_EVENT_ANALYTICS, (msg) => {\n if (!allowUserAnalytics()) return;\n if (!mpanel) {\n log.error({ code: \"web-220502-1549\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n try {\n const data = msg.payload.data.data;\n const eventName = msg.payload.name;\n\n if (msg.payload.name !== \"LogOut\") {\n const trackingId = store.getState().user.trackingId ?? null;\n if (trackingId == null) {\n log.error({ code: \"web-211003-1755\", msg: \"no trackingId\" });\n return;\n }\n\n if (trackingId != currentIdentifyId) {\n currentIdentifyId = trackingId;\n mpanel.identify(trackingId);\n }\n }\n\n const convert = (target: AnalyticsProp[\"target\"], mode: AnalyticsProp[\"mode\"]) => {\n const use = data.filter((item) => item[1].target == target && item[1].mode === mode);\n use.forEach((used) => data.splice(data.indexOf(used), 1));\n const arr = use.map((item) => [item[0], item[1].data]) as [string, AnalyticsProp[\"data\"]][];\n const obj = Object.fromEntries(arr);\n\n return obj;\n };\n\n mpanel.register(convert(\"app\", \"set\"));\n mpanel.register_once(convert(\"app\", \"first\"));\n mpanel.people.set(convert(\"user\", \"set\"));\n mpanel.people.set_once(convert(\"user\", \"first\"));\n mpanel.people.increment(convert(\"user\", \"increment\"));\n mpanel.track(analyticsKeys[eventName], convert(\"event\", \"set\"));\n\n if (data.length !== 0) log.error({ code: \"web-211004-1553\", msg: \"props not sent\", data: { props: data } });\n } catch (e) {\n log.error({ code: \"web-211029-1119\", msg: \"mp error\", error: e });\n }\n });\n};\n\nfunction getKey(): string {\n switch (environment.runtimeEnvironment) {\n case WebAppEnvironment.Development:\n return mpanelConfigDevelopment.apiKey;\n case WebAppEnvironment.Production:\n return mpanelConfigProduction.apiKey;\n }\n}\n\nfunction getConfig(): Partial<Config> {\n return {\n cross_subdomain_cookie: false,\n disable_persistence: true,\n ignore_dnt: true,\n debug: true\n };\n}\n","import { DefaultLogMessage, log } from \".\";\nimport { dispatch, messageBus } from \"global\";\nimport { LOGGING_EVENT_PLAYBACK_REPORT_FINISHED, LOGGING_EVENT_PLAYBACK_REPORT_SENT, USER_LOGGED_IN } from \"global/actions\";\nimport { getSessionFinishedPlaybackReports } from \"services/appSession/operations/finishedReports\";\nimport { mutateReportPlayback } from \"services/backend\";\nimport type { ReportPlaybackInput } from \"generated/graphql-types\";\n\ndeclare type OnPlaybackReportFunction = ((report: ReportPlaybackInput) => void) | null;\n\nexport const trySendPlaybackReports = async () => {\n const finished = getSessionFinishedPlaybackReports();\n finished.forEach((report) => {\n const reportSent = (success: boolean) => dispatch({ type: LOGGING_EVENT_PLAYBACK_REPORT_SENT, payload: { report, success } });\n\n if (!report.sendReport) {\n log.error({ code: \"web-211010-1459\", msg: DefaultLogMessage.UnexpectedNull, data: { report } });\n reportSent(false);\n }\n if (report.url == null) {\n log.error({ code: \"web-211010-1458\", msg: DefaultLogMessage.UnexpectedNull, data: { report } });\n reportSent(false);\n return;\n }\n if (report.playbackContext == null) {\n log.error({ code: \"web-211010-1500\", msg: DefaultLogMessage.UnexpectedNull, data: { report } });\n reportSent(false);\n return;\n }\n if (report.duration <= 0) {\n log.error({ code: \"web-220524-1110\", msg: DefaultLogMessage.UnexpectedValue, data: { report } });\n reportSent(false);\n return;\n }\n\n const input: ReportPlaybackInput = {\n playbackUrl: report.url ?? \"\",\n playedSeconds: report.duration,\n playbackContext: report.playbackContext,\n playedAt: new Date(report.playedAt).toISOString()\n };\n mutateReportPlayback({ report: input })\n .then((success) => {\n if (success) {\n log.info({ code: \"web-211103-1908\", msg: \"playback report send success\", data: { report } });\n reportSent(true);\n }\n })\n .catch((e) => {\n log.error({ code: \"web-210420-1209\", msg: \"playback report send error\", error: e });\n });\n });\n};\n\nexport const initPlaybackReportSendService = () => {\n try {\n trySendPlaybackReports();\n } catch (e) {\n log.error({ code: \"web-220221-1333\", msg: \"error in sending playpack reports on init\", error: e });\n }\n\n messageBus.subscribeEvery(LOGGING_EVENT_PLAYBACK_REPORT_FINISHED, async (msg) => {\n if (!msg.payload.report.sendReport) return;\n\n await messageBus.sync();\n trySendPlaybackReports();\n });\n\n messageBus.subscribeEvery(USER_LOGGED_IN, async () => {\n await messageBus.sync();\n trySendPlaybackReports();\n });\n};\n","import { log, DefaultLogMessage } from \".\";\nimport { getAnalyticsPlayableStopProperties } from \"./analytics/properties/event\";\nimport { store, messageBus, dispatch } from \"global\";\nimport {\n LOGGING_EVENT_PLAYBACK_REPORT_FINISHED,\n AUDIO_INPUT_AUDIOS_CHANGE,\n AUDIO_INPUT_AUDIO_PLAY_CHANGE,\n AUDIO_INPUT_AUDIO_END_REASON,\n LOGGING_EVENT_PLAYBACK_REPORT_FORCE_FINISHED,\n LOGGING_EVENT_PLAYBACK_REPORT_SENT\n} from \"global/actions\";\nimport { playerConfig } from \"global/constants/player\";\nimport type { AppSession } from \"services/appSession\";\nimport { getAndDeleteReports, getAndDeleteSharedReports } from \"services/appSession\";\nimport { addSessionFinishedReport, removeSessionFinishedReport } from \"services/appSession/operations/finishedReports\";\nimport { getSessionLoadedPlaybackReports, saveSessionLoadedPlaybackReports } from \"services/appSession/operations/loadedReports\";\nimport { tryUpdateArray } from \"services/arrayHelper\";\nimport { getNormalizedDataAnalyticsQueueAdded } from \"services/normalizeData\";\nimport { getLoadedInputAudio, getAudioInputItemByPredicateFromState } from \"services/player/inputs/service/helpers\";\nimport type { FinishedPlaybackReport, LoadedPlaybackReport } from \"models/app/playbackReport\";\nimport { PlayState } from \"models/app/player\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nlet enableFinishReports = false;\nconst timers: Map<string, { intervalId: number; time: Date }> = new Map();\n\nconst getAudioByReportIdFromState = (reportId: string) => store.getState().audioInput.audios.find((audio) => audio.reportId === reportId);\nconst getLoadedPlaybackReport = (loaded: LoadedPlaybackReport[], reportId: string) => loaded.find((loaded) => loaded.reportId === reportId) ?? null;\nexport const getLoadedPlaybackReportFromStorage = (reportId: string) => getLoadedPlaybackReport(getSessionLoadedPlaybackReports() ?? [], reportId);\n\nexport async function tryTransferReportsFromSharedStorageAndFinishInCurrentSession() {\n const { loaded, finished } = getAndDeleteSharedReports();\n finishTransferedReports(loaded, finished);\n}\n\nexport async function tryTransferAndFinishReportsInCurrentSession(session: AppSession) {\n const { loaded, finished } = getAndDeleteReports(session);\n finishTransferedReports(loaded, finished);\n}\n\nasync function finishTransferedReports(loaded: LoadedPlaybackReport[], finished: FinishedPlaybackReport[]) {\n for (const report of loaded) {\n log.info({ code: \"web-211101-1251\", msg: \"finish loaded playback report from another session\", data: { report } });\n if (!report.analytics2) log.error({ code: \"web-220329-2034\", msg: \"loaded report missing analytics in finishTransferedReports\" });\n if (report.analytics2) report.analytics2.endReason = AudioContextAction.AppSessionEnded;\n await finishReport(report);\n }\n\n for (const report of finished) {\n log.info({ code: \"web-211101-1420\", msg: \"report finished playback report from another session\", data: { report } });\n if (!report.analytics2) log.error({ code: \"web-220329-2037\", msg: \"finished report missing analytics in finishTransferedReports\" });\n\n await dispatch({ type: LOGGING_EVENT_PLAYBACK_REPORT_FINISHED, payload: { report } });\n }\n}\n\nfunction updateLoadedPlaybackReportFromStorage(report: LoadedPlaybackReport) {\n let loaded = getSessionLoadedPlaybackReports();\n loaded = tryUpdateArray(\n loaded,\n (item) => item.reportId === report.reportId,\n () => report,\n \"web-211020-1716\"\n );\n saveSessionLoadedPlaybackReports(loaded);\n}\n\nasync function loadReports() {\n await messageBus.sync();\n const reports = getSessionLoadedPlaybackReports();\n const audios = getLoadedInputAudio();\n const newAudios: AudioInputItemModel[] = audios.filter((item) => !reports.some((loadedItem) => item.reportId === loadedItem.reportId));\n\n const newReports: LoadedPlaybackReport[] = newAudios.map((item) => {\n const loadData = item.analytics2?.loadData;\n if (!loadData) log.error({ code: \"web-220329-2048\", msg: \"analytics loadData missing when creating new report\" });\n\n const playableData = item.analytics2?.playableData;\n if (!playableData) log.error({ code: \"web-220329-2058\", msg: \"analytics playableData missing when creating new report\" });\n\n const queueData = getNormalizedDataAnalyticsQueueAdded(item.analytics2?.addedDataId ?? null);\n if (!queueData)\n log.error({ code: \"web-220329-2047\", msg: \"analytics queueData missing when creating new report\", data: { addedDataId: item.analytics2?.addedDataId ?? null } });\n\n const analytics2: LoadedPlaybackReport[\"analytics2\"] =\n queueData && loadData && playableData\n ? {\n endReason: null,\n loadData,\n playableData,\n queueData\n }\n : undefined;\n\n return {\n analytics2,\n reportId: item.reportId,\n playbackContext: item.playbackContext,\n played: 0,\n sendReport: item.sendReport,\n url: item.url2?.url ?? null\n };\n });\n\n if (newReports.length == 0) return;\n\n const allReports = [...reports, ...newReports];\n saveSessionLoadedPlaybackReports(allReports);\n}\n\nasync function updateReportUrls() {\n const reports = getSessionLoadedPlaybackReports();\n for (const report of reports) {\n const audio = getAudioInputItemByPredicateFromState((audio) => audio.reportId === report.reportId);\n if (!audio) continue;\n if (audio.url2 == null) continue;\n if (audio.url2.url != report.url) {\n if (!report.analytics2) log.error({ code: \"web-220601-1513\", msg: \"report without analytics\" });\n const newReport: LoadedPlaybackReport = { ...report, url: audio.url2.url };\n updateLoadedPlaybackReportFromStorage(newReport);\n }\n }\n}\n\nasync function updateTimers() {\n await messageBus.sync();\n const reports = getSessionLoadedPlaybackReports();\n\n for (const report of reports) {\n await updateTimer(report.reportId);\n }\n}\n\nexport function getPlayedDurationFromReport(report: LoadedPlaybackReport) {\n let duration = Math.floor(report.played);\n if (duration < 0) {\n log.error({ code: \"web-220524-1111\", msg: \"report has negative duration\", data: { duration } });\n duration = 0;\n }\n return duration;\n}\n\nasync function finishReport(loaded: LoadedPlaybackReport) {\n const reports = getSessionLoadedPlaybackReports().filter((report) => report.reportId !== loaded.reportId);\n saveSessionLoadedPlaybackReports(reports);\n\n stopTimer(loaded.reportId);\n const duration = getPlayedDurationFromReport(loaded);\n if (duration === 0) return;\n\n if (loaded.sendReport && loaded.url == null) log.error({ code: \"web-211010-1822\", msg: \"report missing url\" });\n if (loaded.sendReport && loaded.playbackContext == null) log.error({ code: \"web-211020-2125\", msg: \"report missing playbackContext\" });\n // TODO re-enable this log later\n // if (loaded.analytics2 == null) log.error({code: \"web-211020-2128\", msg:\"report missing analytics\");\n if (loaded.analytics2 && loaded.analytics2?.endReason == null) log.error({ code: \"web-211020-2126\", msg: \"report missing endReason\", data: { analytics: loaded.analytics2 } });\n\n let analytics2: FinishedPlaybackReport[\"analytics2\"] | undefined;\n if (loaded.analytics2) {\n const stopData = getAnalyticsPlayableStopProperties({\n playDuration: duration,\n endReason: loaded.analytics2.endReason ?? AudioContextAction.Unknown\n });\n analytics2 = {\n queueData: loaded.analytics2.queueData,\n loadData: loaded.analytics2.loadData,\n playableData: loaded.analytics2.playableData,\n stopData\n };\n }\n\n const report: FinishedPlaybackReport = {\n url: loaded.url,\n duration,\n sendReport: loaded.sendReport,\n playbackContext: loaded.playbackContext,\n playedAt: new Date().getTime(),\n reportId: loaded.reportId,\n analytics2\n };\n\n log.info({ code: \"web-211010-1420\", msg: \"finish playback report\", data: { report } });\n\n await dispatch({ type: LOGGING_EVENT_PLAYBACK_REPORT_FINISHED, payload: { report } });\n}\nasync function finishReports() {\n if (!enableFinishReports) return;\n await messageBus.sync();\n\n const audios = getLoadedInputAudio();\n const reports = getSessionLoadedPlaybackReports();\n\n const stoppedReports: LoadedPlaybackReport[] = reports.filter((old) => !audios.some((loaded) => old.reportId === loaded.reportId));\n\n if (stoppedReports.length === 0) return;\n\n const loadedReports = reports.filter((report) => !stoppedReports.some((stopped) => report.reportId === stopped.reportId));\n saveSessionLoadedPlaybackReports(loadedReports);\n\n stoppedReports.forEach(async (stopped) => finishReport(stopped));\n}\n\nasync function updateTimer(reportId: string) {\n await messageBus.sync();\n const report = getLoadedPlaybackReportFromStorage(reportId);\n const audio = getAudioByReportIdFromState(reportId);\n const playing = audio?.playState === PlayState.Playing;\n\n if (report == null) {\n if (playing) log.error({ code: \"web-210506-1458\", msg: DefaultLogMessage.UnexpectedNull });\n stopTimer(reportId);\n return;\n }\n\n if (playing) startTimer(reportId);\n else {\n await addTime(reportId);\n stopTimer(reportId);\n }\n}\n\nfunction startTimer(reportId: string) {\n const timer = timers.get(reportId) ?? null;\n if (timer != null) return;\n\n const run = () => {\n addTime(reportId);\n };\n\n const time = new Date();\n const intervalId = window.setInterval(run, playerConfig.playbackReportChunkUpdateIntervalMs);\n\n timers.set(reportId, { intervalId, time });\n}\n\nfunction stopTimer(reportId: string) {\n const intervalId = timers.get(reportId) ?? null;\n if (intervalId != null) {\n window.clearInterval(intervalId.intervalId);\n timers.delete(reportId);\n }\n}\n\nasync function addTime(reportId: string) {\n const report = getLoadedPlaybackReportFromStorage(reportId);\n if (report == null) {\n stopTimer(reportId);\n log.error({ code: \"web-211009-1352\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n const timer = timers.get(reportId) ?? null;\n if (timer == null) return;\n\n const newTime = new Date();\n const playedMs = newTime.getTime() - timer.time.getTime();\n timer.time = newTime;\n\n if (playedMs > playerConfig.playbackReportChunkUpdateIntervalMs + 5000) {\n // log.error({code: \"web-211009-1351\", \"time unexpected long\", [{ key: \"time\", value: playedMs }]);\n return;\n }\n if (playedMs < 0) {\n log.error({ code: \"web-220424-1105\", msg: \"time is negative\", data: { time: playedMs } });\n return;\n }\n\n report.played += playedMs / 1000;\n if (!report.analytics2) log.error({ code: \"web-220601-1514\", msg: \"report without analytics\", data: { report } });\n updateLoadedPlaybackReportFromStorage(report);\n}\n\nasync function forceEndReport(reportId: string) {\n const loaded = getLoadedPlaybackReportFromStorage(reportId);\n if (loaded == null) {\n log.error({ code: \"web-211026-1413\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n await finishReport(loaded);\n await loadReports();\n}\nasync function updateReport(audio: AudioInputItemModel) {\n await loadReports();\n await updateReportUrls();\n await updateTimer(audio.reportId);\n await finishReports();\n}\n\nasync function updateReports() {\n await loadReports();\n await updateReportUrls();\n await updateTimers();\n await finishReports();\n}\n\nasync function updateEndReason(audio: AudioInputItemModel, endReason: AudioContextAction) {\n const report = getLoadedPlaybackReportFromStorage(audio.reportId);\n\n if (report == null) {\n // log.error({ code: \"web-211003-1303\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n if (report.analytics2 == null) {\n log.error({ code: \"web-211003-1304\", msg: DefaultLogMessage.UnexpectedNull, data: { reportId: audio.reportId } });\n return;\n }\n\n if (report.analytics2.endReason == endReason) return;\n\n report.analytics2.endReason = endReason;\n updateLoadedPlaybackReportFromStorage(report);\n}\n\nexport const initPlaybackReportService = async () => {\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIOS_CHANGE, async () => {\n await updateReports();\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIO_PLAY_CHANGE, async (msg) => {\n await updateReport(msg.payload.audio);\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIO_END_REASON, async (msg) => {\n await updateEndReason(msg.payload.audio, msg.payload.context.action);\n });\n\n messageBus.subscribeEvery(LOGGING_EVENT_PLAYBACK_REPORT_FORCE_FINISHED, async (msg) => {\n await forceEndReport(msg.payload.reportId);\n });\n\n messageBus.subscribeEvery(LOGGING_EVENT_PLAYBACK_REPORT_FINISHED, async (msg) => {\n addSessionFinishedReport(msg.payload.report);\n });\n\n messageBus.subscribeEvery(LOGGING_EVENT_PLAYBACK_REPORT_SENT, async (msg) => {\n removeSessionFinishedReport(msg.payload.report);\n });\n};\n\nexport const startPlaybackReporting = () => {\n enableFinishReports = true;\n try {\n tryTransferReportsFromSharedStorageAndFinishInCurrentSession();\n updateReports();\n } catch (e) {\n log.error({ code: \"web-220221-1335\", msg: \"error in start playback reporting on init\", error: e });\n }\n};\n","import type { LogMessageEntry } from \".\";\nimport { LogLevel } from \".\";\nimport { getAppVersionString, headerNames } from \"../../../shared/services\";\nimport { messageBus } from \"global\";\nimport { LOGGING_EVENT_MESSAGE } from \"global/actions\";\nimport { getInstallationId } from \"services/app\";\nimport { getTokensNow } from \"services/appSession/operations/sessionTokens\";\nimport { apiClientlogPath, getBackendBaseUrl } from \"services/backend\";\n\nconst maxDataFieldSize = 4096;\nconst maxDataEntries = 16;\n\nexport const initKibanaLoggerService = () => {\n messageBus.subscribeEvery(LOGGING_EVENT_MESSAGE, (msg) => {\n try {\n const message = msg.payload.message;\n\n if (message.level !== LogLevel.Warning && message.level !== LogLevel.Error) return;\n\n const fields = getMessageLogFields(message, \"client\", true).reduce((prev, current) => {\n prev[current.key] = current.value;\n return prev;\n }, {} as { [key: string]: string });\n\n const { accessToken } = getTokensNow();\n const url = getBackendBaseUrl(apiClientlogPath);\n\n fetch(url, {\n method: \"POST\",\n headers: {\n ...(accessToken ? { [headerNames.authorization]: `Bearer ${accessToken}` } : {}),\n [headerNames.contentType]: \"application/json\",\n [headerNames.appVersion]: getAppVersionString(),\n [headerNames.installationId]: getInstallationId()\n },\n body: JSON.stringify({\n message: msg.payload.message.message,\n loglevel: msg.payload.message.level,\n fields\n })\n }).catch(() => {\n // catch async error from promise that does not get handled by the try/catch\n });\n } catch (e) {\n //not logging, to avoid possible infinite loops\n }\n });\n};\n\nexport function getMessageLogFields(message: LogMessageEntry, prefix: string, kibanaSpecific = false): { key: string; value: string }[] {\n const fields = [\n { key: `${prefix}.language`, value: message.language },\n { key: `${prefix}.message-code`, value: message.messageCode },\n { key: `${prefix}.platform`, value: message.platform },\n { key: `${prefix}.stack`, value: message.stack ?? \"undefined\" },\n { key: `${prefix}.url`, value: message.url }\n ];\n if (kibanaSpecific) {\n if (message.userId) {\n fields.push({ key: `${prefix}.userid`, value: message.userId });\n }\n } else {\n fields.push({ key: `${prefix}.hostname`, value: message.hostname });\n fields.push({ key: `${prefix}.user-agent`, value: message.userAgent });\n fields.push({ key: `${prefix}.app-version`, value: message.appVersion });\n fields.push({ key: `${prefix}.installation-id`, value: message.installationId });\n }\n if (message.data !== undefined) {\n for (const [key, val] of Object.entries(message.data).slice(0, maxDataEntries)) {\n let value = typeof val === \"string\" ? val : (JSON.stringify(val) as string | undefined);\n\n if (value == undefined) value = \"undefined\";\n if (value.length > maxDataFieldSize) {\n value = `${value.substring(0, maxDataFieldSize - 3)}...`;\n }\n\n fields.push({\n key: `${prefix}.${key}`,\n value\n });\n }\n }\n\n return fields;\n}\n","export * from \"./messageBus\";\nexport * from \"./typedMessageBus\";\nexport * from \"./middleware\";\n","export type Message = {\n type: string;\n};\n\nexport type MessageListener = (message: Message) => (void | Promise<void>);\nexport type Unsubscriber = () => void;\n\nexport class MessageBus {\n protected globalListeners: MessageListener[] = [];\n protected listeners: { [actionType: string]: MessageListener[] } = {};\n protected promise: Promise<void>;\n protected inStoreSync = 0;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected resolve: () => void = () => {};\n\n constructor() {\n this.promise = new Promise((resolve) => {\n this.resolve = resolve;\n });\n }\n\n public setStoreSync = (): void => {\n this.inStoreSync++;\n };\n\n public dispatch = (message: Message): void => {\n try {\n if (typeof this.listeners[message.type] === \"object\") {\n this.listeners[message.type].forEach((listener) => listener(message));\n }\n this.globalListeners.forEach((listener) => listener(message));\n } finally {\n // if (this.inStoreSync === 0) log.error({code: \"web-211003-1856\", msg: DefaultLogMessage.UnexpectedValue});\n if (this.inStoreSync > 0) this.inStoreSync--;\n if (this.inStoreSync === 0) {\n const _resolve = this.resolve;\n this.promise = new Promise((resolve) => {\n this.resolve = resolve;\n });\n _resolve();\n }\n }\n };\n\n public sync = async () => {\n if (this.inStoreSync === 0) return;\n await this.promise;\n };\n\n protected unsubscribeListener = (messageType: string, listener: MessageListener) => {\n if (typeof this.listeners[messageType] === \"object\") {\n const index: number = this.listeners[messageType].indexOf(listener);\n if (index > -1) {\n this.listeners[messageType].splice(index, 1);\n }\n }\n };\n\n private unsubscribeGlobalListener = (listener: MessageListener) => {\n const index: number = this.globalListeners.indexOf(listener);\n if (index > -1) {\n this.globalListeners.splice(index, 1);\n }\n };\n\n public cancelAll = () => {\n this.globalListeners = [];\n this.listeners = {};\n };\n\n public subscribeAll = (listener: MessageListener): Unsubscriber => {\n this.globalListeners.push(listener);\n return () => this.unsubscribeGlobalListener(listener);\n };\n\n public subscribeOneGeneric = (messageType: string, listener: MessageListener): Unsubscriber => {\n if (typeof this.listeners[messageType] !== \"object\") {\n this.listeners[messageType] = [];\n }\n\n const emitAndUnsubscribe = (message: Message) => {\n this.unsubscribeListener(messageType, emitAndUnsubscribe);\n listener(message);\n };\n\n this.listeners[messageType].push(emitAndUnsubscribe);\n return () => this.unsubscribeListener(messageType, emitAndUnsubscribe);\n };\n\n public subscribeEveryGeneric = (messageType: string, listener: MessageListener): Unsubscriber => {\n if (typeof this.listeners[messageType] !== \"object\") {\n this.listeners[messageType] = [];\n }\n this.listeners[messageType].push(listener);\n return () => this.unsubscribeListener(messageType, listener);\n };\n}\n","import type { Message, MessageBus } from \"./messageBus\";\n\n// Turn a MessageBus into a Redux middleware\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function createMessageBusMiddleware<TStore, TAction extends Message>(messageBus: MessageBus, updateReduxFirst = true) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return () => (next: any) => (action: TAction) => {\n if (updateReduxFirst) {\n const result = next(action);\n if (action && typeof action.type === \"string\") {\n messageBus.dispatch(action);\n }\n return result;\n } else {\n if (action && typeof action.type === \"string\") {\n messageBus.dispatch(action);\n }\n return next(action);\n }\n };\n}","import { MessageBus } from \".\";\nimport type { Message, MessageListener, Unsubscriber } from \"./messageBus\";\n\nexport class TypedMessageBus<TAction extends { type: string }> extends MessageBus {\n subscribeOne<K extends TAction[\"type\"]>(messageType: K, listener: (payload: Extract<TAction, { type: K }>) => (void | Promise<void>)): Unsubscriber;\n\n subscribeOne(messageType: string, listener: MessageListener): Unsubscriber;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n subscribeOne(messageType: any, listener: any): Unsubscriber {\n if (typeof this.listeners[messageType] !== \"object\") {\n this.listeners[messageType] = [];\n }\n\n const emitAndUnsubscribe = (message: Message) => {\n this.unsubscribeListener(messageType, emitAndUnsubscribe);\n listener(message);\n };\n\n this.listeners[messageType].push(emitAndUnsubscribe);\n return () => this.unsubscribeListener(messageType, emitAndUnsubscribe);\n }\n\n subscribeEvery<K extends TAction[\"type\"]>(messageType: K, listener: (payload: Extract<TAction, { type: K }>) => (void | Promise<void>)): Unsubscriber;\n subscribeEvery(messageType: string, listener: MessageListener): Unsubscriber;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n subscribeEvery(messageType: any, listener: any): Unsubscriber {\n if (typeof this.listeners[messageType] !== \"object\") {\n this.listeners[messageType] = [];\n }\n this.listeners[messageType].push(listener);\n return () => this.unsubscribeListener(messageType, listener);\n }\n}\n","import { route } from \"preact-router\";\nimport { dispatch, messageBus } from \"global\";\nimport { NAVIGATION_NAVIGATED, NAVIGATION_PAGECONTEXT_UPDATE } from \"global/actions\";\nimport type { NavigatePageContextUpdateAction } from \"global/actions/actionTypes\";\nimport { translate } from \"global/config\";\nimport { throttle2 } from \"services/cancellation/throttle\";\nimport { DefaultLogMessage, log, LogTag } from \"services/logger\";\nimport { getLink, getTitles } from \"services/resource\";\nimport type { LinkContextModel, PageContextModel, PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport { createLinkContext } from \"models/app/resourceContextModel\";\nimport type { LocationContentType, ResourceModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport type {\n NavigationLinkModel,\n NavigationModel,\n NavigationPageModel,\n NavigationPreviewModel,\n NavigationSectionModel,\n NavigationStackModel,\n ScrollStateModel\n} from \"models/view/navigationStack\";\n\nlet stack: NavigationStackModel = {\n navigations: [],\n hasForward: false,\n hasBackward: false\n};\n\nlet activePage: PageContextModel | null = null;\n\nexport function initNavigationStack() {\n const pageContextDoneTimeout = setTimeout(() => {\n log.error({\n code: \"web-220817-1516\",\n msg: \"page context not done loading\",\n data: {\n \"page type\": activePage?.type,\n \"page id\": activePage?.resource?.id\n }\n });\n }, 10_000);\n\n messageBus.subscribeEvery(NAVIGATION_PAGECONTEXT_UPDATE, (msg) => {\n if (msg.payload.done) {\n clearTimeout(pageContextDoneTimeout);\n }\n setActivePageContext(msg.payload.context);\n });\n\n try {\n if (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\";\n }\n\n readStack();\n logStack();\n\n window.addEventListener(\"popstate\", () => {\n const count1 = stack.navigations.length;\n readStack();\n const count2 = stack.navigations.length;\n\n const hasBackward = count2 > 1;\n const hasForward = count1 > count2;\n\n if (hasForward) stack.hasForward = hasForward;\n if (hasBackward) stack.hasBackward = hasBackward;\n\n saveStack();\n logStack();\n\n dispatch({\n type: NAVIGATION_NAVIGATED,\n payload: {\n state: stack.navigations[0],\n hasForward,\n hasBackward\n }\n });\n });\n } catch (e) {\n console.error({ code: \"web-220217-1314\", msg: \"navigation stack could not initiate\", e });\n }\n}\n\nexport function hasNavigated(): boolean {\n return stack.hasBackward || stack.hasForward;\n}\n\nfunction setActivePageContext(page: PageContextModel) {\n const current = stack.navigations[0];\n current.page = createNavigationPage(page);\n\n saveStack();\n logStack();\n\n activePage = page;\n}\n\nexport function getActivePageContext() {\n return activePage;\n}\n\nexport function getPreviousPageContext() {\n return stack.navigations.length > 1 ? stack.navigations[1].page : null;\n}\n\nexport function isOnPage(location: LocationContentType, resource?: ResourceModel): boolean {\n if (activePage == null) {\n log.error({ code: \"web-220226-1152\", msg: \"no active page in navigationStack\" });\n return false;\n }\n\n if (resource && activePage.resource?.id == null) {\n log.error({ code: \"web-220226-1153\", msg: \"no active page resource in navigationStack\", data: { location } });\n return false;\n }\n\n if (activePage.type != location) return false;\n if (resource && resource.id != activePage.resource?.id) return false;\n\n return true;\n}\n\nlet updateActivePageContextTimeoutId: number | null;\nexport function updateActivePageContext(page: PageContextModel) {\n //TODO: refactor to pr page instead of item\n const update = () => {\n if (activePage !== page) return;\n setActivePageContext(page);\n };\n\n if (updateActivePageContextTimeoutId != null) {\n clearTimeout(updateActivePageContextTimeoutId);\n updateActivePageContextTimeoutId = null;\n }\n\n updateActivePageContextTimeoutId = window.setTimeout(update, 100);\n}\n\nexport function navigateForwardTo(type: LocationContentType, resource: ResourceModel | null, preview: PreviewContextModel) {\n const link = createLinkContext(type, resource, preview);\n navigateForward(link);\n}\n\nexport function navigateForward(link: LinkContextModel) {\n if (link.url == null) {\n log.error({ code: \"web-210926-1647\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n if (link.url == window.location.pathname) {\n log.info({ code: \"web-211107-2004\", msg: \"navigated to same page\" });\n return;\n }\n\n if (link.target) {\n window.open(link.url, link.target)?.focus();\n return;\n }\n\n route(link.url);\n\n const navigation = createForwardNavigation(link);\n activePage = null;\n\n if (!navigation) return;\n\n stack.navigations.unshift(navigation);\n stack.hasForward = false;\n stack.hasBackward = true;\n\n saveStack();\n logStack();\n\n dispatch({\n type: NAVIGATION_NAVIGATED,\n payload: {\n state: navigation,\n hasForward: false,\n hasBackward: true\n }\n });\n}\n\nfunction createNavigationPage(page: PageContextModel): NavigationPageModel {\n return {\n id: page.resource?.id ?? \"\",\n name: getLink(page.type, page.resource)?.text ?? null,\n windowTitle: getPageTitle(page),\n root: page.root,\n sections: page.sections.map((section) => createNavigationSection(section)),\n type: page.type\n };\n}\n\nfunction createNavigationSection(section: SectionContextModel): NavigationSectionModel {\n return {\n visibleRank: section.visibleRank,\n displayType: section.displayType,\n id: section.id,\n isHidden: section.isHidden,\n name: getLink(section.type, section.resource)?.text ?? null,\n rank: section.rank,\n type: section.type\n };\n}\n\nfunction createNavigationPreview(preview: PreviewContextModel): NavigationPreviewModel {\n return {\n id: preview.resource?.id ?? null,\n type: preview.type,\n name: getLink(preview.type, preview.resource)?.text ?? null,\n rank: preview.rank\n };\n}\n\nfunction createNavigationLink(link: LinkContextModel): NavigationLinkModel {\n return {\n id: link.resource?.id ?? null,\n type: link.type,\n name: link.type ? getLink(link.type, link.resource)?.text ?? null : null\n };\n}\n\nfunction createForwardNavigation(link: LinkContextModel): NavigationModel | null {\n const preview = link?.preview;\n const section = preview?.section;\n const page = section?.page ?? activePage;\n\n if (!page || !section || !preview) {\n log.error({ code: \"web-211229-1313\", msg: \"page, section or preview is null\", data: { page, section, preview } });\n return null;\n }\n\n return {\n page: null,\n from: {\n page: createNavigationPage(page),\n section: createNavigationSection(section),\n preview: createNavigationPreview(preview),\n link: createNavigationLink(link)\n }\n };\n}\n\nfunction readStack() {\n if (window.history.state) {\n stack = JSON.parse(JSON.stringify(window.history.state));\n }\n\n if (stack.navigations.length === 0) {\n stack.navigations[0] = { page: null, from: null };\n history.replaceState(stack, \"\");\n }\n}\n\nfunction saveStack() {\n try {\n const title = getCurrentPageTitle();\n\n if (title && title != document.title) document.title = title;\n history.replaceState(stack, \"\");\n } catch (e) {\n log.error({ code: \"web-210924-1904\", msg: \"saveStack fail\", tags: [LogTag.NavigationStack], error: e });\n resetStack();\n }\n}\n\nfunction resetStack() {\n stack = {\n navigations: [],\n hasForward: false,\n hasBackward: false\n };\n\n try {\n history.replaceState(stack, \"\");\n } catch (e) {\n log.error({ code: \"web-210924-1906\", msg: \"resetStack fail\", tags: [LogTag.NavigationStack], error: e });\n }\n}\n\nexport function getStack() {\n return stack;\n}\n\nfunction logStack() {\n // console.log(\"code:\", \"web-220927-1053\", \"navigationStack\", { stack });\n}\n\nexport function getNavigationRoot(): NavigationModel | null {\n const root = stack.navigations.find((navigation) => navigation?.page?.root != null) ?? null;\n return root;\n}\n\nexport function getNavigationRootPageAncestryLevel(): number | null {\n const root = getNavigationRoot();\n if (!root) return null;\n\n const rootIndex = stack.navigations.indexOf(root);\n if (rootIndex === -1) return null;\n return rootIndex;\n}\n\nfunction getNavigationRootNextPage(): NavigationModel | null {\n const root = stack.navigations.find((navigation) => navigation.from?.page?.root !== null) ?? null;\n return root;\n}\n\nexport function getNavigationRootPreview(current?: PreviewContextModel): { page: NavigationPageModel; section: NavigationSectionModel; preview: NavigationPreviewModel } | null {\n if (current?.section.page?.root != null) {\n return {\n page: createNavigationPage(current.section.page),\n section: createNavigationSection(current.section),\n preview: createNavigationPreview(current)\n };\n }\n\n const next = getNavigationRootNextPage();\n if (!next) return null;\n\n const page = next.from?.page ?? null;\n const section = next.from?.section ?? null;\n const preview = next.from?.preview ?? null;\n\n if (page && section && preview) return { page, section, preview };\n return null;\n}\n\nfunction getCurrentPageTitle(): string | null {\n const page = stack.navigations[0].page;\n if (!page) return null;\n\n return page.windowTitle;\n}\n\nfunction getPageTitle(page: PageContextModel): string {\n const appName = translate(\"AppName\");\n if (page.type === ContentType.FrontPage) return appName;\n\n const { title, subtitle } = getTitles(page.type, page.resource);\n\n let pageTitle = appName;\n if (title) pageTitle += ` - ${title}`;\n if (subtitle) pageTitle += ` - ${subtitle}`;\n\n return pageTitle;\n}\n\nconst debouncePageScroll = throttle2();\nconst debounceSectionScroll = throttle2();\n\nexport async function savePageScrollState(state: ScrollStateModel) {\n await debouncePageScroll(200);\n\n const navigation = stack.navigations[0];\n if (!navigation) return;\n if (!navigation.scrollStates) navigation.scrollStates = {};\n\n navigation.scrollStates[\"page\"] = formatScrollState(state);\n\n saveStack();\n}\n\nexport async function saveSectionScrollState(section: SectionContextModel, state: ScrollStateModel) {\n await debounceSectionScroll(200);\n\n const id = section.scrollId;\n if (!id) {\n log.error({ code: \"web-220318-1013\", msg: \"no scroll id on section in save\" });\n return;\n }\n\n const navigation = stack.navigations[0];\n if (!navigation) return;\n if (!navigation.scrollStates) navigation.scrollStates = {};\n\n navigation.scrollStates[id] = formatScrollState(state);\n\n saveStack();\n}\n\nexport function readPageScrollState(): ScrollStateModel | null {\n const states = stack.navigations[0]?.scrollStates;\n if (!states) return null;\n\n const state = states[\"page\"] ?? null;\n if (!state) return null;\n\n return state;\n}\n\nexport function readSectionScrollState(section: SectionContextModel): ScrollStateModel | null {\n const id = section.scrollId;\n\n if (!id) {\n return null;\n }\n\n const states = stack.navigations[0]?.scrollStates;\n if (!states) return null;\n\n const state = states[id] ?? null;\n if (!state) return null;\n\n return state;\n}\n\nfunction formatScrollState(state: ScrollStateModel): ScrollStateModel | null {\n if (state.x != null && state.x < 1) state.x = null;\n if (state.y != null && state.y < 1) state.y = null;\n if (state.x == null && state.y == null) return null;\n return state;\n}\n\nexport function onPageContextReady(fn: (payload: NavigatePageContextUpdateAction[\"payload\"]) => void) {\n const send = (unsubscribe: boolean, payload: NavigatePageContextUpdateAction[\"payload\"]) => {\n unsubscribe && unsubscribeFn();\n fn(payload);\n };\n\n const timeout = setTimeout(() => {\n log.error({ code: \"web-220817-1548\", msg: \"page context was not ready\" });\n }, 10_000);\n\n const unsubscribeFn = messageBus.subscribeEvery(NAVIGATION_PAGECONTEXT_UPDATE, (msg) => {\n if (!msg.payload.done) return;\n\n clearTimeout(timeout);\n send(!msg.payload.error, msg.payload);\n });\n}\n","import { useEffect, useState } from \"preact/hooks\";\nimport { getStack } from \"./navigationStack\";\nimport { NAVIGATION_NAVIGATED } from \"global/actions\";\nimport { useMessageBus } from \"global/hooks\";\n\nexport function useNavigation() {\n const [stack, setStack] = useState({\n hasBackward: false,\n hasForward: false\n });\n useEffect(() => {\n const { hasBackward, hasForward } = getStack();\n setStack({\n hasForward,\n hasBackward\n });\n }, [setStack]);\n useMessageBus(NAVIGATION_NAVIGATED, (msg) => {\n setStack(msg.payload);\n });\n return stack;\n}\n","export * from \"./navigation\";","import { environment } from \"services/environment\";\nimport { replaceAllBackwardsCompatible } from \"services/formatters\";\nimport { encodeUrlSearchString } from \"services/search/searchService\";\n\nexport const navigation = {\n templates: {\n album: (albumId: string) => formatUrlToUTF8(`/album/${albumId}`),\n albumArtistAlbums: (albumId: string) => formatUrlToUTF8(`/album/${albumId}/vis-alle/kunstner-album`),\n //albumTrack: (albumId: string, trackId: string) => formatUrlToUTF8(`/album/${albumId}/sang/${trackId}`),\n artist: (artistId: string) => formatUrlToUTF8(`/kunstner/${artistId}`),\n artistAlbums: (artistId: string) => formatUrlToUTF8(`/kunstner/${artistId}/vis-alle/album`),\n ArtistAlbumsAppearsOn: (artistId: string) => formatUrlToUTF8(`/kunstner/${artistId}/vis-alle/optræder-på`),\n artistPopularTracks: (artistId: string) => formatUrlToUTF8(`/kunstner/${artistId}/vis-alle/populære-sange`),\n artistRadio: (artistRadioId: string) => formatUrlToUTF8(`/kunstner-radio/${artistRadioId}`),\n artistSimilarArtists: (artistId: string) => formatUrlToUTF8(`/kunstner/${artistId}/vis-alle/lignende-kunstnere`),\n artistSingles: (artistId: string) => formatUrlToUTF8(`/kunstner/${artistId}/vis-alle/singler-og-ep`),\n chart: (trackChartId: string) => formatUrlToUTF8(`/hitliste/${trackChartId}`),\n installPWA: () => `#desktop-app`,\n frontPage: () => formatUrlToUTF8(`/`),\n settingsPage: () => formatUrlToUTF8(`/indstillinger`),\n profilesPage: (id?: string) => formatUrlToUTF8(`/profiler${id ? (\"/\" + id) : \"\"}`),\n addProfilesPage: () => formatUrlToUTF8(`/profiler/ny`),\n layoutPage: (pageId: string) => {\n if (pageId === environment.apiFrontPageId) return formatUrlToUTF8(`/forside`);\n if (pageId === environment.apiRadioPageId) return formatUrlToUTF8(`/stationer`);\n else return formatUrlToUTF8(`/side/${pageId}`);\n },\n layoutPageItem: (pageId: string, itemId: string) => {\n return navigation.templates.layoutPage(pageId) + formatUrlToUTF8(`/vis-alle/${itemId}`);\n },\n layoutPageItemResource: (pageId: string, itemId: string, resourceId: string) => {\n return navigation.templates.layoutPageItem(pageId, itemId) + formatUrlToUTF8(`/${resourceId}`);\n },\n liveRadio: (liveRadioId: string) => formatUrlToUTF8(`/live-radio/${liveRadioId}`),\n liveRadioCategory: (liveRadioCategoryId: string) => formatUrlToUTF8(`/live-radio-kategori/${liveRadioCategoryId}`),\n mixRadioCategory: (mixRadioCategoryId: string) => formatUrlToUTF8(`/more-music-kategori/${mixRadioCategoryId}`),\n mixRadioCategoryMixRadio: (mixRadioCategoryId: string, mixRadioId: string) => formatUrlToUTF8(`/more-music-kategori/${mixRadioCategoryId}/${mixRadioId}`),\n mixRadios: () => formatUrlToUTF8(`/more-music`),\n mixRadiosMixRadio: (mixRadioId: string) => formatUrlToUTF8(`/more-music/${mixRadioId}`),\n myMusicAlbums: () => formatUrlToUTF8(\"/min-musik/album\"),\n myMusicArtists: () => formatUrlToUTF8(\"/min-musik/kunstnere\"),\n myMusicPlaylist: (playlistId: string) => formatUrlToUTF8(`/min-musik/playliste/${playlistId}`),\n myMusicPlaylists: () => formatUrlToUTF8(\"/min-musik/playlister\"),\n myMusicTracks: () => formatUrlToUTF8(\"/min-musik/sange\"),\n playlist: (playlistId: string) => formatUrlToUTF8(`/playliste/${playlistId}`),\n playlistCategory: (playlistCategoryId: string) => formatUrlToUTF8(`/playliste-kategori/${playlistCategoryId}`),\n radio: () => formatUrlToUTF8(\"/stationer\"),\n search: () => formatUrlToUTF8(\"/udforsk\"),\n searchAlbumResults: (criterion: string) => formatUrlToUTF8(`/søgning/album/vis-alle/${encodeUrlSearchString(criterion)}`),\n searchArtistResults: (criterion: string) => formatUrlToUTF8(`/søgning/kunstnere/vis-alle/${encodeUrlSearchString(criterion)}`),\n searchPlaylistResults: (criterion: string) => formatUrlToUTF8(`/søgning/playlister/vis-alle/${encodeUrlSearchString(criterion)}`),\n searchTrackResults: (criterion: string) => formatUrlToUTF8(`/søgning/sange/vis-alle/${encodeUrlSearchString(criterion)}`),\n track: (trackId: string) => formatUrlToUTF8(`/sang/${trackId}`),\n trackRadio: (trackId: string) => formatUrlToUTF8(`/sang-radio/${trackId}`),\n userHistory: () => formatUrlToUTF8(`/historik`),\n userHistoryRecommendation: (recommendationName: string) => formatUrlToUTF8(`/historik/${recommendationName}`),\n userRecommendations: () => formatUrlToUTF8(`/anbefaling`),\n userRecommendationsRecommendation: (recommendationName: string) => formatUrlToUTF8(`/anbefaling/${recommendationName}`),\n yourMixes: () => formatUrlToUTF8(\"/forside/vis-alle/mix-til-dig\")\n }\n};\n\nconst æ = \"%C3%A6\";\nconst ø = \"%C3%B8\";\nconst å = \"%C3%A5\";\n\nexport function formatUrlToUTF8(url: string): string {\n url = replaceAllBackwardsCompatible(url, \"æ\", æ);\n url = replaceAllBackwardsCompatible(url, \"ø\", ø);\n url = replaceAllBackwardsCompatible(url, \"å\", å);\n\n return url;\n}\n\nexport function formatUrlFromUTF8(url: string): string {\n url = replaceAllBackwardsCompatible(url, æ, \"æ\");\n url = replaceAllBackwardsCompatible(url, ø, \"ø\");\n url = replaceAllBackwardsCompatible(url, å, \"å\");\n\n return url;\n}\n","export * from \"./normalizeAnalyticsQueueAdded\";\n","import { store } from \"global\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { AnalyticsQueueAddedPropertiesGroup } from \"services/logger/analytics/properties/groups\";\nimport { getNextUUID } from \"services/utils\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport interface NormalizedData<T> {\n data: T;\n referenceId: string;\n}\n\nexport function createNormalizedData<T>(data: T): NormalizedData<T> {\n return {\n referenceId: getNextUUID(),\n data\n };\n}\n\nexport function getNormalizedDataAnalyticsQueueAdded(referenceId: string | null): AnalyticsQueueAddedPropertiesGroup | null {\n if (referenceId == null) {\n log.error({ code: \"web-220629-2107\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n const referenceData = store.getState().audioInput.analytics2[referenceId] ?? null;\n if (referenceData == null) {\n // TODO re-enable this log later\n // log.error({code: \"web-220629-2106\", \"referenceData == null\", [\n // { key: \"referenceId\", value: referenceId },\n // { key: \"analytics\", value: store.getState().audioInput.analytics2 }\n // ]);\n return null;\n }\n\n return referenceData;\n}\n\nexport function updateNormalizedAnalyticsQueueAdded(\n audios: AudioInputItemModel[],\n analytics: Record<string, AnalyticsQueueAddedPropertiesGroup | unknown>,\n added: NormalizedData<AnalyticsQueueAddedPropertiesGroup> | null\n): Record<string, AnalyticsQueueAddedPropertiesGroup> {\n if (added) analytics[added.referenceId] = added.data;\n\n const references = audios.map((audio) => audio.analytics2?.addedDataId).filter((reference) => reference != null) as string[];\n const unique = new Set(references);\n const newAnalytics: Record<string, AnalyticsQueueAddedPropertiesGroup> = {};\n\n unique.forEach((reference) => {\n const data = (analytics[reference] ?? null) as AnalyticsQueueAddedPropertiesGroup | null;\n if (!data) {\n // TODO re-enable this log later\n // const analyticsLog = { ...analytics };\n // setTimeout(() => {\n // log.error({code: \"web-20220329-2122\", \"data is null\", [\n // { key: \"reference\", value: reference },\n // { key: \"analytics\", value: analyticsLog }\n // ]);\n // }, 0);\n return;\n }\n newAnalytics[reference] = data;\n });\n return newAnalytics;\n}\n","import { isNotificationFeedTestModeEnabled } from \"./helpers\";\n\nexport interface NotificationFeedConfiguration {\n generel: {\n playback_minPlayedDuration: number;\n playbacks_max: 10000;\n collections_max: 10000;\n\n show_max: number;\n\n update_interval: number;\n update_collectionCount: number;\n };\n}\n\nlet _configuration: NotificationFeedConfiguration | null;\nlet _configurationTestMode: NotificationFeedConfiguration | null;\n\nexport function getNotificationFeedConfiguration(): NotificationFeedConfiguration {\n const testMode = isNotificationFeedTestModeEnabled();\n\n if (!testMode) {\n if (!_configuration) _configuration = getConfiguration();\n return _configuration;\n } else {\n if (!_configurationTestMode) _configurationTestMode = getConfigurationTestMode();\n return _configurationTestMode;\n }\n}\n\nfunction getConfiguration(): NotificationFeedConfiguration {\n const min = 1000 * 60;\n const hour = min * 60;\n\n return {\n generel: {\n show_max: 3,\n playback_minPlayedDuration: 30,\n update_interval: hour,\n\n collections_max: 10000,\n playbacks_max: 10000,\n update_collectionCount: 20\n }\n };\n}\n\nfunction getConfigurationTestMode(): NotificationFeedConfiguration {\n const tenSec = 1000 * 10;\n\n return {\n generel: {\n show_max: 3,\n playback_minPlayedDuration: 0,\n update_interval: tenSec,\n\n collections_max: 10000,\n playbacks_max: 10000,\n update_collectionCount: 20\n }\n };\n}\n","import { dispatch, store } from \"global\";\nimport { NOTIFICATION_FEED_NOTIFICATIONS_SEEN } from \"global/actions\";\nimport { mutateMarkNotificationsAsSeen } from \"services/backend\";\nimport { log, LogTag } from \"services/logger\";\nimport { getAnalyticsCurrentNotifications } from \"services/logger/analytics/properties/event\";\nimport type { AppNotificationFeedModel } from \"models/app\";\nimport type { NotificationModel, NotificationPreviewModel } from \"models/domain/NotificationModel\";\n\nexport function isNotificationFeedEnabled(): boolean {\n return store.getState().controlPanel.enableNotificationFeed === true;\n}\n\nexport function isNotificationFeedTestModeEnabled(): boolean {\n return store.getState().controlPanel.enableNotificationFeedTestMode === true;\n}\n\nexport enum NotificationPeriod {\n New = \"New\",\n LastWeek = \"LastWeek\",\n ThisMonth = \"ThisMonth\",\n LastMonth = \"LastMonth\",\n Previous = \"Previous\"\n}\n\nexport function getNotificationFeedFromState(log = true) {\n return store.getState().notificationFeed;\n}\n\nexport function getNotificationsNewestFirst(notifications: NotificationPreviewModel[]) {\n return [...notifications];\n}\n\nfunction getTimestamps(date: Date) {\n const now = date.getTime();\n\n const today = new Date(new Date(date).setHours(0, 0, 0));\n const dayOfWeek = (today.getDay() + 6) % 7; // mon-sun = 0-6\n\n const startOfThisWeek = today.getTime() - (dayOfWeek * 24 * 60 * 60 * 1000);\n const startOfLastWeek = startOfThisWeek - (7 * 24 * 60 * 60 * 1000);\n const startOfThisMonth = new Date(today.getFullYear(), today.getMonth(), 1).getTime();\n const startOfLastMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1).getTime();\n\n return {\n now,\n startOfThisWeek,\n startOfLastWeek,\n startOfThisMonth,\n startOfLastMonth\n };\n}\n\nexport function getNotificationsByPeriod(notifications: NotificationPreviewModel[], period: NotificationPeriod): NotificationPreviewModel[] {\n const { now, startOfThisWeek, startOfLastWeek, startOfThisMonth, startOfLastMonth } = getTimestamps(new Date());\n\n switch (period) {\n case NotificationPeriod.New: {\n return notifications.filter((notification) => notification.availableBegin >= startOfThisWeek && (!notification.availableEnd || notification.availableEnd >= now));\n }\n case NotificationPeriod.LastWeek: {\n const ns = notifications.filter((notification) => notification.availableBegin < startOfThisWeek && notification.availableBegin >= startOfLastWeek && (!notification.availableEnd || notification.availableEnd >= now));\n return ns;\n }\n case NotificationPeriod.ThisMonth: {\n const ns = notifications.filter((notification) => notification.availableBegin < startOfLastWeek && notification.availableBegin >= startOfThisMonth && (!notification.availableEnd || notification.availableEnd >= now));\n return ns;\n }\n case NotificationPeriod.LastMonth: {\n const ns = notifications.filter((notification) => notification.availableBegin < startOfThisMonth && notification.availableBegin >= startOfLastMonth && notification.availableBegin < startOfLastWeek && (!notification.availableEnd || notification.availableEnd >= now));\n return ns;\n }\n case NotificationPeriod.Previous: {\n const ns = notifications.filter((notification) => notification.availableBegin < startOfLastMonth && (!notification.availableEnd || notification.availableEnd >= now));\n return ns;\n }\n }\n}\n\nexport function getCurrentNotifications() {\n const notifications = getNotificationFeedFromState().notifications;\n const allNotifications = getNotificationsNewestFirst(notifications);\n const newNotifications = getNotificationsByPeriod(allNotifications, NotificationPeriod.New);\n const thisWeeksNotifications = getNotificationsByPeriod(allNotifications, NotificationPeriod.LastWeek);\n const thisMonthsNotifications = getNotificationsByPeriod(allNotifications, NotificationPeriod.ThisMonth);\n const lastMonthsNotifications = getNotificationsByPeriod(allNotifications, NotificationPeriod.LastMonth);\n const previousNotifications = getNotificationsByPeriod(allNotifications, NotificationPeriod.Previous);\n const currentNotifications = [...newNotifications, ...thisWeeksNotifications, ...thisMonthsNotifications, ...lastMonthsNotifications];\n\n return {\n allNotifications,\n currentNotifications,\n newNotifications,\n thisWeeksNotifications,\n thisMonthsNotifications,\n lastMonthsNotifications,\n previousNotifications\n };\n}\n\nexport function getNotificationRank(feed: AppNotificationFeedModel, notification: NotificationModel): number | null {\n const index = feed.notifications.findIndex((n) => n.id === notification.id);\n if (index === -1) return null;\n\n const count = feed.notifications.length;\n return count - index - 1;\n}\n\nexport function getNotificationIndex(feed: AppNotificationFeedModel, notification: NotificationModel): number | null {\n const index = feed.notifications.findIndex((n) => n.id === notification.id);\n if (index === -1) return null;\n\n return index;\n}\n\nexport function markNotificationFeedAsSeen() {\n const feed = getNotificationFeedFromState();\n if (!feed.notificationState) return;\n\n const unseen = feed.notifications.filter((n) => !n.seen);\n if (unseen.length === 0) return;\n\n const current = getAnalyticsCurrentNotifications();\n\n log.info({ code: \"web-220926-1539\", msg: `notifications seen: ${unseen.length}`, tags: [LogTag.Notifications] });\n\n dispatch({ type: NOTIFICATION_FEED_NOTIFICATIONS_SEEN, payload: { current, seen: unseen } });\n\n if (feed.notificationState) {\n mutateMarkNotificationsAsSeen({ notificationsState: feed.notificationState });\n }\n}\n\nexport function getNotificationsCounts(notifications: NotificationPreviewModel[]) {\n const seen = notifications.filter((n) => n.seen);\n const converted = notifications.filter((n) => n.converted);\n\n return {\n total: notifications.length,\n seen: seen.length,\n converted: converted.length\n };\n}\n","import { useMemo } from \"preact/hooks\";\nimport { useSelector } from \"react-redux\";\nimport { getNotificationsByPeriod, NotificationPeriod } from \"./helpers\";\nimport type { RootModel } from \"models/app\";\nimport type { NotificationPreviewModel } from \"models/domain/NotificationModel\";\n\nfunction useNotificationsByPeriod(notifications: NotificationPreviewModel[], period: NotificationPeriod) {\n const periodNotifications = useMemo(() => getNotificationsByPeriod(notifications, period), [notifications, period]);\n return periodNotifications;\n}\n\nexport function useCurrentNotifications(log = true) {\n // todo: this ought to share the getCurrentNotifications() from helpers\n\n const feed = useSelector((root: RootModel) => root.notificationFeed);\n const allNotifications = feed.notifications;\n\n const newNotifications = useNotificationsByPeriod(allNotifications, NotificationPeriod.New);\n const lastWeeksNotifications = useNotificationsByPeriod(allNotifications, NotificationPeriod.LastWeek);\n const thisMonthsNotifications = useNotificationsByPeriod(allNotifications, NotificationPeriod.ThisMonth);\n const lastMonthsNotifications = useNotificationsByPeriod(allNotifications, NotificationPeriod.LastMonth);\n const previousNotifications = useNotificationsByPeriod(allNotifications, NotificationPeriod.Previous);\n\n const currentNotifications = useMemo(() => [...newNotifications, ...lastWeeksNotifications, ...thisMonthsNotifications, ...lastMonthsNotifications], [newNotifications, lastWeeksNotifications, thisMonthsNotifications, lastMonthsNotifications]);\n\n return {\n feed,\n allNotifications,\n currentNotifications,\n newNotifications,\n lastWeeksNotifications,\n thisMonthsNotifications,\n lastMonthsNotifications,\n previousNotifications\n };\n}\n\nexport function useCurrentUnseenNotificationsExist(log: boolean): boolean {\n const feed = useSelector((root: RootModel) => root.notificationFeed);\n return (feed?.notSeenCount ?? 0) > 0;\n}\n","export * from \"./helpers\";\nexport * from \"./hooks\";\nexport * from \"./init\";\n\n","import { getNotificationFeedConfiguration } from \"./configuration\";\nimport { isNotificationFeedEnabled } from \"./helpers\";\nimport { pollNotificationsState } from \"./update\";\nimport { messageBus } from \"global\";\nimport { USER_LOGGED_IN } from \"global/actions\";\n\nexport function initNotificationFeedService() {\n if (!isNotificationFeedEnabled()) return;\n\n pollNotificationsState();\n\n messageBus.subscribeEvery(USER_LOGGED_IN, () => {\n pollNotificationsState();\n });\n\n const interval = getNotificationFeedConfiguration().generel.update_interval;\n setInterval(() => {\n pollNotificationsState();\n }, interval);\n}\n","import { getNotificationFeedFromState, markNotificationFeedAsSeen } from \"./helpers\";\nimport { dispatch } from \"global\";\nimport { NOTIFICATION_FEED_SET_NOTIFICATIONS } from \"global/actions\";\nimport { getNotifications, getNotificationsStatus } from \"services/backend\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { getIsLoggedInFromState } from \"services/user\";\nimport type { NotificationPreviewModel } from \"models/domain/NotificationModel\";\nimport { createEmptyNotificationsModel, fetchPlayableForNotification } from \"models/domain/NotificationModel\";\n\nlet lock = false;\n\nexport async function pollNotificationsState() {\n if (!await getIsLoggedInFromState()) {\n return;\n }\n\n if (lock) {\n log.error({ code: \"web-220613-1544\", msg: \"trying to update notifications multiple times at once\" });\n return;\n }\n lock = true;\n\n try {\n const feed = getNotificationFeedFromState(false);\n if (!feed) return;\n\n const statusResult = await getNotificationsStatus();\n if (!statusResult.model) {\n return;\n }\n\n await dispatch({\n type: NOTIFICATION_FEED_SET_NOTIFICATIONS,\n payload: {\n notSeenCount: statusResult.model.notSeenCount,\n notifications: null,\n notificationState: null\n }\n });\n } catch (e) {\n log.error({ code: \"web-220915-1335\", msg: \"error in updateNotifications\", error: e });\n }\n lock = false;\n}\n\nexport async function fetchAndMarkNotifications() {\n const result = (await getNotifications({ first: 50, after: null }));\n if (!result.model) return;\n\n const items = result.model.notifications?.items;\n if (!items || result.error) {\n log.error({ code: \"web-220613-1506\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n if (items.length === 0) {\n await dispatch({\n type: NOTIFICATION_FEED_SET_NOTIFICATIONS,\n payload: {\n notifications: [createEmptyNotificationsModel()],\n notificationState: result.model.notificationState || null,\n notSeenCount: 0\n }\n });\n return;\n }\n\n const withPlayables =\n (await Promise.all(items.map(fetchPlayableForNotification)))\n .filter((item): item is NotificationPreviewModel => !!item);\n\n await dispatch({\n type: NOTIFICATION_FEED_SET_NOTIFICATIONS,\n payload: {\n notifications: withPlayables,\n notificationState: result.model.notificationState || null,\n notSeenCount: 0\n }\n });\n\n if (result.model.notSeenCount) {\n markNotificationFeedAsSeen();\n }\n}","export * from \"./playableService\";","import { dispatch, store } from \"global\";\nimport { PLAYQUEUE_UPDATE_MIXRADIO_SESSION } from \"global/actions\";\nimport { api } from \"global/constants\";\nimport { pageContent } from \"global/constants/pageContent\";\nimport {\n getAlbumPlay,\n getArtistPlay,\n getArtistRadioPage,\n getLayoutItemPlay,\n getMixRadioPlay,\n getMyMusicTracksPlay,\n getMixedContentTrackPlay,\n getPlaylistPlay,\n getRecommendationPlay,\n getTrackChartPlay,\n getTrackRadioPlay\n} from \"services/backend\";\nimport { combineConnections } from \"services/connection/connectionFunctions\";\nimport { getAnalyticsQueueIntentPropertiesGroup } from \"services/logger/analytics/properties/groups\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { PlaylistTracksSorting } from \"generated/graphql-types\";\nimport type { MixRadioSession } from \"models/app/player/input\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type {\n PlayableContentType,\n TrackParentContentType,\n PlayQueuePlayableModel,\n ConnectionModel,\n RadioContentType,\n ResourceModel,\n TrackParentModel,\n TrackPlayablePreviewModel,\n LocationContentType,\n TrackPreviewModel,\n PlayableModel,\n PlayQueuePlayablePlayModel\n} from \"models/domain\";\nimport { FavoriteTracksSorting, createTrackPlayablePreview, getTracksFromLiveRadioModel } from \"models/domain\";\nimport type { LiveRadioParentContentType, LiveRadioParentModel } from \"models/domain/LiveRadioPlayableModel\";\nimport type { MixRadioPreviewModel, MixRadioPlayModel } from \"models/domain/MixRadioModel\";\nimport { MixRadioLinkParentType, createMixRadioPreviewModelFromPlayModel } from \"models/domain/MixRadioModel\";\nimport { isNotificationPlayable } from \"models/domain/NotificationModel\";\nimport type { SearchMixedResultPreviewModel } from \"models/domain/SearchMixedResultModel\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\n\nexport function isDraggable(resource: ResourceModel) {\n return isPlayable(resource) && resource.contentType !== ContentType.MixRadio;\n}\n\nexport function isPlayable(resource: ResourceModel): resource is PlayableModel {\n if (resource.contentType === ContentType.MixedContent) {\n if (resource.mixedContentType === ContentType.UserRecommendations) return false;\n if (resource.mixedContentType === ContentType.UserHistory) return false;\n if (resource.mixedContentType === ContentType.LiveRadioCategory) return false;\n if (resource.mixedContentType === ContentType.YourMixesPage) return false;\n }\n\n if (resource.contentType === ContentType.Notification) {\n return isNotificationPlayable(resource);\n }\n\n return isPlayableContentType(resource.contentType);\n}\n\nexport function isPlayableContentType(type: ContentType): type is PlayableContentType {\n if (isPlayableParentContentType(type)) return true;\n if (type === ContentType.TrackPlayable) return true;\n // if (type === ContentType.LiveRadioPlayable) return true;\n\n return false;\n}\n\nexport function isLiveRadioParent(resourceModel: ResourceModel): resourceModel is LiveRadioParentModel {\n return isLiveRadioParentContentType(resourceModel.contentType);\n}\n\nexport function isLiveRadioParentContentType(type: LocationContentType): type is LiveRadioParentContentType {\n switch (type) {\n case ContentType.LiveRadioCategory:\n case ContentType.LayoutItem:\n return true;\n }\n return false;\n}\n\nexport function isTrackParent(resourceModel: ResourceModel): resourceModel is TrackParentModel {\n return isPlayableParentContentType(resourceModel.contentType);\n}\n\nfunction isPlayableParentContentType(type: ContentType): type is TrackParentContentType {\n switch (type) {\n case ContentType.Album:\n case ContentType.Artist:\n case ContentType.ArtistTracks:\n case ContentType.ArtistRadio:\n case ContentType.EndlessPlay:\n case ContentType.LayoutItem:\n case ContentType.LiveRadio:\n case ContentType.LiveRadioPlayable:\n case ContentType.LiveRadioTrack:\n case ContentType.MixRadio:\n case ContentType.MyMusicTracks:\n case ContentType.Notification:\n case ContentType.MixedContent:\n case ContentType.Playlist:\n case ContentType.QueueTrack:\n case ContentType.SearchResultTrack:\n case ContentType.TrackChart:\n case ContentType.TrackRadio:\n case ContentType.TrackRecommendation:\n return true;\n }\n return false;\n}\n\nexport function getTrackPlayablePreviews(tracks: TrackPreviewModel[], parent: TrackParentModel) {\n return tracks.map((track) => createTrackPlayablePreview(track, parent));\n}\n\nexport function getTrackAndParentFromPlayable(playable: PlayQueuePlayableModel): { track: TrackPreviewModel | null; parent: TrackParentModel } {\n if (playable.contentType === ContentType.TrackPlayable) {\n return { track: playable.track, parent: playable.parent };\n }\n if (playable.contentType === ContentType.QueueTrack) {\n return { track: playable.track, parent: playable };\n }\n return { track: null, parent: playable };\n}\n\nexport function isRadioContentType(resourceContentType: LocationContentType): resourceContentType is RadioContentType {\n if (resourceContentType === ContentType.ArtistRadio) return true;\n if (resourceContentType === ContentType.LiveRadioPlayable) return true;\n if (resourceContentType === ContentType.MixRadio) return true;\n if (resourceContentType === ContentType.TrackRadio) return true;\n\n return false;\n}\n\nexport function isSearchMixedResultPreviewModel(value: ResourceModel | null): value is SearchMixedResultPreviewModel {\n switch (value?.contentType) {\n case ContentType.TrackPlayable:\n case ContentType.Album:\n case ContentType.Artist:\n case ContentType.Playlist:\n return true;\n }\n return false;\n}\n\nexport async function getAvailableTracksAndConnectionForQueue(\n resource: TrackParentModel\n): Promise<{ tracks: TrackPreviewModel[] | null; connection: ConnectionModel<TrackPreviewModel> | null }> {\n const result = await getTracksAndConnectionForQueue(resource);\n\n const resultTracks = result.tracks;\n if (resultTracks == null) {\n log.error({ code: \"web-220217-1112\", msg: DefaultLogMessage.UnexpectedNull, data: { resource } });\n return { connection: result.connection, tracks: null };\n }\n const tracks = resultTracks.filter((track) => track.availableInSubscription);\n\n if (tracks.length == 0) {\n alert(store.getState().player.input);\n\n log.error({ code: \"web-220217-1114\", msg: DefaultLogMessage.UnexpectedNull });\n return { connection: result.connection, tracks };\n }\n\n return { connection: result.connection, tracks };\n}\n\nasync function getTracksAndConnectionForQueue(resource: TrackParentModel): Promise<{ tracks: TrackPreviewModel[] | null; connection: ConnectionModel<TrackPreviewModel> | null }> {\n if (resource.contentType === ContentType.SearchResultTrack || resource.contentType === ContentType.MixedContentTrack)\n return { tracks: resource.track ? [resource.track] : [], connection: null };\n if (resource.contentType === ContentType.LiveRadio) {\n const nowPlaying = resource.tracks?.nowPlaying?.track;\n const recentlyPlayedTracks = resource.tracks?.recentlyPlayedTracks?.items;\n const tracks = [];\n if (nowPlaying) {\n tracks.push(nowPlaying);\n }\n\n recentlyPlayedTracks?.forEach((item) => {\n tracks.push(item.track);\n });\n\n return { tracks, connection: null };\n }\n\n const existing = tryGetTrackConnection(resource) ?? null;\n\n if (existing) {\n if (!existing.pageInfo.hasNextPage) {\n log.info({ code: \"web-210211-1531\", msg: \"used existing tracks in getTracksForQueue\", data: { existing: existing.items.length } });\n return { tracks: existing.items, connection: existing };\n }\n\n if (existing.pageInfo.endCursor == null) log.error({ code: \"web-210810-1642\", msg: DefaultLogMessage.UnexpectedNull });\n if (existing.items.length === 0) log.error({ code: \"web-210811-1148\", msg: DefaultLogMessage.UnexpectedValue });\n\n const after = existing.pageInfo.endCursor ?? undefined;\n if (after == null) log.error({ code: \"web-210811-1052\", msg: DefaultLogMessage.UnexpectedNull });\n\n const fetchedPlay = await getTrackParentPlayModelFromBackend(resource, existing.items.length, after);\n\n if (!fetchedPlay) {\n log.error({ code: \"web-210811-1424\", msg: DefaultLogMessage.UnexpectedValue, data: { resource, after } });\n return { tracks: null, connection: null };\n }\n\n const fetched = tryGetTrackConnection(fetchedPlay);\n if (!fetched) {\n log.error({ code: \"web-210811-1427\", msg: DefaultLogMessage.UnexpectedValue });\n return { tracks: null, connection: null };\n }\n\n log.info({\n code: \"web-210211-1431\",\n msg: \"combined existing and fetched tracks in getTracksForQueue\",\n data: {\n existing: existing.items.length,\n fetched: fetched.items.length\n }\n });\n\n const combined = combineConnections(existing, fetched);\n return { tracks: combined.items, connection: combined };\n } else {\n const playModel = await getTrackParentPlayModelFromBackend(resource, 0);\n if (!playModel) return { tracks: null, connection: null };\n const tracks = getTracksFromTrackParent(playModel);\n const connection = tryGetTrackConnection(playModel);\n\n if (tracks == null) log.error({ code: \"web-21081-1547\", msg: DefaultLogMessage.UnexpectedNull });\n if (connection == null) {\n log.error({\n code: \"web-21081-1551\",\n msg: \"connection == null in tryGetTrackConnection\",\n data: {\n \"resource type\": resource.type,\n \"resource id\": resource.id,\n \"parent type\": playModel.type,\n \"parent id\": playModel.id\n }\n });\n }\n log.info({ code: \"web-210211-1531\", msg: \"fetched all tracks in getTracksForQueue\", data: { fetched: tracks?.length ?? 0 } });\n return { tracks, connection };\n }\n}\n\nexport function getTracksFromTrackParent(parent: PlayQueuePlayablePlayModel): TrackPreviewModel[] | null {\n if (parent.contentType === ContentType.SearchResultTrack) return parent.track ? [parent.track] : null;\n if (parent.contentType === ContentType.MixedContentTrack) return parent.track ? [parent.track] : null;\n if (parent.contentType === ContentType.LiveRadio) return null; //todo: is this correct?\n if (parent.contentType === ContentType.Notification) return null;\n if (parent.contentType === ContentType.LiveRadioPlayable) return getTracksFromLiveRadioModel(parent.liveRadio);\n\n if (parent.contentType === ContentType.LayoutItem) return parent.content.tracks?.items ?? null;\n\n return parent.tracks?.items ?? null;\n}\n\nexport async function getTrackParentPlayModelFromBackend(resource: TrackParentModel | PlayableModel, index: number, after?: string): Promise<PlayQueuePlayablePlayModel | null> {\n const type = resource.contentType;\n switch (type) {\n case ContentType.Album:\n return (await getAlbumPlay({ after, first: api.graphqlMaxPlayItemsFetch, id: resource.id })).model;\n\n case ContentType.Artist:\n case ContentType.ArtistTracks:\n return (await getArtistPlay({ after, first: api.graphqlMaxPlayItemsFetch - index, id: resource.id }, index)).model;\n\n case ContentType.ArtistRadio:\n return (await getArtistRadioPage({ first: pageContent.artistRadioPageItemsLimit, id: resource.id })).model;\n\n case ContentType.LayoutItem:\n return (await getLayoutItemPlay({ after, first: api.graphqlMaxPlayItemsFetch, pageId: resource.pageId, itemId: resource.id })).model;\n\n case ContentType.MixRadio:\n return (await getMixRadioPlay({ after, id: resource.id, first: api.mixRadioCountFetch }, resource.parent)).model;\n\n case ContentType.MyMusicTracks:\n return (await getMyMusicTracksPlay({ after, first: api.graphqlMaxPlayItemsFetch, orderBy: FavoriteTracksSorting.LatestAdded })).model;\n\n case ContentType.Playlist:\n return (await getPlaylistPlay({ after, first: api.graphqlMaxPlayItemsFetch, id: resource.id, orderBy: PlaylistTracksSorting.TrackPosition })).model;\n\n case ContentType.EndlessPlay:\n case ContentType.SearchResultTrack:\n case ContentType.MixedContentTrack:\n return resource;\n\n case ContentType.TrackChart:\n return (await getTrackChartPlay({ after, first: api.graphqlMaxPlayItemsFetch, id: resource.id })).model;\n\n case ContentType.TrackRadio:\n return (await getTrackRadioPlay({ after, id: resource.id, first: pageContent.trackRadioPageItemsLimit })).model;\n\n case ContentType.TrackRecommendation:\n return (await getRecommendationPlay({ id: resource.id, first: api.graphqlMaxPlayItemsFetch }, resource.owner)).model; //TODO: v2 - is first correct?\n\n case ContentType.LiveRadioPlayable:\n log.error({ code: \"web-220301-1607\", msg: \"live radio tracks not implemented\" });\n return null;\n\n case ContentType.LiveRadio:\n case ContentType.LiveRadioTrack:\n case ContentType.QueueTrack:\n return null;\n\n case ContentType.Notification: {\n if (resource.playable == null) return null;\n if (resource.playable.contentType === ContentType.TrackPlayable) return resource;\n return getTrackParentPlayModelFromBackend(resource.playable, index);\n }\n\n case ContentType.MixedContent: {\n const contextType = resource.mixedContentType;\n if (contextType === ContentType.MyMusicTracks)\n return (await getMyMusicTracksPlay({ after, first: api.graphqlMaxPlayItemsFetch, orderBy: FavoriteTracksSorting.LatestAdded })).model;\n\n const contextId = resource.mixedContentId;\n if (contextId == null) {\n log.error({ code: \"web-211026-1627\", msg: \"contextId is null\", data: { contextType } });\n return null;\n }\n\n switch (contextType) {\n case ContentType.Album:\n return (await getAlbumPlay({ after, first: api.graphqlMaxPlayItemsFetch, id: contextId })).model;\n case ContentType.Artist:\n case ContentType.ArtistRadio:\n return (await getArtistPlay({ after, first: api.graphqlMaxPlayItemsFetch, id: contextId }, 0)).model;\n case ContentType.Playlist:\n return (await getPlaylistPlay({ after, first: api.graphqlMaxPlayItemsFetch, id: contextId, orderBy: PlaylistTracksSorting.TrackPosition })).model;\n case ContentType.MixRadio:\n return (await getMixRadioPlay({ after, first: api.graphqlMaxPlayItemsFetch, id: contextId }, { type: MixRadioLinkParentType.MixRadios })).model;\n case ContentType.UserRecommendations:\n case ContentType.UserHistory:\n case ContentType.YourMixesPage:\n return null;\n case ContentType.TrackPlayable:\n return (await getMixedContentTrackPlay({ id: contextId })).model;\n case ContentType.TrackChart:\n return (await getTrackChartPlay({ after, first: api.graphqlMaxPlayItemsFetch, id: contextId })).model;\n case ContentType.TrackRadio:\n return (await getTrackRadioPlay({ after, first: pageContent.trackRadioPageItemsLimit, id: contextId })).model;\n }\n contextType;\n }\n }\n type;\n return null;\n}\n\nfunction tryGetTrackConnection(resource: TrackParentModel): ConnectionModel<TrackPreviewModel> | null {\n if (\n resource.contentType === ContentType.SearchResultTrack ||\n resource.contentType === ContentType.MixedContentTrack ||\n resource.contentType === ContentType.LiveRadioPlayable ||\n resource.contentType === ContentType.LiveRadioTrack\n ) {\n return null;\n }\n\n switch (resource.type) {\n case DomainModelType.Page:\n if (resource.contentType === ContentType.Artist) {\n if (resource?.tracksSection?.tracks) {\n return resource?.tracksSection?.tracks;\n } else {\n log.error({ code: \"web-220216-1615\", msg: \"artist tracks is empty\" });\n return null;\n }\n } else return resource.tracks;\n case DomainModelType.Section:\n case DomainModelType.Play: {\n if (resource.contentType === ContentType.LiveRadio) {\n return null;\n }\n if (resource.contentType === ContentType.LayoutItem) {\n return resource.content.tracks;\n }\n return resource.tracks;\n }\n default: {\n return null;\n }\n }\n}\n\nexport async function updateSessionAndGetTracks(playable: PlayQueuePlayableModel, context: PreviewContextModel): Promise<TrackPlayablePreviewModel[]> {\n const parent = getTrackAndParentFromPlayable(playable).parent;\n if (parent.contentType === ContentType.MixRadio) {\n const connection = tryGetTrackConnection(parent);\n updateMixRadioSession(parent, connection, context);\n }\n const { tracks, connection } = await getAvailableTracksAndConnectionForQueue(parent);\n\n if (parent.contentType === ContentType.MixRadio) {\n updateMixRadioSession(parent, connection, context);\n }\n\n if (!tracks) {\n log.error({ code: \"web-210811-1409\", msg: DefaultLogMessage.UnexpectedNull });\n return [];\n }\n\n return getTrackPlayablePreviews(tracks, parent);\n}\n\nexport const getPlayablesTracks = async (playables: PlayQueuePlayableModel[]): Promise<TrackPlayablePreviewModel[]> => {\n const trackPlayables: TrackPlayablePreviewModel[] = [];\n\n for (const playable of playables) {\n const parent = getTrackAndParentFromPlayable(playable).parent;\n\n if (parent.contentType === ContentType.MixRadio) {\n log.error({ code: \"web-210811-1410\", msg: DefaultLogMessage.UnexpectedNull });\n continue;\n }\n\n const { tracks } = await getAvailableTracksAndConnectionForQueue(parent);\n\n if (!tracks) {\n log.error({ code: \"web-210811-1411\", msg: DefaultLogMessage.UnexpectedNull });\n continue;\n }\n\n getTrackPlayablePreviews(tracks, parent).forEach((value) => trackPlayables.push(value));\n }\n\n return trackPlayables;\n};\n\nexport function updateMixRadioSession(mixRadio: MixRadioPreviewModel | MixRadioPlayModel, connection: ConnectionModel<TrackPreviewModel> | null, context: PreviewContextModel) {\n if (mixRadio.type === DomainModelType.Play) {\n mixRadio = createMixRadioPreviewModelFromPlayModel(mixRadio);\n }\n\n const queueIntentData2 = getAnalyticsQueueIntentPropertiesGroup(context);\n\n const mixRadioSession: MixRadioSession = {\n mixRadio,\n connection: connection ? { endCursor: connection.pageInfo.endCursor, hasNextPage: connection.pageInfo.hasNextPage } : null,\n queueIntentData2\n };\n\n dispatch({\n type: PLAYQUEUE_UPDATE_MIXRADIO_SESSION,\n payload: { mixRadioSession }\n });\n}\n\nexport function getDurationFromTracks(tracks: TrackPreviewModel[]): number {\n let duration = 0;\n tracks.forEach((track) => (duration += track.duration));\n return duration;\n}\n\nexport function isTracksEmptyOrNotAvailableInSubscription(tracks: TrackPreviewModel[]) {\n for (const track of tracks) {\n if (track.availableInSubscription) return false;\n }\n return true;\n}\n\n// todo: extend this until it handles every conceivable playable-type as input, not just PlayableModel\nexport async function getTracks(playable: PlayableModel | null): Promise<TrackPreviewModel[] | null> {\n if (!playable) return null;\n\n const parent = await getTrackParentPlayModelFromBackend(playable, 0);\n if (!parent) return null;\n\n // todo: ensure parent has loaded all pages? for finite types (i.e. not radios etc)\n\n const tracks = getTracksFromTrackParent(parent);\n return tracks;\n}\n","import { isControllerChromecastFromState } from \"../service/helpers\";\nimport { syncCastFromLocalChange } from \"./service/actions\";\nimport { resumeTimeoutCheck } from \"./service/actions/resumeTimeoutCheck\";\nimport { playerRepeat, playerSetMute, playerSetVolume, userLoggedIn, userLoggedOut } from \"./service/localEvents\";\nimport { addCastApiListener } from \"./service/setup\";\nimport { messageBus } from \"global\";\nimport { AUDIO_INPUT_AUDIOS_CHANGE, AUDIO_INPUT_AUDIO_PLAY_CHANGE, PLAYER_REPEAT, PLAYER_SET_MUTE, PLAYER_SET_VOLUME, USER_LOGGED_IN, USER_LOGGED_OUT } from \"global/actions\";\nimport { log, LogTag } from \"services/logger\";\n\nexport const initCastService = async () => {\n addCastApiListener();\n resumeTimeoutCheck();\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIOS_CHANGE, async (msg) => {\n if (!isControllerChromecastFromState()) return;\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `AUDIO_INPUT_AUDIOS_CHANGE` });\n\n syncCastFromLocalChange(msg.payload.context);\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIO_PLAY_CHANGE, async (msg) => {\n if (!isControllerChromecastFromState()) return;\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `AUDIO_INPUT_AUDIO_PLAY_CHANGE` });\n\n syncCastFromLocalChange(msg.payload.context);\n });\n\n messageBus.subscribeEvery(PLAYER_SET_VOLUME, async () => {\n if (!isControllerChromecastFromState()) return;\n playerSetVolume();\n });\n\n messageBus.subscribeEvery(PLAYER_SET_MUTE, async () => {\n if (!isControllerChromecastFromState()) return;\n playerSetMute();\n });\n\n messageBus.subscribeEvery(PLAYER_REPEAT, async () => {\n if (!isControllerChromecastFromState()) return;\n playerRepeat();\n });\n\n messageBus.subscribeEvery(USER_LOGGED_IN, async () => {\n if (!isControllerChromecastFromState()) return;\n userLoggedIn();\n });\n\n messageBus.subscribeEvery(USER_LOGGED_OUT, async () => {\n if (!isControllerChromecastFromState()) return;\n userLoggedOut();\n });\n};\n","import { castSendMessage } from \"../castRequests/session/sendMessage\";\nimport type { CastAuthenticateMessageDataModel } from \"../models\";\nimport { SessionMessage } from \"../models\";\nimport { store } from \"global\";\nimport { getTokens } from \"services/appSession/operations/sessionTokens\";\nimport { environment } from \"services/environment\";\nimport { log } from \"services/logger\";\nimport { LoginState } from \"models/app\";\n\nexport async function authenticate(): Promise<boolean> {\n \n const loggedIn = store.getState().user.state === LoginState.LoggedIn;\n const { accessToken } = await getTokens();\n\n if (loggedIn && !accessToken) {\n log.error({ code: \"web-230106-1355\", msg: \"user is logged in but has no access token\" });\n return false;\n }\n\n const data: CastAuthenticateMessageDataModel = {\n platform: \"web\",\n portal: environment.chromecastPortal,\n portalToken: accessToken\n };\n\n return castSendMessage(SessionMessage.Authenticate, data);\n}","import { addCastContextListeners, removeCastContextListeners } from \"../setup\";\nimport { setPlayerModeLocal } from \"./setPlayerMode\";\nimport { dispatch } from \"global\";\nimport { CAST_SET_AVAILABLE } from \"global/actions\";\nimport { environment } from \"services/environment\";\nimport { log, LogTag } from \"services/logger\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport function setCastAvailable(isAvailable: boolean) {\n const context = { action: AudioContextAction.ChromecastApiAvailable, trace: null };\n dispatch({ type: CAST_SET_AVAILABLE, payload: { isAvailable, context } });\n\n if (isAvailable) {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230106-1534\", msg: `setting chromecastRecieverAppId: ${environment.chromecastRecieverAppId}` });\n\n cast.framework.CastContext.getInstance().setOptions({\n receiverApplicationId: environment.chromecastRecieverAppId,\n autoJoinPolicy: chrome.cast.AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED\n });\n\n addCastContextListeners();\n } else {\n setPlayerModeLocal(context);\n removeCastContextListeners();\n }\n}\n","import { addCastSession, hasCastSession } from \"../setup\";\nimport { OperationSource, tryOperation } from \"./operation\";\nimport { stopCastSession } from \"./stopCastSession\";\nimport { syncResumeFromRemote } from \"./sync\";\nimport { log, LogTag } from \"services/logger\";\nimport { isControllerChromecastFromState } from \"services/player/controllers/service/helpers\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport async function castSessionResumed(context: AudioContextModel) {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230109-1205\", msg: `castSessionResumed` });\n\n if (!isControllerChromecastFromState()) {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230109-1207\", msg: `cast session resume prevented` });\n stopCastSession(context);\n return;\n }\n\n if (hasCastSession()) {\n log.error({ tags: [LogTag.Chromecast], code: \"web-230201-1600\", msg: \"there is already a session\" });\n return;\n }\n\n await addCastSession();\n\n const sync = await tryOperation(() => syncResumeFromRemote(context), OperationSource.Chromecast);\n log.info({ tags: [LogTag.Chromecast], code: \"web-230109-1529\", msg: `castSessionResumed > sync: ${sync}` });\n}\n","import { onNextAuthenticated } from \"../castEvents/session/onCustomCastMessageAuthenticate\";\nimport { addCastSession, hasCastSession } from \"../setup\";\nimport { resetOperation } from \"./operation\";\nimport { resetRemoteCastQueue } from \"./remoteCastQueue\";\nimport { setPlayerModeChromecast } from \"./setPlayerMode\";\nimport { syncCastFromLocalChange } from \"./sync\";\nimport { store } from \"global\";\nimport { log, LogTag } from \"services/logger\";\nimport { LoginState } from \"models/app\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport async function castSessionStarted(context: AudioContextModel) {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230109-1204\", msg: `castSessionStarted` });\n\n if (hasCastSession()) {\n log.error({ tags: [LogTag.Chromecast], code: \"web-230201-1600\", msg: \"there is already a session\" });\n return;\n }\n\n setPlayerModeChromecast(context);\n resetOperation();\n resetRemoteCastQueue();\n\n await addCastSession();\n\n const loggedIn = store.getState().user.state === LoginState.LoggedIn;\n if (loggedIn) {\n const auth = await onNextAuthenticated(true);\n log.info({ tags: [LogTag.Chromecast], code: \"web-230106-1610\", msg: `castSessionStarted > auth: ${auth}` });\n }\n\n const sync = await syncCastFromLocalChange(context);\n log.info({ tags: [LogTag.Chromecast], code: \"web-230109-1529\", msg: `castSessionStarted > sync: ${sync}` });\n}\n","import { hasCastSession, removeCastSession } from \"../setup\";\nimport { resetLocalCastQueue } from \"./localCastQueue\";\nimport { resetOperation } from \"./operation\";\nimport { resetRemoteCastQueue } from \"./remoteCastQueue\";\nimport { setPlayerModeLocal } from \"./setPlayerMode\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport function castSessionStopped(context: AudioContextModel) {\n setPlayerModeLocal(context);\n \n resetOperation();\n resetLocalCastQueue();\n resetRemoteCastQueue();\n if (hasCastSession()) removeCastSession();\n}\n","export * from \"./authenticate\";\nexport * from \"./castAvailable\";\nexport * from \"./castSessionResumed\";\nexport * from \"./castSessionStarted\";\nexport * from \"./castSessionStopped\";\nexport * from \"./localCastQueue\";\nexport * from \"./operation\";\nexport * from \"./remoteCastQueue\";\nexport * from \"./resumeTimeoutCheck\";\nexport * from \"./setPlayerMode\";\nexport * from \"./stopCastSession\";\nexport * from \"./stopQueue\";\nexport * from \"./sync\";\nexport * from \"./syncCurrent\";\nexport * from \"./syncExistingQueue\";\nexport * from \"./syncNewQueue\";\nexport * from \"./syncPlayState\";\nexport * from \"./syncSettings\";\nexport * from \"./toggleCastSession\";","import { store } from \"global\";\nimport { playerConfig } from \"global/constants\";\nimport { getCurrentAudio } from \"services/player/inputs/service/helpers\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\ninterface LocalCastQueue {\n audios: AudioInputItemModel[];\n audiosCastIds: number[];\n currentIndex: number | null;\n currentAudio: AudioInputItemModel | null;\n}\n\nconst initial: LocalCastQueue = {\n audios: [],\n currentIndex: null,\n currentAudio: null,\n audiosCastIds: []\n};\n\nlet queue = initial;\n\nexport function getLocalCastQueue() {\n return queue;\n}\n\nexport function updateLocalCastQueue() {\n queue = _getLocalCastQueue();\n}\n\nexport function resetLocalCastQueue() {\n queue = initial;\n}\n\nfunction _getLocalCastQueue(): LocalCastQueue {\n let inputAudios = store.getState().audioInput.audios;\n inputAudios = inputAudios.filter((audio) => (audio.input === AudioInputType.LiveRadio ? !!audio.url2 : true));\n if (inputAudios.length == 0) return { audios: [], audiosCastIds: [], currentIndex: null, currentAudio: null };\n\n const current = getCurrentAudio(inputAudios);\n\n let currentIndex = current.currentIndex;\n const currentAudio = current.currentAudio;\n\n if (currentIndex == null || currentAudio == null) return { audios: [], audiosCastIds: [], currentIndex: null, currentAudio: null };\n\n let sliceIndex = currentIndex - playerConfig.chromecastQueueMaxLookbackCount;\n if (sliceIndex < 0) sliceIndex = 0;\n\n const audios = inputAudios.slice(sliceIndex, sliceIndex + playerConfig.chromecastQueueMaxCount);\n currentIndex = currentIndex - sliceIndex;\n\n const audiosCastIds = audios.map((audio) => audio.chromecastId);\n // console.warn({ audios, audiosCastIds, currentIndex, currentAudio });\n\n return { audios, audiosCastIds, currentIndex, currentAudio };\n}\n","import { updateLocalCastQueue } from \"./localCastQueue\";\nimport { isUnloading } from \"global/config\";\nimport { log, LogTag } from \"services/logger\";\nimport { isControllerChromecastFromState } from \"services/player/controllers/service/helpers\";\n\nlet current: OperationSource | undefined;\nconst waiting: (() => void)[] = [];\n\nexport enum OperationSource {\n Local = \"Local\",\n Chromecast = \"Chromecast\"\n}\n\nexport function inOperation(): boolean {\n return !!current;\n}\n\nexport function resetOperation() {\n current = undefined;\n}\n\nexport async function tryOperation(fn: () => Promise<boolean>, operation: OperationSource): Promise<boolean> {\n if (!isControllerChromecastFromState()) return false;\n if (isUnloading) return false;\n\n if (current) {\n if (current === OperationSource.Local && operation == OperationSource.Local) {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230214-0909\", msg: \"queuing local operation\" });\n\n return new Promise<boolean>((resolve) => {\n const waitingFn = async () => {\n const result = await tryOperation(fn, operation);\n resolve(result);\n };\n waiting.push(waitingFn);\n });\n }\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230214-0909\", msg: `prevented operation: ${operation}` });\n return false;\n }\n\n current = operation;\n if(current === OperationSource.Local) updateLocalCastQueue();\n\n let result: boolean;\n\n try {\n result = await fn();\n } catch (e) {\n result = false;\n }\n\n current = undefined;\n\n const next = waiting.shift();\n next && next();\n\n return result;\n}\n\nexport async function waitOne(): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n });\n });\n}\n","import { getLocalCastQueue, updateLocalCastQueue } from \"./localCastQueue\";\n\nlet _queue: number[] = [];\n\nexport function getRemoteCastQueue() {\n return _queue;\n}\n\nexport function setRemoteCastQueue(queue: number[]) {\n _queue = queue;\n}\n\nexport function resetRemoteCastQueue() {\n setRemoteCastQueue([]);\n}\n\nexport function assumeRemoteCastQueueSynched() {\n updateLocalCastQueue();\n const ids = [...getLocalCastQueue().audiosCastIds];\n setRemoteCastQueue(ids);\n}\n","import { hasCastSession } from \"../setup\";\nimport { stopCastSession } from \"./stopCastSession\";\nimport { log, LogTag } from \"services/logger\";\nimport { isControllerChromecastFromState } from \"services/player/controllers/service/helpers\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport function resumeTimeoutCheck() {\n if (!isControllerChromecastFromState()) return;\n if (hasCastSession()) return;\n\n setTimeout(() => {\n if (!isControllerChromecastFromState()) return;\n if (hasCastSession()) return;\n\n log.warn({ tags: [LogTag.Chromecast], code: \"web-211029-1319\", msg: `session not resumed in time` });\n\n stopCastSession({ action: AudioContextAction.ChromecastResumeTimeoutOnPageLoad, trace: null });\n }, 5000);\n}\n","import { dispatch, store } from \"global\";\nimport { PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE } from \"global/actions\";\nimport { AudioControllerType, PlayerOutputType } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport function setPlayerModeLocal(context: AudioContextModel) {\n set(AudioControllerType.Local, PlayerOutputType.Browser, context);\n}\n\nexport function setPlayerModeChromecast(context: AudioContextModel) {\n set(AudioControllerType.Chromecast, PlayerOutputType.Chromecast, context);\n}\n\nfunction set(controller: AudioControllerType, output: PlayerOutputType, context: AudioContextModel) {\n const player = store.getState().player;\n if (player.controller === controller && player.output === output) return;\n\n dispatch({\n type: PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE,\n payload: {\n controller,\n output,\n context\n }\n });\n}\n","import { getCastSession, hasCastSession } from \"../setup/castSessionListeners\";\nimport { castSessionStopped } from \"./castSessionStopped\";\nimport { LogTag, log } from \"services/logger\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport function stopCastSession(context: AudioContextModel) {\n log.debug([LogTag.Chromecast], () => ({ code: \"web-211029-1319\", msg: `stop cast session` }));\n\n if (hasCastSession()) getCastSession()?.endSession(true);\n cast.framework.CastContext.getInstance().endCurrentSession(true);\n\n castSessionStopped(context);\n}\n","import { castQueueStop } from \"../castRequests/media/stop\";\nimport { resetRemoteCastQueue } from \"./remoteCastQueue\";\n\nexport async function stopQueueFromLocal(): Promise<boolean> {\n const send = await castQueueStop();\n if (!send) return false;\n\n resetRemoteCastQueue();\n return true;\n}\n","import { onNextMediaSessionUpdate } from \"../castEvents/mediaSession/onMediaSessionUpdate\";\nimport { getCurrentAudioInSync, getRemoteCastState } from \"../helpers\";\nimport { isOperationModifyingQueue } from \"../helpers/operation\";\nimport { isLocalCastQueueEmpty } from \"../helpers/queue\";\nimport { hasCastMediaSession, hasCastSession } from \"../setup\";\nimport { inOperation, OperationSource, tryOperation } from \"./operation\";\nimport { assumeRemoteCastQueueSynched } from \"./remoteCastQueue\";\nimport { stopCastSession } from \"./stopCastSession\";\nimport { stopQueueFromLocal } from \"./stopQueue\";\nimport { handleLastInQueueAndStopped, syncCurrentFromRemote } from \"./syncCurrent\";\nimport { syncNewQueueFromLocal } from \"./syncNewQueue\";\nimport { syncPlayStateFromRemote, syncPlayStateFromLocal } from \"./syncPlayState\";\nimport { syncResumeSettingsFromRemote } from \"./syncSettings\";\nimport { log, LogTag } from \"services/logger\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport async function syncCastFromLocalChange(context: AudioContextModel): Promise<boolean> {\n const castState = getRemoteCastState();\n const connected = castState === cast.framework.CastState.CONNECTING || castState === cast.framework.CastState.CONNECTED;\n\n if (!connected) {\n log.warn({ code: \"web-230208-1529\", msg: \"user performed local change while cast state offline - we must disconnect and play locally\" });\n stopCastSession(context);\n return true;\n }\n\n if (!hasCastSession()) return true;\n\n const ok = await tryOperation(() => _syncCastFromLocalChange(context), OperationSource.Local);\n\n if (ok && !inOperation()) {\n await tryOperation(async () => {\n if (hasCastMediaSession()) await onNextMediaSessionUpdate(true);\n return await syncMediaLoadedFromRemote({ action: AudioContextAction.ChromecastLocalSync, trace: null });\n }, OperationSource.Chromecast);\n }\n\n return ok;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nasync function _syncCastFromLocalChange(context: AudioContextModel): Promise<boolean> {\n if (!hasCastSession()) return true;\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `syncCastFromLocalChange...` });\n\n let ok: boolean;\n\n if (!hasCastMediaSession()) {\n if (isLocalCastQueueEmpty()) return true;\n\n ok = await syncNewQueueFromLocal();\n return ok;\n }\n\n if (isLocalCastQueueEmpty()) {\n ok = await stopQueueFromLocal();\n return ok;\n }\n\n if (isOperationModifyingQueue()) {\n ok = await syncNewQueueFromLocal(true);\n return ok;\n }\n\n const { currentSynced } = getCurrentAudioInSync();\n if (!currentSynced) {\n ok = await syncNewQueueFromLocal(true);\n return ok;\n }\n\n // ok = await syncExistingQueueFromLocal();\n // if (!ok) return false;\n\n // ok = await syncCurrentFromLocal();\n // if (!ok) return false;\n\n ok = await syncPlayStateFromLocal();\n if (!ok) return false;\n\n return true;\n}\n\nexport async function syncResumeFromRemote(context: AudioContextModel): Promise<boolean> {\n if (hasCastMediaSession()) await onNextMediaSessionUpdate(true);\n\n await syncResumeSettingsFromRemote();\n assumeRemoteCastQueueSynched();\n\n const last = await handleLastInQueueAndStopped(context);\n if (last) return true;\n\n if (!hasCastMediaSession() && isLocalCastQueueEmpty()) return true;\n\n let ok: boolean;\n\n ok = await syncCurrentFromRemote(context);\n if (!ok) return false;\n\n ok = await syncPlayStateFromRemote(context);\n if (!ok) return false;\n\n return true;\n}\n\nexport async function syncMediaLoadedFromRemote(context: AudioContextModel): Promise<boolean> {\n const last = await handleLastInQueueAndStopped(context);\n if (last) return true;\n\n if (!hasCastMediaSession()) return true;\n\n let ok: boolean;\n\n ok = await syncCurrentFromRemote(context);\n if (!ok) return false;\n\n ok = await syncPlayStateFromRemote(context);\n if (!ok) return false;\n\n return true;\n}\n","import { onNextMediaSessionUpdate } from \"../castEvents/mediaSession/onMediaSessionUpdate\";\nimport { castQueueJumpToItem } from \"../castRequests/media/queueJumpToItem\";\nimport { getCurrentAudioFromRemote, getCurrentAudioInSync, isCurrentAudioLastInQueue } from \"../helpers\";\nimport { getCastMediaSession, getCastPlayer, hasCastMediaSession } from \"../setup\";\nimport { getRemoteCastQueue } from \"./remoteCastQueue\";\nimport { setRemotePlayPause } from \"./syncPlayState\";\nimport { dispatch } from \"global\";\nimport { AUDIO_INPUT_PLAY_AUDIO, AUDIO_OUTPUT_AUDIO_ENDED } from \"global/actions\";\nimport { log, LogTag } from \"services/logger\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport async function syncCurrentFromLocal(): Promise<boolean> {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: \"syncCurrentFromLocal...\" });\n\n const { currentSynced: inSync, currentLocal } = getCurrentAudioInSync();\n if (inSync || !currentLocal) return true;\n\n const jumpTo = currentLocal.chromecastId;\n const items = getRemoteCastQueue();\n\n if (items.indexOf(jumpTo) === -1) {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230214-1438\", msg: \"current not in remote queue\" });\n return false;\n }\n\n let ok: boolean;\n\n ok = await setRemotePlayPause(false, null);\n if (!ok) log.error({ code: \"web-230214-1438\", msg: \"can't pause before jump\" });\n\n ok = await castQueueJumpToItem(jumpTo);\n if (!ok) return false;\n\n await onNextMediaSessionUpdate(true);\n\n ok = await setRemotePlayPause(false, null);\n if (!ok) log.error({ code: \"web-230214-1438\", msg: \"can't pause after jump\" });\n\n return true;\n}\n\nexport async function syncCurrentFromRemote(context: AudioContextModel): Promise<boolean> {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: \"syncCurrentFromRemote...\" });\n\n if (!hasCastMediaSession()) {\n log.error({ code: \"web-230208-1523\", msg: \"no media session\" });\n return false;\n }\n\n const { currentSynced } = getCurrentAudioInSync();\n if (currentSynced) return true;\n\n const media = getCastMediaSession();\n if (!media) return false;\n\n const currentRemote = getCurrentAudioFromRemote();\n if (!currentRemote) {\n log.error({ code: \"web-230208-1523\", msg: \"no current audio from remote\" });\n return false;\n }\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `...syncCurrentFromRemote: ${currentRemote.logTitle}` });\n\n await dispatch({ type: AUDIO_INPUT_PLAY_AUDIO, payload: { audio: currentRemote, context } });\n return true;\n}\n\nexport async function handleLastInQueueAndStopped(context: AudioContextModel): Promise<boolean> {\n const player = getCastPlayer();\n const stopped = player?.playerState === chrome.cast.media.PlayerState.IDLE;\n\n if (!stopped) return false;\n\n const { last, currentAudio } = isCurrentAudioLastInQueue();\n\n if (!last) return false;\n if (!currentAudio) return false;\n if (currentAudio.input !== AudioInputType.PlayQueue) return false;\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `current is last in queue and remote is idle` });\n\n await dispatch({ type: AUDIO_OUTPUT_AUDIO_ENDED, payload: { audioId: currentAudio.audioId, context } });\n\n return true;\n}\n","import { castQueueInsertItems } from \"../castRequests/media/queueInsertItems\";\nimport { castQueueRemoveItems } from \"../castRequests/media/queueRemoveItems\";\nimport { castQueueReorderItems } from \"../castRequests/media/queueReorderItems\";\nimport type { MediaInfoCustomData } from \"../models/MediaInfoCustomData\";\nimport { getCastMediaSession } from \"../setup\";\nimport { getLocalCastQueue } from \"./localCastQueue\";\nimport { getRemoteCastQueue, setRemoteCastQueue } from \"./remoteCastQueue\";\nimport { log, LogTag } from \"services/logger\";\nimport { getLiveRadioPlayableFromAudio } from \"services/player/inputs/inputs/liveRadio/service\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { AudioInputItemLiveRadioModel, AudioInputItemModel, AudioInputItemPlayQueueModel } from \"models/app/player/input\";\nimport { getMimeTypeFromStreamUrlType } from \"models/app/player/input\";\n\nexport async function syncExistingQueueFromLocal(): Promise<boolean> {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `syncExistingQueueFromLocal...` });\n\n const media = getCastMediaSession();\n if (!media) return false;\n\n const { audios, audiosCastIds: ids } = getLocalCastQueue();\n\n const removeOK = await remove(ids);\n if (!removeOK) return false;\n\n const addOK = await add(audios);\n if (!addOK) return false;\n\n const reorderOK = await reorder(ids);\n if (!reorderOK) return false;\n\n return true;\n}\n\nasync function remove(ids: number[]): Promise<boolean> {\n const remoteIds = getRemoteCastQueue();\n const removeIds = [...remoteIds].filter((id) => ids.indexOf(id) === -1);\n if (removeIds.length === 0) return true;\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `remove items: ${removeIds}` });\n\n const send = await castQueueRemoveItems(removeIds);\n if (!send) return false;\n\n const newRemoteIds = remoteIds.filter((id) => removeIds.indexOf(id) === -1);\n setRemoteCastQueue(newRemoteIds);\n\n return true;\n}\n\nasync function add(audios: AudioInputItemModel[]): Promise<boolean> {\n const remoteIds = getRemoteCastQueue();\n\n const missing = audios.filter((audio) => remoteIds.indexOf(audio.chromecastId) === -1);\n const addItems = getQueueItemsFromAudios(missing);\n if (addItems.length === 0) return true;\n\n // we must sync remote ids before we can use this function\n throw Error(\"not implemented\");\n\n const addIds = addItems.map((item) => item.itemId);\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `adding items: ${addIds}` });\n\n const request = new chrome.cast.media.QueueInsertItemsRequest(addItems);\n\n const send = await castQueueInsertItems(request);\n if (!send) return false;\n\n const newRemoteIds = [...remoteIds, ...addIds];\n setRemoteCastQueue(newRemoteIds);\n\n return true;\n}\n\nasync function reorder(ids: number[]): Promise<boolean> {\n const remoteIds = getRemoteCastQueue();\n\n if (ids.length !== remoteIds.length) {\n log.error({ code: \"web-230110-1354\", msg: \"cc order error\", data: { ids, ccIds: remoteIds } });\n return false;\n }\n\n let reorder = false;\n for (let i = 0; i < ids.length; i++) {\n const id1 = ids[i];\n const id2 = remoteIds[i];\n\n if (id1 !== id2) {\n reorder = true;\n break;\n }\n }\n\n if (!reorder) return true;\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `reordering items: ${ids}` });\n\n const send = await castQueueReorderItems(new chrome.cast.media.QueueReorderItemsRequest(ids));\n if (!send) return false;\n\n setRemoteCastQueue([...ids]);\n\n return true;\n}\n\nexport function getQueueItemsFromAudios(audios: AudioInputItemModel[]): chrome.cast.media.QueueItem[] {\n const items = audios.map((audio) => getQueueItemFromAudio(audio)).filter((item) => item) as chrome.cast.media.QueueItem[];\n return items;\n}\n\nfunction getQueueItemFromAudio(audio: AudioInputItemModel): chrome.cast.media.QueueItem | null {\n const mediaInfo = getMediaInfoFromAudio(audio);\n if (!mediaInfo) return null;\n\n Object.keys(mediaInfo).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((mediaInfo as any)[key] == undefined || (mediaInfo as any)[key] == \"\") delete (mediaInfo as any)[key];\n });\n\n const item = new chrome.cast.media.QueueItem(mediaInfo);\n item.itemId = audio.chromecastId;\n\n Object.keys(item).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((item as any)[key] == undefined) delete (item as any)[key];\n });\n\n return item;\n}\n\nfunction getMediaInfoFromAudio(audio: AudioInputItemModel): chrome.cast.media.MediaInfo | null {\n switch (audio.input) {\n case AudioInputType.PlayQueue:\n return getMediaInfoFromPlayQueueAudio(audio);\n case AudioInputType.LiveRadio:\n return getMediaInfoFromLiveRadioAudio(audio);\n }\n}\n\nfunction getMediaInfoFromPlayQueueAudio(audio: AudioInputItemPlayQueueModel): chrome.cast.media.MediaInfo | null {\n const playbackContext = audio.playbackContext;\n if (!playbackContext) {\n log.error({ tags: [LogTag.Chromecast], code: \"web-230109-1439\", msg: \"no playbackContext on playQueue audio\" });\n return null;\n }\n\n const mediaInfo = new chrome.cast.media.MediaInfo(\"\", \"\");\n\n const customData: MediaInfoCustomData = {\n Id: audio.trackId,\n C: playbackContext\n };\n mediaInfo.customData = customData;\n\n return mediaInfo;\n}\n\nfunction getMediaInfoFromLiveRadioAudio(audio: AudioInputItemLiveRadioModel): chrome.cast.media.MediaInfo | null {\n const url = audio.url2;\n if (!url) {\n log.error({ tags: [LogTag.Chromecast], code: \"web-230109-1439\", msg: \"no url on radio audio\" });\n return null;\n }\n\n const playbackContext = audio.playbackContext;\n if (!playbackContext) {\n log.error({ tags: [LogTag.Chromecast], code: \"web-230109-1439\", msg: \"no playbackContext on liveradio audio\" });\n return null;\n }\n\n const mime = getMimeTypeFromStreamUrlType(url.urlType);\n\n const mediaInfo = new chrome.cast.media.MediaInfo(url.url, mime);\n mediaInfo.streamType = chrome.cast.media.StreamType.LIVE;\n\n const customData: MediaInfoCustomData = {\n Id: audio.radioId,\n IsLiveStream: true,\n C: playbackContext\n };\n mediaInfo.customData = customData;\n\n const radio = getLiveRadioPlayableFromAudio(audio)?.liveRadio;\n const title = radio?.title;\n const cover = radio?.cover;\n\n if (!title) log.error({ tags: [LogTag.Chromecast], code: \"web-230109-1411\", msg: \"no title in radio in cc\" });\n if (!cover) log.error({ tags: [LogTag.Chromecast], code: \"web-230109-1455\", msg: \"no cover in radio in cc\" });\n\n const metadata = new chrome.cast.media.GenericMediaMetadata();\n mediaInfo.metadata = metadata;\n if (title) metadata.title = title;\n if (cover) metadata.images = [new chrome.cast.Image(cover)];\n\n return mediaInfo;\n}\n","import { castLoadMedia } from \"../castRequests/session\";\nimport { convertToRepeatMode, getCurrentTimeFromAudio, getLocalRepeat } from \"../helpers\";\nimport { hasCastMediaSession } from \"../setup\";\nimport { getLocalCastQueue } from \"./localCastQueue\";\nimport { setRemoteCastQueue } from \"./remoteCastQueue\";\nimport { getQueueItemsFromAudios } from \"./syncExistingQueue\";\nimport { log, LogTag } from \"services/logger\";\nimport { isPlayStatePlayIntent } from \"services/player/helpers\";\n\nexport async function syncNewQueueFromLocal(replace = false): Promise<boolean> {\n if (!replace && hasCastMediaSession()) {\n log.error({ tags: [LogTag.Chromecast], code: \"web-230109-1644\", msg: \"cast already has a queue\" });\n return false;\n }\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `syncNewQueueFromLocal...` });\n\n const { audios, currentIndex, currentAudio } = getLocalCastQueue();\n if (audios.length == 0) {\n log.error({ code: \"web-230109-1536\", msg: \"no audios\" });\n return false;\n }\n\n if (currentIndex == null) {\n log.error({ code: \"web-230109-1536\", msg: \"no current index\" });\n return false;\n }\n\n if (currentAudio == null) {\n log.error({ code: \"web-230109-1536\", msg: \"no current audio\" });\n return false;\n }\n\n const items = getQueueItemsFromAudios(audios);\n const currentItem = items[currentIndex];\n\n const autoPlay = isPlayStatePlayIntent(currentAudio.playState);\n const currentTime = getCurrentTimeFromAudio(currentAudio);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const queueData = new (chrome.cast.media as any).QueueData();\n queueData.items = items;\n queueData.startIndex = currentIndex;\n queueData.repeatMode = convertToRepeatMode(getLocalRepeat());\n if (currentTime != null) queueData.startTime = currentTime;\n\n const request = new chrome.cast.media.LoadRequest(currentItem.media);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (request as any).queueData = queueData;\n request.autoplay = autoPlay;\n if (currentTime != null) request.currentTime = currentTime;\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `...syncNewQueueFromLocal, items: ${items.map((item) => item.itemId)}` });\n\n const send = await castLoadMedia(request);\n if (!send) return false;\n\n setRemoteCastQueue(items.map((item) => item.itemId));\n\n return true;\n}\n","import { castPause, castPlay } from \"../castRequests/media\";\nimport { castQueueSeek } from \"../castRequests/media/seek\";\nimport { getCurrentTimeFromPosition, convertToPlayState, getCurrentAudioInSync } from \"../helpers\";\nimport { getCastMediaSession, getCastPlayer, tryGetCastMediaSession } from \"../setup\";\nimport { handleLastInQueueAndStopped } from \"./syncCurrent\";\nimport { dispatch } from \"global\";\nimport { AUDIO_OUTPUT_AUDIO_DURATION_CHANGE, AUDIO_OUTPUT_AUDIO_PLAY_CHANGE } from \"global/actions\";\nimport { log, LogTag } from \"services/logger\";\nimport { getPositionFromCurrentTime, isPlayPausePositionAlmostEqual, isPlayStatePlayIntent } from \"services/player/helpers\";\nimport { tryGetAudioPosition } from \"services/player/inputs/service/helpers\";\nimport type { PlayPausePositionModel } from \"models/app/player\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport async function syncPlayStateFromLocal(): Promise<boolean> {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `syncPlayStateFromLocal...` });\n\n const { currentSynced, currentLocal } = getCurrentAudioInSync();\n if (!currentSynced || !currentLocal) return true;\n\n const media = tryGetCastMediaSession();\n if (!media) return true;\n\n const stateLocal = currentLocal.playState;\n const stateRemote = convertToPlayState(media.playerState ?? chrome.cast.media.PlayerState.IDLE) ?? PlayState.Stopped;\n\n const playLocal = isPlayStatePlayIntent(stateLocal);\n const playRemote = isPlayStatePlayIntent(stateRemote);\n const playSame = playLocal === playRemote;\n\n const positionLocal = tryGetAudioPosition(currentLocal);\n const positionRemote = getPositionFromCurrentTime(media.getEstimatedTime());\n const posAlmostEqual = positionLocal ? isPlayPausePositionAlmostEqual(positionLocal, positionRemote) : true;\n\n if (playSame && posAlmostEqual) {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `...syncPlayStateFromLocal, play intent is same and position almost equal` });\n return true;\n }\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: `...syncPlayStateFromLocal, local: ${stateLocal}, remote: ${stateRemote}` });\n\n return setRemotePlayPause(playLocal, positionLocal);\n}\n\nexport async function syncPlayStateFromRemote(context: AudioContextModel): Promise<boolean> {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230226-1819\", msg: \"syncPlayStateFromRemote...\" });\n\n const last = await handleLastInQueueAndStopped(context);\n if (last) return true;\n\n const { currentSynced, currentLocal } = getCurrentAudioInSync();\n if (!currentSynced || !currentLocal) return true;\n\n const media = getCastMediaSession();\n if (!media) return false;\n\n const stateLocal = currentLocal.playState;\n const stateRemote = convertToPlayState(media.playerState);\n if (!stateRemote) return false;\n\n const player = getCastPlayer();\n if (!player) return false;\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230210-1222\", msg: `...syncPlayStateFromRemote, local: ${stateLocal}, remote: ${stateRemote}` });\n\n const currentTime = player.currentTime;\n const position: PlayPausePositionModel = { pausePosition: currentTime };\n\n await syncDuration(currentLocal);\n await dispatch({ type: AUDIO_OUTPUT_AUDIO_PLAY_CHANGE, payload: { audio: currentLocal, allowPlayChange: true, playState: stateRemote, position, context } });\n\n return true;\n}\n\nasync function syncDuration(audio: AudioInputItemModel): Promise<boolean> {\n const player = getCastPlayer();\n if (!player) return false;\n\n if (audio.input === AudioInputType.PlayQueue) {\n const durationRemote = player.duration;\n const durationLocal = audio.duration;\n\n if (durationRemote > 0 && durationLocal != durationRemote) {\n await dispatch({ type: AUDIO_OUTPUT_AUDIO_DURATION_CHANGE, payload: { audioId: audio.audioId, duration: durationRemote } });\n }\n }\n\n return true;\n}\n\nexport async function setRemotePlayPause(play: boolean, position: PlayPausePositionModel | null): Promise<boolean> {\n if (!position) return play ? castPlay() : castPause();\n\n const seek = new chrome.cast.media.SeekRequest();\n seek.currentTime = getCurrentTimeFromPosition(position);\n seek.resumeState = play ? chrome.cast.media.ResumeState.PLAYBACK_START : chrome.cast.media.ResumeState.PLAYBACK_PAUSE;\n\n return castQueueSeek(seek);\n}\n","import { castQueueSetRepeatMode } from \"../castRequests/media\";\nimport { convertToRepeatMode, convertToRepeatStatus } from \"../helpers\";\nimport { getCastMediaSession, getCastPlayer, hasCastMediaSession } from \"../setup\";\nimport { dispatch, store } from \"global\";\nimport { PLAYER_SET_MUTE, PLAYER_SET_VOLUME } from \"global/actions\";\n\nexport async function syncResumeSettingsFromRemote(): Promise<boolean> {\n syncVolumeFromRemote();\n syncIsMutedFromRemote();\n if (!hasCastMediaSession()) return true;\n\n const ok = syncRepeatFromLocal();\n return ok;\n}\n\nexport function syncVolumeFromRemote() {\n const player = getCastPlayer();\n if (!player) return;\n\n const volumeRemote = player.volumeLevel;\n if (volumeRemote == null) return;\n\n const volumeLocal = store.getState().player.volume;\n if (volumeRemote === volumeLocal) return;\n\n dispatch({ type: PLAYER_SET_VOLUME, payload: { volume: volumeRemote } });\n}\n\nexport function syncIsMutedFromRemote() {\n const player = getCastPlayer();\n if (!player) return;\n\n const mutedRemote = player.isMuted;\n if (mutedRemote == null) return;\n\n const mutedLocal = store.getState().player.muted;\n if (mutedRemote === mutedLocal) return;\n\n dispatch({ type: PLAYER_SET_MUTE, payload: { mute: mutedRemote } });\n}\n\nasync function syncRepeatFromLocal(): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n const repeatRemote = convertToRepeatStatus(media.repeatMode);\n if (repeatRemote == null) return false;\n\n const repeatLocal = store.getState().player.repeat;\n if (repeatRemote === repeatLocal) return false;\n\n const repeatMode = convertToRepeatMode(repeatLocal);\n const ok = await castQueueSetRepeatMode(repeatMode);\n\n return ok;\n}\n","import { requestCastSession } from \"../castRequests/context\";\nimport { stopCastSession } from \"./stopCastSession\";\nimport { isControllerChromecastFromState } from \"services/player/controllers/service/helpers\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport async function userToggleCastSession(): Promise<boolean> {\n const isCast = isControllerChromecastFromState();\n\n if (!isCast) return requestCastSession();\n stopCastSession({ action: AudioContextAction.UserEndChromeCast, trace: null });\n return true;\n}\n","import { setCastAvailable } from \"../../actions/castAvailable\";\nimport { log, LogTag } from \"services/logger\";\n\nexport function onCastApiAvailable(isAvailable: boolean) {\n log.info({ tags: [LogTag.Chromecast], code: \"web-230105-1431\", msg: `onCastApiAvailable: ${isAvailable}` });\n\n if (isAvailable && !chrome?.cast) {\n log.error({ code: \"web-211013-1325\", msg: \"chrome.cast == null\" });\n isAvailable = false;\n }\n\n setCastAvailable(isAvailable);\n}\n","export * from \"./onCastStateChanged\";\nexport * from \"./onSessionStateChange\";\n","import { log, LogTag } from \"services/logger\";\n\nexport const onCastStateChanged = (data: cast.framework.CastStateEventData) => {\n log.debug([LogTag.Chromecast], () => ({ code: \"web-211015-0958\", msg: `onCastStateChanged: ${data.castState}` }));\n};\n","import { stopCastSession } from \"../../actions\";\nimport { castSessionResumed } from \"../../actions/castSessionResumed\";\nimport { castSessionStarted } from \"../../actions/castSessionStarted\";\nimport { sessionStartFailed } from \"../../error\";\nimport { isUnloading } from \"global/config\";\nimport { log, LogTag } from \"services/logger\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport function onSessionStateChange(data: cast.framework.SessionStateEventData) {\n if (isUnloading) return;\n\n const state = data.sessionState;\n\n log.debug([LogTag.Chromecast], () => ({ code: \"web-230105-1442\", msg: `onSessionStateChange: ${state}` }));\n\n switch (state) {\n case cast.framework.SessionState.NO_SESSION: {\n stopCastSession({ action: AudioContextAction.ChromecastNoSession, trace: null });\n return null;\n }\n case cast.framework.SessionState.SESSION_STARTING: {\n return null;\n }\n case cast.framework.SessionState.SESSION_STARTED: {\n castSessionStarted({ action: AudioContextAction.ChromecastSessionStarted, trace: null });\n return null;\n }\n case cast.framework.SessionState.SESSION_START_FAILED: {\n stopCastSession({ action: AudioContextAction.ChromecastSessionStartFailed, trace: null });\n sessionStartFailed();\n return null;\n }\n case cast.framework.SessionState.SESSION_ENDING:\n stopCastSession({ action: AudioContextAction.ChromecastSessionSessionEnding, trace: null });\n return null;\n case cast.framework.SessionState.SESSION_ENDED:\n stopCastSession({ action: AudioContextAction.ChromecastSessionSessionEnded, trace: null });\n return null;\n case cast.framework.SessionState.SESSION_RESUMED: {\n castSessionResumed({ action: AudioContextAction.ChromecastSessionResumed, trace: null });\n return null;\n }\n }\n state;\n}\n","import { castGetStatus } from \"../../castRequests/media\";\nimport { hasCastMediaSession } from \"../../setup\";\nimport { log } from \"services/logger\";\n\nlet onUpdateResolvers: (() => void)[] = [];\n\nexport function onMediaSessionUpdate(isAlive: boolean) {\n if (isAlive) {\n const resolvers = onUpdateResolvers;\n onUpdateResolvers = [];\n resolvers.forEach((resolve) => resolve());\n }\n}\n\nexport async function onNextMediaSessionUpdate(invoke: boolean): Promise<void> {\n // if (!hasCastMediaSession()) {\n // log.error({ code: \"web-230228-2324\", msg: \"no cast media session in onNextMediaSessionUpdate\" });\n // return;\n // }\n\n const promise = new Promise<void>((resolve) => {\n onUpdateResolvers.push(resolve);\n\n setTimeout(() => {\n if (onUpdateResolvers.indexOf(resolve) === -1) return;\n log.error({ code: \"web-230228-2324\", msg: \"onNextMediaSessionUpdate timed out\" });\n resolve();\n }, 1000);\n });\n\n if (invoke && hasCastMediaSession()) await castGetStatus();\n\n return promise;\n}\n","import { log, LogTag } from \"services/logger\";\nimport { isControllerChromecastFromState } from \"services/player/controllers/service/helpers\";\n\nexport function onIsConnectedChanged({ value: isConnected }: cast.framework.RemotePlayerChangedEvent<boolean>) {\n if(!isControllerChromecastFromState()) return;\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-210804-1332\", msg: `onIsConnectedChanged: ${isConnected}` });\n}\n","import { OperationSource, tryOperation, syncPlayStateFromRemote, waitOne } from \"../../actions\";\nimport { log, LogTag } from \"services/logger\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport async function currentTimeChanged({ value }: cast.framework.RemotePlayerChangedEvent<number>) {\n await waitOne();\n\n log.debug([LogTag.Chromecast], () => ({ code: \"web-211029-1312\", msg: `currentTimeChange: ${value}` }));\n\n tryOperation(() => syncPlayStateFromRemote({ action: AudioContextAction.ChromecastCurrentTimeChange, trace: null }), OperationSource.Chromecast);\n}\n","export * from \"./connectedChanged\";\nexport * from \"./currentTimeChanged\";\nexport * from \"./isMediaLoadedChanged\";\nexport * from \"./isMutedChanged\";\nexport * from \"./playerStateChanged\";\nexport * from \"./volumeChanged\";","import { tryOperation, syncMediaLoadedFromRemote, OperationSource, waitOne } from \"../../actions\";\nimport { log, LogTag } from \"services/logger\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport async function isMediaLoadedChanged({ value }: cast.framework.RemotePlayerChangedEvent<boolean>) {\n await waitOne();\n \n log.info({ tags: [LogTag.Chromecast], code: \"web-211029-1312\", msg: `isMediaLoadedChanged: value: ${value}` });\n\n tryOperation(() => syncMediaLoadedFromRemote({ action: AudioContextAction.ChromecastMediaLoadedChange, trace: null }), OperationSource.Chromecast);\n}\n","import { syncIsMutedFromRemote } from \"../../actions/syncSettings\";\nimport { castSetIsMutedTimeStamp } from \"../../castRequests/playerController\";\nimport { log, LogTag } from \"services/logger\";\nimport { isControllerChromecastFromState } from \"services/player/controllers/service/helpers\";\n\nexport function onIsMutedChanged({ value: isMuted }: cast.framework.RemotePlayerChangedEvent<boolean>) {\n if (!isControllerChromecastFromState()) return;\n\n log.debug([LogTag.Chromecast], () => ({ code: \"web-211029-1312\", msg: `onIsMutedChanged: ${isMuted}` }));\n\n if (new Date().getTime() - castSetIsMutedTimeStamp < 1000) return;\n\n syncIsMutedFromRemote();\n}\n","import { OperationSource, tryOperation, syncPlayStateFromRemote, waitOne } from \"../../actions\";\nimport { log, LogTag } from \"services/logger\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport async function onPlayerStateChanged({ value: state }: cast.framework.RemotePlayerChangedEvent<chrome.cast.media.PlayerState>) {\n await waitOne();\n \n log.debug([LogTag.Chromecast], () => ({ code: \"web-211029-1312\", msg: `onPlayerStateChanged: ${state}` }));\n\n tryOperation(() => syncPlayStateFromRemote({ action: AudioContextAction.ChromecastPlayerStateChange, trace: null }), OperationSource.Chromecast);\n}\n","import { syncVolumeFromRemote } from \"../../actions/syncSettings\";\nimport { castSetVolumeTimeStamp } from \"../../castRequests/playerController\";\nimport { log, LogTag } from \"services/logger\";\nimport { isControllerChromecastFromState } from \"services/player/controllers/service/helpers\";\n\nexport function onVolumeLevelChanged({ value: volume }: cast.framework.RemotePlayerChangedEvent<number>) {\n if (!isControllerChromecastFromState()) return;\n\n log.debug([LogTag.Chromecast], () => ({ code: \"web-211029-1312\", msg: `onVolumeLevelChanged: ${volume}` }));\n\n if (new Date().getTime() - castSetVolumeTimeStamp < 1000) return;\n\n syncVolumeFromRemote();\n}\n","import { authenticate } from \"../../actions\";\nimport type { LogProps } from \"services/logger\";\nimport { log, LogTag } from \"services/logger\";\n\nlet onAuthResolvers: ((authenticated: boolean) => void)[] = [];\nexport async function onNextAuthenticated(invoke: boolean): Promise<boolean> {\n const promise = new Promise<boolean>((resolve) => {\n onAuthResolvers.push(resolve);\n });\n\n if (invoke) await authenticate();\n\n return promise;\n}\n\nexport function onCustomCastMessageAuthenticate(namespace: string, message: string) {\n const ok = (message as unknown) === true || message === \"true\" || message === '\"true\"' || message === \"'true'\";\n\n const logProps: LogProps = { tags: [LogTag.Chromecast], code: \"web-210915-1538\", msg: `onCustomCastMessageAuthenticate: ${ok}`, data: { namespace, message } };\n\n if (ok) log.info(logProps);\n else log.error(logProps);\n\n const resolvers = onAuthResolvers;\n onAuthResolvers = [];\n\n resolvers.forEach((resolve) => resolve(ok));\n}\n","import { addCastMediaSessionListeners } from \"../../setup/castMediaSessionListeners\";\n\nexport function onCastMediaSession(media: cast.framework.MediaSessionEventData) {\n addCastMediaSessionListeners(media.mediaSession);\n}\n","export * from \"./requestSession\";\n","import { hasCastSession } from \"../../setup\";\nimport { log, LogTag } from \"services/logger\";\n\nexport async function requestCastSession(): Promise<boolean> {\n const session = hasCastSession();\n if (session) {\n log.error({ code: \"web-230109-1159\", msg: \"requesting session while existing session\" });\n return false;\n }\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230109-1200\", msg: `requestCastSession...` });\n\n let error: chrome.cast.ErrorCode | undefined;\n try {\n error = await cast.framework.CastContext.getInstance().requestSession();\n } catch (e) {\n log.warn({ tags: [LogTag.Chromecast], code: \"web-230106-1249\", msg: `...requestCastSession threw error`, error: e });\n return false;\n }\n if (error) log.warn({ tags: [LogTag.Chromecast], code: \"web-230106-1250\", msg: `...requestCastSession, error: ${error}` });\n\n return error === undefined;\n}\n","import { requestHelper } from \"../../helpers\";\nimport { getCastMediaSession } from \"../../setup\";\n\nexport async function castGetStatus(): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n return requestHelper(\"castGetStatus\", new chrome.cast.media.GetStatusRequest(), (request, success, error) => {\n media.getStatus(request, success, error);\n });\n}\n","export * from \"./getStatus\";\nexport * from \"./pause\";\nexport * from \"./play\";\nexport * from \"./queueInsertItems\";\nexport * from \"./queueJumpToItem\";\nexport * from \"./queueRemoveItems\";\nexport * from \"./queueReorderItems\";\nexport * from \"./queueSetRepeatMode\";\nexport * from \"./seek\";\nexport * from \"./stop\";\n","import { requestHelper } from \"../../helpers\";\nimport { getCastMediaSession } from \"../../setup\";\n\nexport async function castPause(): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n return requestHelper(\"castPause\", new chrome.cast.media.PauseRequest(), (request, success, error) => {\n media.pause(request, success, error);\n });\n}\n","import { requestHelper } from \"../../helpers\";\nimport { getCastMediaSession } from \"../../setup\";\n\nexport async function castPlay(): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n return requestHelper(\"castPlay\", new chrome.cast.media.PlayRequest(), (request, success, error) => {\n media.play(request, success, error);\n });\n}\n","import { requestHelper } from \"../../helpers\";\nimport { getCastMediaSession } from \"../../setup\";\n\nexport async function castQueueInsertItems(request: chrome.cast.media.QueueInsertItemsRequest): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n return requestHelper(\"castQueueInsertItems\", request, (request, success, error) => {\n media.queueInsertItems(request, success, error);\n });\n}\n","import { requestHelper } from \"../../helpers/requestHelper\";\nimport { getCastMediaSession } from \"../../setup\";\n\nexport async function castQueueJumpToItem(itemId: number): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n return requestHelper(\"castQueueJumpToItem\", itemId, (request, success, error) => {\n media.queueJumpToItem(request, success, error);\n });\n}\n","import { requestHelper } from \"../../helpers\";\nimport { getCastMediaSession } from \"../../setup\";\n\nexport async function castQueueRemoveItems(itemIds: number[]): Promise<boolean> {\n for (const itemId of itemIds) {\n const ok = await castQueueRemoveItem(itemId);\n if (!ok) return false;\n }\n return true;\n}\n\nasync function castQueueRemoveItem(itemId: number): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n return requestHelper(\"castQueueRemoveItem\", itemId, (request, success, error) => {\n media.queueRemoveItem(request, success, error);\n });\n}\n","import { requestHelper } from \"../../helpers\";\nimport { getCastMediaSession } from \"../../setup\";\n\nexport async function castQueueReorderItems(request: chrome.cast.media.QueueReorderItemsRequest): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n return requestHelper(\"castQueueReorderItems\", request, (request, success, error) => {\n media.queueReorderItems(request, success, error);\n });\n}\n","import { requestHelper } from \"../../helpers\";\nimport { getCastMediaSession } from \"../../setup\";\n\nexport async function castQueueSetRepeatMode(repeatMode: chrome.cast.media.RepeatMode): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n return requestHelper(\"castQueueSetRepeatMode\", repeatMode, (request, success, error) => {\n media.queueSetRepeatMode(request, success, error);\n });\n}\n","import { requestHelper } from \"../../helpers\";\nimport { getCastMediaSession } from \"../../setup\";\n\nexport async function castQueueSeek(request: chrome.cast.media.SeekRequest): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n return requestHelper(\"castQueueSeek\", request, (request, success, error) => {\n media.seek(request, success, error);\n });\n}\n","import { requestHelper } from \"../../helpers\";\nimport { getCastMediaSession } from \"../../setup\";\n\nexport async function castQueueStop(): Promise<boolean> {\n const media = getCastMediaSession();\n if (!media) return false;\n\n return requestHelper(\"castQueueStop\", new chrome.cast.media.StopRequest(), (request, success, error) => {\n media.stop(request, success, error);\n });\n}\n","export * from \"./setIsMuted\";\nexport * from \"./setVolume\";\n","import { getCastPlayer, getCastPlayerController } from \"../../setup\";\nimport { log, LogTag } from \"services/logger\";\n\nexport let castSetIsMutedTimeStamp = 0;\n\nexport function castSetIsMuted(isMuted: boolean) {\n const player = getCastPlayer();\n if (!player) return;\n\n const playerController = getCastPlayerController();\n if (!playerController) return;\n\n if (isMuted === player.isMuted) return;\n castSetIsMutedTimeStamp = new Date().getTime();\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230109-1205\", msg: `castSetIsMuted` });\n\n playerController.muteOrUnmute();\n}\n","import { getCastPlayer, getCastPlayerController } from \"../../setup\";\nimport { log, LogTag } from \"services/logger\";\n\nexport let castSetVolumeTimeStamp = 0;\n\nexport function castSetVolume(volume: number) {\n const player = getCastPlayer();\n if (!player) return;\n\n const playerController = getCastPlayerController();\n if (!playerController) return;\n\n if (volume === player.volumeLevel) return;\n castSetVolumeTimeStamp = new Date().getTime();\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230109-1205\", msg: `castSetVolume: ${volume}` });\n\n player.volumeLevel = volume;\n playerController.setVolumeLevel();\n}\n","export * from \"./loadMedia\";\nexport * from \"./sendMessage\";","import { getCastSession } from \"../../setup\";\nimport type { LogProps } from \"services/logger/initLoggerService\";\nimport { log, LogTag } from \"services/logger/initLoggerService\";\n\nexport async function castLoadMedia(request: chrome.cast.media.LoadRequest): Promise<boolean> {\n const session = getCastSession();\n if (!session) return false;\n\n log.debug([LogTag.Chromecast], () => ({ code: \"web-211029-1410\", msg: `castLoadMedia...` }));\n\n console.log(request);\n\n const result = await session.loadMedia(request);\n const ok = result == undefined;\n\n const logProps: LogProps = { tags: [LogTag.Chromecast], code: \"web-200106-1615\", msg: `...castLoadMedia, ok: ${ok}`, data: { ok, request, result } };\n if (ok) log.info(logProps);\n else log.error(logProps);\n\n return ok;\n}\n","import { getCastSession } from \"../../setup\";\nimport type { LogProps } from \"services/logger\";\nimport { log, LogTag } from \"services/logger\";\n\nexport async function castSendMessage(namespace: string, data: unknown): Promise<boolean> {\n const session = getCastSession();\n if (!session) return false;\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230109-1205\", msg: `castSendMessage... : ${namespace}` });\n\n const result = await session.sendMessage(namespace, data);\n const ok = result == undefined;\n\n const logProps: LogProps = { tags: [LogTag.Chromecast], code: \"web-200106-1615\", msg: `...castSendMessage, ok: ${ok}`, data: { namespace, data, result, ok } };\n if (ok) log.info(logProps);\n else log.error(logProps);\n\n return ok;\n}\n","export * from \"./sessionStartFailed\";","export function sessionStartFailed() {\n // if (isKnownPWAError()) showChromecastNotAvailableOnPWA();\n}\n\n// function isKnownPWAError(): boolean {\n// if (!(isAppRunAsPWA() && getBrowserName() === BrowserName.Chrome)) return false;\n\n// const requestDuration = new Date().getTime() - (lastSessionRequest());\n// const quickFail = requestDuration < 200;\n\n// return quickFail;\n// }\n","export function getRemoteCastState(): cast.framework.CastState | undefined {\n return cast?.framework?.CastContext?.getInstance().getCastState();\n}\n","import { getLocalCastQueue } from \"../actions\";\nimport { getCastMediaSession, hasCastMediaSession } from \"../setup\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport function getCurrentAudioFromRemote(): AudioInputItemModel | null {\n const currentRemoteId = getCurrentRemoteCastId();\n if (currentRemoteId == null) return null;\n\n const audio = getLocalCastQueue().audios.find((audio) => audio.chromecastId === currentRemoteId);\n return audio ?? null;\n}\n\nexport function getCurrentAudioInSync(): { currentSynced: boolean; currentLocal: AudioInputItemModel | null } {\n const currentLocal = getLocalCastQueue().currentAudio;\n\n const currentLocalId = currentLocal?.chromecastId ?? null;\n const currentRemoteId = getCurrentRemoteCastId();\n\n const inSync = currentLocalId == currentRemoteId;\n return { currentSynced: inSync, currentLocal };\n}\n\nexport function getCurrentRemoteCastId(): number | null {\n if (!hasCastMediaSession()) return null;\n\n const media = getCastMediaSession();\n if (!media) return null;\n\n const currentCastId = media.loadingItemId ?? media.currentItemId;\n return currentCastId;\n}\n","import { getPausePosition } from \"services/player/helpers\";\nimport { tryGetAudioPosition } from \"services/player/inputs/service/helpers\";\nimport type { PlayPausePositionModel } from \"models/app/player\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport function getCurrentTimeFromAudio(audio: AudioInputItemModel): number | null {\n const position = tryGetAudioPosition(audio);\n if (!position) return null;\n\n const currentTime = getCurrentTimeFromPosition(position);\n return currentTime;\n}\n\nexport function getCurrentTimeFromPosition(position: PlayPausePositionModel): number {\n const pausePos = getPausePosition(position);\n const currentTime = pausePos.pausePosition;\n\n return currentTime;\n}\n","export function getNewCastItemId(): number {\n return Math.floor(Number.MAX_SAFE_INTEGER * Math.random());\n}\n","export * from \"./requestHelper\";\nexport * from \"./castState\";\nexport * from \"./current\";\nexport * from \"./currentTime\";\nexport * from \"./id\";\nexport * from \"./operation\";\nexport * from \"./playState\";\nexport * from \"./queue\";\nexport * from \"./repeat\";\n","import { getRemoteCastQueue } from \"../actions\";\nimport { getLocalCastQueue } from \"../actions/localCastQueue\";\n\nexport function isOperationAddingToQueue(): boolean {\n const idsLocal = getLocalCastQueue().audiosCastIds;\n const idsRemote = getRemoteCastQueue();\n\n const isAdd = idsLocal.some((localId) => idsRemote.indexOf(localId) === -1);\n return isAdd;\n}\n\nexport function isOperationModifyingQueue(): boolean {\n const idsLocal = getLocalCastQueue().audiosCastIds;\n const idsRemote = getRemoteCastQueue();\n\n if (idsLocal.length !== idsRemote.length) return true;\n\n for (let i = 0; i < idsLocal.length; i++) {\n if (idsLocal[i] !== idsRemote[i]) return true;\n }\n\n return false;\n}\n","import { PlayState } from \"models/app/player\";\n\nexport function convertToPlayState(playerState: chrome.cast.media.PlayerState | null): PlayState | null {\n if (playerState == null) {\n console.error(\"playerstate undefined\");\n return null;\n }\n\n switch (playerState) {\n case chrome.cast.media.PlayerState.IDLE:\n return PlayState.Stopped;\n case chrome.cast.media.PlayerState.BUFFERING:\n return PlayState.Buffering;\n case chrome.cast.media.PlayerState.PAUSED:\n return PlayState.Paused;\n case chrome.cast.media.PlayerState.PLAYING:\n return PlayState.Playing;\n }\n}\n","import { getLocalCastQueue } from \"../actions/localCastQueue\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport function isLocalCastQueueEmpty(): boolean {\n const empty = getLocalCastQueue().audios.length === 0;\n return empty;\n}\n\nexport function isCurrentAudioLastInQueue(): { last: boolean; currentAudio: AudioInputItemModel | null } {\n const { audios, currentIndex, currentAudio } = getLocalCastQueue();\n\n if (audios.length == 0) return { last: false, currentAudio };\n if (currentIndex == null) return { last: false, currentAudio };\n\n const last = currentIndex === audios.length - 1;\n return { last, currentAudio };\n}\n","import { store } from \"global\";\nimport { log } from \"services/logger\";\nimport { RepeatStatus } from \"models/view\";\n\nexport function getLocalRepeat() {\n return store.getState().player.repeat;\n}\n\nexport function convertToRepeatMode(repeat: RepeatStatus): chrome.cast.media.RepeatMode {\n switch (repeat) {\n case RepeatStatus.All:\n return chrome.cast.media.RepeatMode.ALL;\n case RepeatStatus.None:\n return chrome.cast.media.RepeatMode.OFF;\n case RepeatStatus.One:\n return chrome.cast.media.RepeatMode.SINGLE;\n }\n}\n\nexport function convertToRepeatStatus(repeat: chrome.cast.media.RepeatMode): RepeatStatus {\n if (repeat === chrome.cast.media.RepeatMode.ALL_AND_SHUFFLE) {\n log.error({ code: \"web-230224-1255\", msg: `cast repeat mode not supported: ${repeat}` });\n return RepeatStatus.None;\n }\n\n switch (repeat) {\n case chrome.cast.media.RepeatMode.ALL:\n return RepeatStatus.All;\n case chrome.cast.media.RepeatMode.OFF:\n return RepeatStatus.None;\n case chrome.cast.media.RepeatMode.SINGLE:\n return RepeatStatus.One;\n }\n}\n","import { log, LogTag } from \"services/logger\";\n\nexport function requestHelper<T>(name: string, request: T, fn: (request: T, success: () => void, error: (error: unknown) => void) => void) {\n let _resolve: (success: boolean) => void;\n let timeout: number | undefined;\n\n const execute = (success: boolean) => {\n if (timeout != undefined) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n _resolve(success);\n };\n\n const success = () => {\n log.info({ code: \"web-230109-1310\", msg: `...${name} success`, data: { request } });\n execute(true);\n };\n\n const error = (error: unknown) => {\n log.error({ code: \"web-230109-1310\", msg: `...${name} error`, data: { request, error } });\n execute(false);\n };\n\n timeout = window.setTimeout(() => {\n log.error({ code: \"web-230109-1310\", msg: `...${name} timeout`, data: { request } });\n execute(false);\n }, 2000);\n\n const done = new Promise<boolean>((resolve) => {\n _resolve = resolve;\n });\n\n log.info({ tags: [LogTag.Chromecast], code: \"web-230109-1310\", msg: `${name}...`, data: { request } });\n fn(request, success, error);\n\n return done;\n}\n","export * from \"./playerRepeat\";\nexport * from \"./playerSetMute\";\nexport * from \"./playerSetVolume\";\nexport * from \"./userLoggedIn\";\nexport * from \"./userLoggedOut\";\n","import { castQueueSetRepeatMode } from \"../castRequests/media/queueSetRepeatMode\";\nimport { convertToRepeatMode } from \"../helpers\";\nimport { store } from \"global\";\n\nexport function playerRepeat() {\n const repeatMode = convertToRepeatMode(store.getState().player.repeat);\n return castQueueSetRepeatMode(repeatMode);\n}\n","import { castSetIsMuted } from \"../castRequests/playerController\";\nimport { store } from \"global\";\n\nexport function playerSetMute() {\n const isMuted = store.getState().player.muted;\n castSetIsMuted(isMuted);\n}\n","import { castSetVolume } from \"../castRequests/playerController\";\nimport { store } from \"global\";\nimport { throttle2 } from \"services/cancellation/throttle\";\n\nconst throtle = throttle2();\n\nexport async function playerSetVolume() {\n await throtle(50);\n const volume = store.getState().player.volume;\n\n castSetVolume(volume);\n}\n","import { stopCastSession } from \"../actions\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport function userLoggedIn() {\n const context = { action: AudioContextAction.UserLogIn, trace: null };\n stopCastSession(context);\n}\n","import { stopCastSession } from \"../actions\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport function userLoggedOut() {\n const context = { action: AudioContextAction.UserLogOut, trace: null };\n stopCastSession(context);\n}\n","export enum SessionMessage {\n Authenticate = \"urn:x-cast:com.247e.music.authenticate\"\n}\n","export * from \"./CastAuthenticateMessageData\";\nexport * from \"./MediaInfoCustomData\";\nexport * from \"./SessionMessage\";\n","import { onCastApiAvailable } from \"../castEvents/api/onCastApiAvailable\";\n\nexport const addCastApiListener = () => {\n const src = \"//www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1\";\n\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.src = src;\n\n document.head.appendChild(script);\n window[\"__onGCastApiAvailable\"] = (isAvailable: boolean) => onCastApiAvailable(isAvailable);\n};\n","import { onCastStateChanged, onSessionStateChange } from \"../castEvents/context\";\nimport { log, LogTag } from \"services/logger\";\n\nlet hasCastContext = false;\n\nexport const addCastContextListeners = () => {\n log.debug([LogTag.Chromecast], () => ({ code: \"web-230105-1440\", msg: \"add cast context listeners\" }));\n\n if (hasCastContext) {\n log.error({ code: \"web-230105-1441\", msg: \"unexpected remove of cast context listeners\" });\n removeCastContextListeners();\n }\n hasCastContext = true;\n\n cast.framework.CastContext.getInstance().addEventListener(cast.framework.CastContextEventType.CAST_STATE_CHANGED, onCastStateChanged);\n cast.framework.CastContext.getInstance().addEventListener(cast.framework.CastContextEventType.SESSION_STATE_CHANGED, onSessionStateChange);\n};\n\nexport const removeCastContextListeners = () => {\n if (!hasCastContext) return;\n hasCastContext = false;\n\n log.debug([LogTag.Chromecast], () => ({ code: \"web-230105-1441\", msg: \"remove cast context listeners\" }));\n\n cast.framework.CastContext.getInstance().removeEventListener(cast.framework.CastContextEventType.CAST_STATE_CHANGED, onCastStateChanged);\n cast.framework.CastContext.getInstance().removeEventListener(cast.framework.CastContextEventType.SESSION_STATE_CHANGED, onSessionStateChange);\n};\n","import { onMediaSessionUpdate } from \"../castEvents/mediaSession/onMediaSessionUpdate\";\nimport { addPlayerControllerListeners } from \"./playerControllerListeners\";\n\nexport function addCastMediaSessionListeners(media: chrome.cast.media.Media) {\n addPlayerControllerListeners(); // player controller listeners must be re-added every time there is a new media session\n media.addUpdateListener(onMediaSessionUpdate);\n}\n","import { onCustomCastMessageAuthenticate } from \"../castEvents/session/onCustomCastMessageAuthenticate\";\nimport { onCastMediaSession } from \"../castEvents/session/onMediaSession\";\nimport { SessionMessage } from \"../models\";\nimport { addCastMediaSessionListeners } from \"./castMediaSessionListeners\";\nimport { addPlayerControllerListeners, removePlayerControllerListeners } from \"./playerControllerListeners\";\nimport { log, LogTag } from \"services/logger/initLoggerService\";\n\nlet _hasSession = false;\n\nexport function hasCastSession() {\n return _hasSession;\n}\n\nexport function tryGetCastSession() {\n if (!_hasSession) return null;\n return cast.framework.CastContext.getInstance().getCurrentSession();\n}\n\nexport function getCastSession() {\n const session = tryGetCastSession();\n if (!session) log.error({ code: \"web-230106-1622\", msg: \"cc session is null\" });\n return session;\n}\n\nexport function hasCastMediaSession() {\n return !!tryGetCastMediaSession();\n}\n\nexport function tryGetCastMediaSession() {\n if (!_hasSession) return null;\n\n const media = getCastSession()?.getMediaSession() ?? null;\n return media;\n}\n\nexport function getCastMediaSession() {\n const media = tryGetCastMediaSession();\n if (!media) log.error({ code: \"web-230106-1622\", msg: \"cc media session is null\" });\n return media;\n}\n\nexport async function addCastSession() {\n log.debug([LogTag.Chromecast], () => ({ code: \"web-210714-1150\", msg: `add cast session listeners` }));\n\n if (_hasSession) {\n log.error({ code: \"web-20230105-1352\", msg: \"session already exist\" });\n return;\n }\n\n _hasSession = true;\n\n addSessionListeners();\n addPlayerControllerListeners();\n}\n\nexport function removeCastSession() {\n log.debug([LogTag.Chromecast], () => ({ code: \"web-210714-1150\", msg: `remove cast session listeners` }));\n\n removeSessionListeners();\n removePlayerControllerListeners();\n\n _hasSession = false;\n}\n\nfunction addSessionListeners() {\n const session = getCastSession();\n if (!session) return;\n\n session.addMessageListener(SessionMessage.Authenticate, onCustomCastMessageAuthenticate);\n session.addEventListener(cast.framework.SessionEventType.MEDIA_SESSION, onCastMediaSession);\n\n const media = tryGetCastMediaSession();\n if (media) addCastMediaSessionListeners(media);\n}\n\nfunction removeSessionListeners() {\n const session = getCastSession();\n if (!session) return;\n\n session.removeMessageListener(SessionMessage.Authenticate, onCustomCastMessageAuthenticate);\n session.removeEventListener(cast.framework.SessionEventType.MEDIA_SESSION, onCastMediaSession);\n}\n","export * from \"./castApiListener\";\nexport * from \"./castContextListeners\";\nexport * from \"./castMediaSessionListeners\";\nexport * from \"./castSessionListeners\";\nexport * from \"./playerControllerListeners\";\n","import { currentTimeChanged, isMediaLoadedChanged, onIsConnectedChanged, onPlayerStateChanged, onVolumeLevelChanged } from \"../castEvents/playerController\";\nimport { onIsMutedChanged } from \"../castEvents/playerController/isMutedChanged\";\nimport { log } from \"services/logger\";\n\nlet player: cast.framework.RemotePlayer | null = null;\nlet playerController: cast.framework.RemotePlayerController | null = null;\n\nexport function getCastPlayer() {\n if (!player) log.error({ code: \"web-230106-1622\", msg: \"cc player is null\" });\n return player;\n}\n\nexport function getCastPlayerController() {\n if (!playerController) log.error({ code: \"web-230106-1622\", msg: \"cc playerController is null\" });\n return playerController;\n}\n\nexport function addPlayerControllerListeners() {\n removePlayerControllerListeners();\n\n player = new cast.framework.RemotePlayer();\n playerController = new cast.framework.RemotePlayerController(player);\n\n // log.debug([LogTag.Chromecast], () => ({ code: \"web-210714-1149\", msg: `add player controlller listeners` }));\n\n // playerController.addEventListener(window.cast.framework.RemotePlayerEventType.ANY_CHANGE, onAnyChange);\n playerController.addEventListener(window.cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED, currentTimeChanged);\n playerController.addEventListener(window.cast.framework.RemotePlayerEventType.IS_CONNECTED_CHANGED, onIsConnectedChanged);\n playerController.addEventListener(window.cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED, isMediaLoadedChanged);\n playerController.addEventListener(window.cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED, onIsMutedChanged);\n playerController.addEventListener(window.cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED, onPlayerStateChanged);\n playerController.addEventListener(window.cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED, onVolumeLevelChanged);\n}\n\nexport function removePlayerControllerListeners() {\n if (!playerController) return;\n\n // log.debug([LogTag.Chromecast], () => ({ code: \"web-230106-1336\", msg: `remove player controlller listeners` }));\n\n // playerController.removeEventListener(window.cast.framework.RemotePlayerEventType.ANY_CHANGE, onAnyChange);\n playerController.removeEventListener(window.cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED, currentTimeChanged);\n playerController.removeEventListener(window.cast.framework.RemotePlayerEventType.IS_CONNECTED_CHANGED, onIsConnectedChanged);\n playerController.removeEventListener(window.cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED, isMediaLoadedChanged);\n playerController.removeEventListener(window.cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED, onIsMutedChanged);\n playerController.removeEventListener(window.cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED, onPlayerStateChanged);\n playerController.removeEventListener(window.cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED, onVolumeLevelChanged);\n\n player = null;\n playerController = null;\n}\n","import { togglePlay, tryUnmute } from \"./service/actions\";\nimport { messageBus } from \"global\";\nimport { PLAYER_SET_VOLUME, PLAYER_TOGGLE_PLAY } from \"global/actions\";\n\nexport function playerControllerService() {\n messageBus.subscribeEvery(PLAYER_TOGGLE_PLAY, async (msg) => {\n togglePlay(msg.payload.context);\n });\n\n messageBus.subscribeEvery(PLAYER_SET_VOLUME, async () => {\n tryUnmute();\n });\n}\n","export * from \"./playNext\";\nexport * from \"./rewind\";\nexport * from \"./rewindOrPlayPrevious\";\nexport * from \"./shuffle\";\n","import { playNext, PlayNextSource } from \"services/player/inputs/inputs/playQueue/actions/playNext\";\nimport { isInputPlayQueueFromState } from \"services/player/inputs/service/helpers\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport const playerPlayNext = (context: AudioContextModel) => {\n if (isInputPlayQueueFromState()) playNext(undefined, PlayNextSource.UserClick, context);\n};\n","import { rewind } from \"services/player/inputs/inputs/playQueue/actions\";\nimport { isInputPlayQueueFromState } from \"services/player/inputs/service/helpers\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport const playerRewind = (context: AudioContextModel) => {\n if (isInputPlayQueueFromState()) rewind(context);\n};\n","import { rewindOrPlayPrevious } from \"services/player/inputs/inputs/playQueue/actions\";\nimport { isInputPlayQueueFromState } from \"services/player/inputs/service/helpers\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport const playerRewindOrPlayPrevious = (context: AudioContextModel) => {\n if (isInputPlayQueueFromState()) rewindOrPlayPrevious(context);\n};\n","import { shuffle } from \"services/player/inputs/inputs/playQueue/actions/shuffle\";\nimport { isInputPlayQueueFromState } from \"services/player/inputs/service/helpers\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport const playerShuffle = async (context: AudioContextModel) => {\n if (isInputPlayQueueFromState()) shuffle(context);\n};\n","import { playerShuffle } from \"./actions\";\nimport { playerPlayNext } from \"./actions/playNext\";\nimport { playerRewind } from \"./actions/rewind\";\nimport { playerRewindOrPlayPrevious } from \"./actions/rewindOrPlayPrevious\";\nimport { messageBus } from \"global\";\nimport { PLAYER_NEXT, PLAYER_PREVIOUS, PLAYER_PREVIOUS_OR_REWIND, PLAYER_REWIND, PLAYER_SEEK, PLAYER_SET_PLAY, PLAYER_SHUFFLE } from \"global/actions\";\nimport { playPrevious } from \"services/player/inputs/inputs/playQueue/actions\";\nimport { playerSeek, playPause } from \"services/player/inputs/service/actions\";\n\nexport const initLocalPlayerControllerService = () => {\n messageBus.subscribeEvery(PLAYER_SET_PLAY, (msg) => {\n const { play, context } = msg.payload;\n playPause(play, context);\n });\n\n messageBus.subscribeEvery(PLAYER_SEEK, (msg) => {\n const { percent, context } = msg.payload;\n playerSeek(percent, context);\n });\n\n messageBus.subscribeEvery(PLAYER_SHUFFLE, async (msg) => {\n playerShuffle(msg.payload.context);\n });\n\n messageBus.subscribeEvery(PLAYER_NEXT, (msg) => {\n playerPlayNext(msg.payload.context);\n });\n\n messageBus.subscribeEvery(PLAYER_PREVIOUS_OR_REWIND, async (msg) => {\n playerRewindOrPlayPrevious(msg.payload.context);\n });\n\n messageBus.subscribeEvery(PLAYER_REWIND, (msg) => {\n playerRewind(msg.payload.context);\n });\n\n messageBus.subscribeEvery(PLAYER_PREVIOUS, (msg) => {\n playPrevious(msg.payload.context);\n });\n};\n","export * from \"./play\";\nexport * from \"./volume\";\n","import { dispatch } from \"global\";\nimport { PLAYER_SET_PLAY } from \"global/actions\";\nimport { PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { getAudioPropertiesFromState } from \"components/shared/hooks\";\n\nexport const togglePlay = (context: AudioContextModel) => {\n const { playState } = getAudioPropertiesFromState();\n const play = playState === PlayState.Paused || playState === PlayState.Stopped || playState === PlayState.Error;\n dispatch({ type: PLAYER_SET_PLAY, payload: { play, context } });\n};\n","import { store, dispatch } from \"global\";\nimport { PLAYER_SET_MUTE } from \"global/actions\";\n\nexport const tryUnmute = () => {\n const muted = store.getState().player.muted;\n if (!muted) return;\n\n dispatch({ type: PLAYER_SET_MUTE, payload: { mute: false } });\n};\n","import { store } from \"global\";\nimport { AudioControllerType } from \"models/app/player\";\n\nconst isControllerChromecast = (controller: AudioControllerType) => controller === AudioControllerType.Chromecast;\nexport const isControllerChromecastFromState = () => isControllerChromecast(store.getState().player.controller);\n\nconst isControllerLocal = (controller: AudioControllerType) => controller === AudioControllerType.Local;\nexport const isControllerLocalFromState = () => isControllerLocal(store.getState().player.controller);\n","import { store } from \"global\";\nimport { PlayState, AudioInputType } from \"models/app/player\";\nimport { ShuffleState, RepeatStatus } from \"models/view\";\nimport { IconName } from \"components/atoms/icon\";\n\nexport const getShuffleIcon = () => {\n const shuffle = store.getState().player.shuffle;\n switch (shuffle) {\n case ShuffleState.Heavy:\n case ShuffleState.Light:\n return IconName.ShuffleActive;\n case ShuffleState.Off:\n return IconName.Shuffle;\n }\n};\n\nconst getLiveRadioPlayIcon = (playState: PlayState) => {\n switch (playState) {\n case PlayState.Playing:\n case PlayState.Buffering:\n return IconName.Stop40;\n case PlayState.Error:\n case PlayState.Stopped:\n case PlayState.Paused:\n return IconName.Play40;\n }\n};\n\nconst getPlayQueuePlayIcon = (playState: PlayState) => {\n switch (playState) {\n case PlayState.Playing:\n case PlayState.Buffering:\n return IconName.Pause40;\n case PlayState.Error:\n case PlayState.Stopped:\n case PlayState.Paused:\n return IconName.Play40;\n }\n};\n\nexport const getPlayIcon = (playState: PlayState, input: AudioInputType) => {\n if (input === AudioInputType.LiveRadio) return getLiveRadioPlayIcon(playState);\n return getPlayQueuePlayIcon(playState);\n};\n\nconst getLiveRadioPlayIconMobileMini = (playState: PlayState) => {\n switch (playState) {\n case PlayState.Playing:\n case PlayState.Buffering:\n return IconName.Stop;\n case PlayState.Error:\n case PlayState.Stopped:\n case PlayState.Paused:\n return IconName.Play;\n }\n};\n\nconst getPlayQueuePlayIconMobileMini = (playState: PlayState) => {\n switch (playState) {\n case PlayState.Playing:\n case PlayState.Buffering:\n return IconName.Pause;\n case PlayState.Error:\n case PlayState.Stopped:\n case PlayState.Paused:\n return IconName.Play;\n }\n};\n\nexport const getPlayIconMobileMini = (playState: PlayState, input: AudioInputType) => {\n if (input === AudioInputType.LiveRadio) return getLiveRadioPlayIconMobileMini(playState);\n return getPlayQueuePlayIconMobileMini(playState);\n};\n\nexport const getVolumeIcon = (volume: number, muted: boolean) => {\n if (muted || volume === 0) return IconName.VolumeMute;\n else if (volume < 0.4) return IconName.VolumeDown;\n else return IconName.VolumeUp;\n};\n\nexport const getRepeatIcon = (repeat: RepeatStatus) => {\n switch (repeat) {\n case RepeatStatus.One:\n return IconName.RepeatTrack;\n case RepeatStatus.All:\n return IconName.RepeatActive;\n case RepeatStatus.None:\n return IconName.Repeat;\n }\n};\n","export * from \"./icons\";\nexport * from \"./controllerType\";\n","import { dispatch, store } from \"global\";\nimport { serviceWorkerConfig } from \"shared/services\";\nimport { AUDIO_INPUT_AUDIO_SRC_CHANGE } from \"global/actions\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { StreamUrl } from \"models/app/player/input\";\nimport { StreamUrlType } from \"models/app/player/input\";\n\nconst invalidHlsUrl =\n \"https://ahls.cdn.247e.com/ahlsaes/assets/mp4-320kbps/02/3B/20/b362d6c9-53ce-40c0-8950-f528d57a8d35 .mp4/index.m3u8?Policy=eyJTdGF0ZW1lbnQiOiBbeyJSZXNvdXJjZSI6Imh0dHBzOi8vYWhscy5jZG4uMjQ3ZS5jb20vYWhsc2Flcy9hc3NldHMvbXA0LTMyMGticHMvMDIvM0IvMjAvNzRiMTExOTUtMzA4Zi00YWFlLTkwMGUtNDY1MWRlZjhiYWU3Lm1wNC8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNjU2MzQ5NjQ5fX19XX0_&Signature=YLz0sIhVx7SUfigLAzQh0SBpUdnn6kmorB41c43hs0M9KzrNpzI6ZvpY1JS6FRVyeAh4HKitFays44T1qxkD~x2vEnZIxtMx8nzNEqD1GTZIhf1APksNIh5pfFT3eLpkMrpYKdCU9-ij9v9XtMc7e35nenqNrKQnO5fmnn-EHNcO7GAGJZM8sZtqDmxKs-URDIfPsCabbKH5PDY6U5ZU7Djd-HXKwKDiDGgEGfZHb1eTx8OWiAss6gTs80Y3yx4fUSom7DMXg2HENU70vqie8cfMtXwoGtQAVERzHbBw2Fs-KvKAyJbuim2K-grySG0vc7PW9FaRVj3-f6hLZZdcNw__&Key-Pair-Id=APKAJY2HPBFJRRPPSOTQ&t=252305110&w=334&u=93391504&p=1458&c=nuumusicapp-web&s=hMQVOz0zyLVk23OfJhcCXFPhza0bUuMtE_GIfg8IQ4M\";\nconst invalidMp3Url = \"https://amp4samples.cdn.247e.com/sample/assets/mp4-320kbps/01/02/37/b362d6c9-53ce-40c0-8950-f528d57a8d35.mp4\";\n\nlet _simulateFailGetTrackStreamUrls = 0;\nlet _simulateInvalidTrackStreamUrls = 0;\n\nexport function initPlayerDebug() {\n const clearCachePool = () => _clearCachePool();\n const invalidateQueueTrackStreamUrls = () => _invalidateQueueTrackStreamUrls();\n const simulateFailGetTrackStreamUrls = (number: number) => (_simulateFailGetTrackStreamUrls = number);\n const simulateInvalidTrackStreamUrls = (number: number) => (_simulateInvalidTrackStreamUrls = number);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).playerDebug = {\n clearCachePool,\n invalidateQueueTrackStreamUrls,\n simulateFailGetTrackStreamUrls,\n simulateInvalidTrackStreamUrls\n };\n}\n\nasync function _clearCachePool() {\n await caches.delete(serviceWorkerConfig.cacheNameHls);\n}\n\nexport function simulateFailGetTrackStreamUrls(): boolean {\n const should = _simulateFailGetTrackStreamUrls > 0;\n _simulateFailGetTrackStreamUrls--;\n return should;\n}\n\nexport function simulateInvalidTrackStreamUrls(): boolean {\n const should = _simulateInvalidTrackStreamUrls > 0;\n _simulateInvalidTrackStreamUrls--;\n return should;\n}\n\nfunction _invalidateQueueTrackStreamUrls() {\n const audios = store.getState().audioInput.audios;\n const context: AudioContextModel = { action: AudioContextAction.Unknown, trace: null };\n\n audios.forEach(async (audio) => {\n if (!audio.url2) return;\n audio.url2 = getInvalidUrl(audio.url2.urlType);\n await dispatch({\n type: AUDIO_INPUT_AUDIO_SRC_CHANGE,\n payload: {\n audio,\n context\n }\n });\n });\n}\n\nfunction getInvalidUrl(urlType: StreamUrlType): StreamUrl {\n switch (urlType) {\n case StreamUrlType.Hls:\n return { urlType, url: invalidHlsUrl, fetchedTime: new Date().getTime() };\n case StreamUrlType.Mp3:\n return { urlType, url: invalidMp3Url, fetchedTime: new Date().getTime() };\n }\n}\n\nexport function simulateInvalidUrl(urlType: StreamUrlType): { simulate: boolean; url?: StreamUrl } {\n if (simulateFailGetTrackStreamUrls()) return { simulate: true };\n if (simulateInvalidTrackStreamUrls()) return { simulate: true, url: getInvalidUrl(urlType) };\n\n return { simulate: false };\n}\n","export * from \"./debug\";\nexport * from \"./position\";\nexport * from \"./playState\";\n","import { PlayState } from \"models/app/player\";\n\nexport function isAudioLoaded(playState: PlayState): boolean {\n return playState === PlayState.Playing || playState === PlayState.Paused || playState === PlayState.Buffering;\n}\n\nexport function isAudioLoadChange(playStateNow: PlayState, playStateBefore: PlayState) {\n const loadedNow = isAudioLoaded(playStateNow);\n const loadedBefore = isAudioLoaded(playStateBefore);\n return loadedNow !== loadedBefore;\n}\n\nexport function isPlayStatePlayIntent(state: PlayState) {\n return state === PlayState.Buffering || state === PlayState.Playing;\n}\n\n","import { DefaultLogMessage, log } from \"services/logger\";\nimport type { PausePositionModel, PlayPausePositionModel, PlayPositionModel } from \"models/app/player\";\nimport { PlayState } from \"models/app/player\";\n\nexport function getPlayPausePosition(position: PlayPausePositionModel, playing: boolean): PlayPausePositionModel {\n if (playing) return getPlayPosition(position);\n else return getPausePosition(position);\n}\n\nexport function getPlayPosition(position: PlayPausePositionModel): PlayPositionModel {\n if (position.playStartMs != undefined) return position;\n else if (position.pausePosition != undefined) return getPlayPositionFromPausePosition(position);\n else return { playStartMs: 0 };\n}\n\nexport function getPausePosition(position: PlayPausePositionModel): PausePositionModel {\n if (position.pausePosition != undefined) return position;\n else if (position.playStartMs != undefined) return getPausePositonFromPlayPosition(position);\n else return { pausePosition: 0 };\n}\n\nexport function getPositionFromCurrentTime(currentTime: number): PausePositionModel {\n return { pausePosition: currentTime };\n}\n\nexport function isPlayPausePositionEqual(a: PlayPausePositionModel, b: PlayPausePositionModel) {\n const equal = getPlayPausePositionDiff(a, b) === 0;\n return equal;\n}\n\nexport function isPlayPausePositionAlmostEqual(a: PlayPausePositionModel, b: PlayPausePositionModel) {\n const almostEqual = getPlayPausePositionDiff(a, b) < 1;\n return almostEqual;\n}\n\nfunction getPlayPausePositionDiff(a: PlayPausePositionModel, b: PlayPausePositionModel) {\n const aPos = getPausePosition(a);\n const bPos = getPausePosition(b);\n\n return Math.abs(aPos.pausePosition - bPos.pausePosition);\n}\n\nfunction getPlayPositionFromPausePosition(position: PausePositionModel): PlayPositionModel {\n return {\n playStartMs: new Date().getTime() - position.pausePosition * 1000\n };\n}\n\nfunction getPausePositonFromPlayPosition(position: PlayPositionModel): PausePositionModel {\n return {\n pausePosition: (new Date().getTime() - position.playStartMs) / 1000\n };\n}\n\nexport const getSecondsPlayed = ({ playState, position }: { playState: PlayState; position: PlayPausePositionModel }): { seconds: number; next: number | null } => {\n const { playStartMs, pausePosition } = position;\n switch (playState) {\n case PlayState.Error:\n case PlayState.Stopped:\n case PlayState.Buffering:\n case PlayState.Paused: {\n if (pausePosition == null) return { seconds: 0, next: null };\n return { seconds: pausePosition, next: null };\n }\n case PlayState.Playing: {\n if (playStartMs == null) return { seconds: 0, next: null };\n\n const now = new Date().getTime();\n const seconds = (now - playStartMs) / 1000;\n let next = Math.floor(seconds) + 1 - seconds;\n\n if (next <= 0) {\n log.error({ code: \"web-210519-1115\", msg: DefaultLogMessage.UnexpectedValue });\n next = 1;\n }\n return {\n seconds: Math.floor(seconds),\n next\n };\n }\n }\n};\n","export * from \"./initAudioInputService\";\n","import {\n playChangeFromOutput,\n updateLastPosition,\n setAndPlay,\n onControllerOrOutputChange,\n updateAudiosFromPlayQueue,\n loginChange,\n updateAudioEndReason,\n updateAudiosEndReason\n} from \"./service/actions\";\nimport { onAudioError } from \"./service/actions/error\";\nimport { updateAudiosFromLiveRadio } from \"./service/actions/updateAudiosFromLiveRadio\";\nimport { isInputPlayQueueFromState } from \"./service/helpers\";\nimport { isControllerLocalFromState } from \"../controllers/service/helpers\";\nimport {\n AUDIO_INPUT_AUDIOS_CHANGE,\n AUDIO_INPUT_AUDIO_PLAY_CHANGE,\n AUDIO_INPUT_SET_AND_PLAY,\n AUDIO_OUTPUT_AUDIO_FAILED,\n AUDIO_OUTPUT_AUDIO_PLAY_CHANGE,\n LIVERADIO_UPDATE,\n PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE,\n PLAYQUEUE_ENDLESSPLAY_TOGGLE,\n PLAYQUEUE_UPDATE,\n USER_LOGGED_IN,\n USER_LOGGED_OUT\n} from \"global/actions\";\nimport { messageBus } from \"global/config/configureStore\";\nimport { log } from \"services/logger\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\n\nexport const initInputAudioService = () => {\n try {\n if (isInputPlayQueueFromState()) {\n updateAudiosFromPlayQueue(null, { action: AudioContextAction.AppStart, trace: null });\n }\n } catch (e) {\n log.error({ code: \"web-220221-1331\", msg: \"error in update playqueue from audios in initPlayQueueAudioInputService\", error: e });\n }\n\n messageBus.subscribeEvery(AUDIO_OUTPUT_AUDIO_PLAY_CHANGE, (msg) => {\n const { audio, allowPlayChange, playState, position, context } = msg.payload;\n playChangeFromOutput(audio, allowPlayChange, playState, position ?? null, context);\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIO_PLAY_CHANGE, async (msg) => {\n const { audio, playStateBefore, context } = msg.payload;\n\n updateLastPosition();\n updateAudioEndReason(audio, audio.playState, playStateBefore, context);\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIOS_CHANGE, async (msg) => {\n updateLastPosition();\n updateAudiosEndReason(msg.payload.audios, msg.payload.old, msg.payload.context);\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_SET_AND_PLAY, async (msg) => {\n setAndPlay(msg.payload);\n });\n\n messageBus.subscribeEvery(PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE, (msg) => {\n onControllerOrOutputChange(msg.payload.context);\n });\n\n messageBus.subscribeEvery(AUDIO_OUTPUT_AUDIO_FAILED, async ({ payload }) => {\n if (!isControllerLocalFromState()) return; // CC TODO how to we handle play fail in CC?\n onAudioError(payload.code, payload.audio, payload.context, payload.message, payload.trackUrlCacheError, payload.trackUrlFetchError);\n });\n\n messageBus.subscribeEvery(LIVERADIO_UPDATE, async (msg) => {\n updateAudiosFromLiveRadio(msg.payload.analytics?.queueAddData ?? null, msg.payload.context);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_UPDATE, async (msg) => {\n updateAudiosFromPlayQueue(msg.payload.queueAdded, msg.payload.context);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_ENDLESSPLAY_TOGGLE, () => {\n updateAudiosFromPlayQueue(null, { action: AudioContextAction.EndlessPlayUpdate, trace: null });\n });\n\n messageBus.subscribeEvery(USER_LOGGED_IN, async () => {\n // if (!isControllerLocalFromState()) return;\n await messageBus.sync();\n\n loginChange({ action: AudioContextAction.UserLogIn, trace: null });\n });\n\n messageBus.subscribeEvery(USER_LOGGED_OUT, async () => {\n // if (!isControllerLocalFromState()) return;\n await messageBus.sync();\n\n loginChange({ action: AudioContextAction.UserLogOut, trace: null });\n });\n};\n","export * from \"./initLiveRadioAudioInputService\";\n","import { updateLiveRadioTracksSync } from \"./service\";\nimport { setAndPlay } from \"./service/setAndPlay\";\nimport { messageBus, dispatch } from \"global\";\nimport { AUDIO_INPUT_TYPE_CHANGE, LIVERADIO_SET_AND_PLAY, LIVERADIO_UPDATE } from \"global/actions\";\nimport { AudioInputType } from \"models/app/player\";\n\nexport const initLiveRadioAudioInputService = () => {\n updateLiveRadioTracksSync();\n\n messageBus.subscribeEvery(LIVERADIO_SET_AND_PLAY, async (msg) => {\n const { radio, radioContext, context } = msg.payload;\n setAndPlay(radio, radioContext, context);\n });\n\n messageBus.subscribeEvery(LIVERADIO_UPDATE, () => {\n updateLiveRadioTracksSync();\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_TYPE_CHANGE, (msg) => {\n if (msg.payload.input !== AudioInputType.LiveRadio) {\n dispatch({ type: LIVERADIO_UPDATE, payload: { radio: null, radioContext: null, analytics: null, context: msg.payload.context } });\n }\n });\n};\n","import { store } from \"global\";\n\nexport const getCurrentLiveRadioFromState = () => {\n const liveRadio = store.getState().liveRadio.currentRadio;\n return liveRadio;\n};\n","export * from \"./currentLiveRadio\";\nexport * from \"./liveRadioTracks\";\nexport * from \"./playable\";\nexport * from \"./setAndPlay\";\n","import { store, dispatch } from \"global\";\nimport { LIVERADIO_NOW_AND_RECENTLY_PLAYED_UPDATE } from \"global/actions\";\nimport { liveRadioConstant } from \"global/constants/liveRadio\";\nimport { getLiveRadioNowAndRecentlyPlayed } from \"services/backend\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { isInputLiveRadioFromState } from \"services/player/inputs/service/helpers\";\n\nlet intervalRef: number | null = null;\n\nexport function updateLiveRadioTracksSync() {\n if (isInputLiveRadioFromState()) {\n const id = store.getState().liveRadio.currentRadio?.id || null;\n if (id == null) {\n log.error({ code: \"web-220228-1803\", msg: DefaultLogMessage.UnexpectedNull });\n stop();\n return;\n }\n start(id);\n return;\n }\n stop();\n}\n\nfunction stop() {\n if (intervalRef) window.clearInterval(intervalRef);\n}\n\nfunction start(id: string) {\n fetch(id);\n if (intervalRef) window.clearInterval(intervalRef);\n intervalRef = window.setInterval(async () => fetch(id), liveRadioConstant.recentlyPlayedTracksPollInterval);\n}\n\nasync function fetch(id: string) {\n const tracks = (await getLiveRadioNowAndRecentlyPlayed({ id })).model;\n dispatch({ type: LIVERADIO_NOW_AND_RECENTLY_PLAYED_UPDATE, payload: { tracks } });\n}\n","import { store } from \"global\";\nimport type { AudioInputItemLiveRadioModel } from \"models/app/player/input\";\nimport type { LiveRadioPlayableModel } from \"models/domain\";\n\nexport function getLiveRadioPlayableFromAudio(audio: AudioInputItemLiveRadioModel): LiveRadioPlayableModel | null {\n const radio = store.getState().liveRadio.currentRadio;\n if (!radio) return null;\n\n const same = audio.radioId === radio.id;\n if (!same) return null;\n\n return radio;\n}\n","import { dispatch } from \"global\";\nimport { LIVERADIO_UPDATE } from \"global/actions\";\nimport { getLiveRadioPlay } from \"services/backend\";\nimport { log } from \"services/logger\";\nimport { getAnalyticsPlayableProperties } from \"services/logger/analytics/properties/event\";\nimport { getAnalyticsQueueIntentPropertiesGroup, createQueueAddedAnalyticsData } from \"services/logger/analytics/properties/groups\";\nimport { createNormalizedData } from \"services/normalizeData\";\nimport { isInputLiveRadioFromState } from \"services/player/inputs/service/helpers\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { LiveRadioPlayablePreviewModel } from \"models/domain\";\nimport { createLiveRadioPlayablePlay } from \"models/domain\";\nimport { openToast } from \"components/organisms/toast\";\nimport { PlaybackFailToast } from \"components/organisms/toast/toasts\";\n\nexport async function setAndPlay(radio: LiveRadioPlayablePreviewModel, radioContext: PreviewContextModel, context: AudioContextModel) {\n if (!isInputLiveRadioFromState()) return;\n\n const analytics = getAnanlytics(radio, radioContext);\n\n dispatch({ type: LIVERADIO_UPDATE, payload: { radio, radioContext, analytics, context } });\n\n const radioPlay = (await getLiveRadioPlay({ id: radio.id })).model;\n\n if (radioPlay?.mp3Url == null) {\n log.error({ code: \"web-220224-1611\", msg: \"could not load live radio url\", data: { radio, radioPlay } });\n\n dispatch({ type: LIVERADIO_UPDATE, payload: { radio: null, radioContext: null, analytics: null, context } });\n openToast(PlaybackFailToast());\n return;\n }\n\n const radioPlayablePlay = createLiveRadioPlayablePlay(radioPlay, radio.parent);\n\n dispatch({ type: LIVERADIO_UPDATE, payload: { radio: radioPlayablePlay, analytics, radioContext, context } });\n}\n\nfunction getAnanlytics(radio: LiveRadioPlayablePreviewModel, radioContext: PreviewContextModel) {\n const intentData = getAnalyticsQueueIntentPropertiesGroup(radioContext);\n const queueAddData = createNormalizedData(createQueueAddedAnalyticsData(intentData, radio.parent));\n const playableData = getAnalyticsPlayableProperties(radio);\n\n return { playableData, queueAddData };\n}\n","import { h } from \"preact\";\nimport { dispatch } from \"global\";\nimport { AUDIO_OUTPUT_AUDIO_ENDED, PLAYQUEUE_CLEAR_PRIORITY_LANE, PLAYQUEUE_KEEP_PRIORITY_LANE } from \"global/actions\";\nimport { messageBus, useTranslations } from \"global/config\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport { ButtonDesign } from \"components/atoms/controls/button\";\nimport type { ModalButton } from \"components/organisms/modal\";\nimport { Modal, dismissModal, openModal } from \"components/organisms/modal\";\n\nexport function showPriorityQueueActionModal(context: AudioContextModel, playQueue: QueueTrackModel[]) {\n return openModal(<PriorityQueueActionModal context={context} playQueue={playQueue} />);\n}\n\nexport function PriorityQueueActionModal({ context, playQueue }: { context: AudioContextModel; playQueue: QueueTrackModel[] }) {\n const priorityQueue = playQueue.filter((item) => item.lane === QueueLane.Priority);\n const translations = useTranslations();\n const buttons: ModalButton[] = [\n {\n title: \"PriorityQueueWarningDeleteOption\",\n action: () => priorityQueueActionClear(context),\n design: ButtonDesign.TextBrandMedium\n },\n {\n title: \"PriorityQueueWarningKeepOption\",\n action: () => priorityQueueActionKeep(context),\n design: ButtonDesign.PrimarySmall\n }\n ];\n\n const firstTrack = priorityQueue[0] ?? null;\n\n messageBus.subscribeOne(AUDIO_OUTPUT_AUDIO_ENDED, () => {\n priorityQueueActionKeepNoActionTaken(context);\n });\n\n const NextTrackTitle = firstTrack ? firstTrack.track.title : \"\";\n const NextTrackArtist = firstTrack ? firstTrack.track.artist.name : \"\";\n const ExtraCounts = `${priorityQueue.length - 1}`;\n\n const singletrack = translations.PriorityQueueWarningSubTitleSingleTrack;\n const multipetrack = translations.PriorityQueueWarningSubTitleMultiple;\n const translation = priorityQueue.length > 1 ? multipetrack : singletrack;\n\n const text = translation\n .replaceAll(/\\\\n/g, \"\\n\")\n .replace(\"${NextTrackTitle}\", NextTrackTitle)\n .replace(\"${NextTrackArtist}\", NextTrackArtist)\n .replace(\"${ExtraCounts}\", ExtraCounts);\n\n return <Modal title={translations.PriorityQueueWarningTitle} text={text} buttons={buttons} />;\n}\n\nfunction priorityQueueActionKeep(context: AudioContextModel) {\n dispatch({ type: PLAYQUEUE_KEEP_PRIORITY_LANE, payload: { context, noActionTaken: false } });\n dismissModal(\"PriorityQueueWarningKeepOption\");\n}\nfunction priorityQueueActionKeepNoActionTaken(context: AudioContextModel) {\n dispatch({ type: PLAYQUEUE_KEEP_PRIORITY_LANE, payload: { context, noActionTaken: true } });\n dismissModal(\"PriorityQueueWarningKeepOption\");\n}\n\nfunction priorityQueueActionClear(context: AudioContextModel) {\n dispatch({ type: PLAYQUEUE_CLEAR_PRIORITY_LANE, payload: { context } });\n dismissModal(\"PriorityQueueWarningDeleteOption\");\n}\n","import { tryStartPlayCurrentLane } from \"./playTrack\";\nimport { updatePlayQueue } from \"./updatePlayQueue\";\nimport { addTracksToQueueTracks, addPlayablesToQueue } from \"../helpers\";\nimport { store } from \"global\";\nimport { log, LogTag } from \"services/logger\";\nimport { getAnalyticsQueueIntentPropertiesGroup, createQueueAddedAnalyticsData } from \"services/logger/analytics/properties/groups\";\nimport { createNormalizedData } from \"services/normalizeData\";\nimport { getTrackAndParentFromPlayable } from \"services/playable\";\nimport { putAttributePlayUserTrace } from \"models/app\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { QueueTrackModel, PlayQueueModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { PlayQueuePlayableModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { ShuffleState } from \"models/view\";\nimport { openToast } from \"components/organisms/toast\";\nimport { AddMusicToQueueSuccessToast } from \"components/organisms/toast/toasts\";\n\nexport const addToQueue = async (\n playable: PlayQueuePlayableModel,\n index: number | null,\n lane: QueueLane,\n atEnd: boolean,\n previewContext: PreviewContextModel,\n context: AudioContextModel\n) => {\n const { queue, player, audioInput } = store.getState();\n const isPlayQueueEmpty = queue.playQueue.length === 0;\n const isFlowLaneEmpty = queue.playQueue.findIndex((item) => item.lane === QueueLane.Flow) === -1;\n\n const shuffleOn = player.shuffle !== ShuffleState.Off;\n let newPlayQueue: QueueTrackModel[];\n let newLane: QueueLane;\n if (lane === QueueLane.Preview) {\n if (isFlowLaneEmpty) {\n newLane = QueueLane.Priority;\n } else {\n newLane = QueueLane.Flow;\n }\n } else {\n newLane = lane;\n }\n const queueIntentData = getAnalyticsQueueIntentPropertiesGroup(previewContext);\n const parent = getTrackAndParentFromPlayable(playable).parent;\n const addData = createQueueAddedAnalyticsData(queueIntentData, parent);\n const queueAddData = createNormalizedData(addData);\n if (playable.contentType === ContentType.TrackPlayable) {\n newPlayQueue = addTracksToQueueTracks(queue.playQueue, [playable], newLane, atEnd, index, isPlayQueueEmpty, shuffleOn, queueAddData.referenceId, \"web-210716-1555\");\n } else {\n newPlayQueue = await addPlayablesToQueue(queue.playQueue, [playable], newLane, atEnd, index, isPlayQueueEmpty, shuffleOn, queueAddData.referenceId);\n }\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-210212-0956\",\n msg: \"playable has been added to queue\",\n data: { playable }\n }));\n let newQueue: PlayQueueModel = { ...queue, playQueue: newPlayQueue };\n newQueue = await updatePlayQueue(newQueue, context, false, queueAddData, [getTrackAndParentFromPlayable(playable).parent]);\n\n openToast(AddMusicToQueueSuccessToast());\n\n if (!isPlayQueueEmpty) return;\n\n if (context.trace) putAttributePlayUserTrace(context.trace, { type: \"clickOnType\", value: playable.contentType });\n tryStartPlayCurrentLane(newQueue, audioInput.audios, context);\n};\n","import { playNext, PlayNextSource } from \"./playNext\";\nimport { log } from \"services/logger\";\nimport { getCurrentInputAudioItemFromState } from \"services/player/inputs/service/helpers\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport function audioEnded(audioId: string, context: AudioContextModel) {\n const current = getCurrentInputAudioItemFromState();\n if (current?.audioId !== audioId) {\n log.error({ code: \"web-211003-1232\", msg: \"ended song is not current lane\" });\n return;\n }\n\n playNext(true, PlayNextSource.SongEnded, context);\n}\n","import { updatePlayQueue } from \"./updatePlayQueue\";\nimport { store } from \"global\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { PlayQueueModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\n\nexport const clearPriorityQueue = async (context: AudioContextModel) => {\n const { queue } = store.getState();\n const newQueue = removePriorityLaneFromQueue(queue);\n\n await updatePlayQueue(newQueue, context, false, null);\n};\n\nexport function removePriorityLaneFromQueue(queue: PlayQueueModel): PlayQueueModel {\n const newPlayQueue = queue.playQueue.filter((item) => item.lane !== QueueLane.Priority);\n return { ...queue, playQueue: newPlayQueue };\n}\n","import { updatePlayQueue } from \"./updatePlayQueue\";\nimport { store } from \"global\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { PlayQueueModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\n\nexport const clearQueue = async (context: AudioContextModel) => {\n const { queue } = store.getState();\n const newQueue: PlayQueueModel = {\n ...queue,\n playQueue: [],\n context: null,\n trackParent: null\n };\n await updatePlayQueue(newQueue, context, false, null);\n};\n\nexport function getClearedQueue(queue: PlayQueueModel, keepQueueLane?: boolean): PlayQueueModel {\n const newPlayQueue = keepQueueLane ? queue.playQueue.filter((item) => item.lane === QueueLane.Priority) : [];\n return { ...queue, playQueue: newPlayQueue };\n}\n","import { addToQueue } from \"./addToQueue\";\nimport { moveTrack } from \"./moveTrack\";\nimport { store } from \"global\";\nimport type { PlayQueueDragAddToQueueAction } from \"global/actions/actionTypes\";\nimport { ContentType } from \"models/ModelType\";\n\nexport function dropTrack({ playable, lane, atEnd, queueTrack, action, playableContext, context }: PlayQueueDragAddToQueueAction[\"payload\"]) {\n // todo this payload could be simplified and should just recieve an insert position\n const { queue } = store.getState();\n\n const index = queueTrack ? queue.playQueue.findIndex((item) => item.queueId === queueTrack.queueId) : null;\n if (action === \"move\" && playable.contentType === ContentType.QueueTrack) {\n moveTrack(playable, lane, atEnd, index, context);\n } else if (action === \"add\") {\n // todo this function should implement move to index\n addToQueue(playable, index, lane, atEnd, playableContext, context);\n }\n}\n","import { updatePlayQueue } from \"./updatePlayQueue\";\nimport { dispatch, store } from \"global\";\nimport { PLAYQUEUE_ENDLESSPLAY_TRACK_ID_UPDATE, PLAYQUEUE_ENDLESSPLAY_UPDATE } from \"global/actions\";\nimport { playerConfig } from \"global/constants\";\nimport { getMeEndlessPlay } from \"services/backend\";\nimport { getAnalyticsQueueIntentPropertiesGroup, createQueueAddedAnalyticsData } from \"services/logger/analytics/properties/groups\";\nimport { createNormalizedData } from \"services/normalizeData\";\nimport { getTrackPlayablePreviews } from \"services/playable\";\nimport { isControllerChromecastFromState } from \"services/player/controllers/service/helpers\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { QueueMode, QueueTrackModel } from \"models/app/player/input\";\nimport { createQueueTrackModel, QueueLane } from \"models/app/player/input\";\nimport { createPageContext, createSectionContext, createPreviewContext } from \"models/app/resourceContextModel\";\nimport { ResourceDisplayType } from \"models/domain\";\nimport type { EndlessPlayModel } from \"models/domain/EndlessPlayModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { NavigationPageRootName } from \"models/view/navigationStack\";\n\nexport async function updateEndlessPlay(context: AudioContextModel) {\n const queue = store.getState().queue;\n if (queue.mode === QueueMode.MixRadio) return;\n\n const tracks = queue.playQueue;\n const existingTrackId = queue.endlessPlayTrackId;\n const newTrackId = tracks[tracks.length - 1]?.track.id ?? null;\n\n if (newTrackId === existingTrackId) return;\n\n dispatch({ type: PLAYQUEUE_ENDLESSPLAY_TRACK_ID_UPDATE, payload: { trackId: newTrackId } });\n if (newTrackId == null) {\n dispatch({ type: PLAYQUEUE_ENDLESSPLAY_UPDATE, payload: { endlessPlay: null, context } });\n return;\n }\n\n const stateTrackId = store.getState().queue.endlessPlayTrackId;\n if (newTrackId !== stateTrackId) return;\n const endlessPlay = (await getMeEndlessPlay({ trackId: newTrackId, first: playerConfig.endlessPlayLength })).model;\n if (endlessPlay?.tracks.items.length === 0) {\n // TODO: sometimes endless play is empty from backend, but UI does not handle this\n return;\n }\n\n dispatch({ type: PLAYQUEUE_ENDLESSPLAY_UPDATE, payload: { endlessPlay, context } });\n}\n\ninterface SetEndlessPlayProps {\n endlessPlay: EndlessPlayModel | null;\n context: AudioContextModel;\n}\n\nexport async function addEndlessPlayToQueue({ endlessPlay, context }: SetEndlessPlayProps) {\n let { queue } = store.getState();\n\n const pageContext = createPageContext({ type: ContentType.EndlessPlay, resource: endlessPlay, root: NavigationPageRootName.EndlessPlay, done: true });\n const sectionContext = createSectionContext(ContentType.EndlessPlay, endlessPlay, pageContext, 0, ResourceDisplayType.List);\n const previewContext = createPreviewContext(ContentType.EndlessPlay, endlessPlay, sectionContext, null);\n\n if (endlessPlay) {\n const tracks = getTrackPlayablePreviews(endlessPlay.tracks.items, endlessPlay);\n const queueIntentData = getAnalyticsQueueIntentPropertiesGroup(previewContext);\n const addData = createQueueAddedAnalyticsData(queueIntentData, endlessPlay);\n const queueAddData = createNormalizedData(addData);\n\n const newEndlessPlay: QueueTrackModel[] = tracks.map((track) => createQueueTrackModel(track, QueueLane.Preview, null, queueAddData.referenceId));\n\n queue = { ...queue, endlessPlay: newEndlessPlay };\n await updatePlayQueue(queue, context, false, queueAddData, [endlessPlay]);\n } else {\n queue = { ...queue, endlessPlay: [] };\n await updatePlayQueue(queue, context, false, null);\n }\n}\n\nexport async function moveEndlessPlayToFlowLane(context: AudioContextModel) {\n if (!isControllerChromecastFromState()) return;\n const queue = store.getState().queue;\n if (queue.mode === QueueMode.MixRadio) return;\n\n const endlessPlayOn = queue.isEndlessPlayOn;\n if (!endlessPlayOn) return;\n\n const tracks = queue.playQueue;\n if (!tracks.length) return;\n\n const endlessPlay = queue.endlessPlay;\n if (!endlessPlay.length) return;\n\n const currentIndex = queue.playQueue.findIndex((track) => track.lane === QueueLane.Current);\n if (currentIndex === -1) return;\n\n const isEnd = currentIndex >= queue.playQueue.length - 1;\n if (!isEnd) return;\n\n const add = endlessPlay.map((item) => ({ ...item, lane: QueueLane.Flow }));\n const newTracks = [...tracks, ...add];\n\n const newQueue = { ...queue, playQueue: newTracks, endlessPlay: [] };\n\n await updatePlayQueue(newQueue, context, false, null);\n}\n","export * from \"./addToQueue\";\nexport * from \"./clearQueue\";\nexport * from \"./dropTrack\";\nexport * from \"./endlessPlay\";\nexport * from \"./mixRadio\";\nexport * from \"./moveTrack\";\nexport * from \"./playNext\";\nexport * from \"./playPrevious\";\nexport * from \"./playTrack\";\nexport * from \"./removeTrack\";\nexport * from \"./replaceQueue\";\nexport * from \"./rewind\";\nexport * from \"./rewindOrPlayPrevious\";\nexport * from \"./skipOnFail\";\nexport * from \"./toggleQueueView\";\nexport * from \"./updatePlayQueue\";\nexport * from \"./clearPriorityQueue\";\n","import { updatePlayQueue } from \"./updatePlayQueue\";\nimport { getCurrentLaneIndexFromState, getMixRadioQueueTracks } from \"../helpers\";\nimport { store } from \"global\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { QueueMode } from \"models/app/player/input\";\nimport type { PlayQueueModel } from \"models/app/player/input\";\n\nexport let guard = false;\nexport async function addMixRadioTracksToQueue(context: AudioContextModel) {\n const mode = store.getState().queue.mode;\n if (mode !== QueueMode.MixRadio) return;\n\n if (guard) return;\n guard = true;\n\n const queue = store.getState().queue;\n const currentIndex = getCurrentLaneIndexFromState();\n const result = await getMixRadioQueueTracks(queue, currentIndex);\n\n if (!result) {\n guard = false;\n return;\n }\n\n const newQueue: PlayQueueModel = { ...queue, playQueue: result.queueTracks };\n await updatePlayQueue(newQueue, context, false, result.queueAddData);\n guard = false;\n}\n","import { getTrackIndexInQueueLane, updateQueueLanes } from \"../helpers\";\nimport { updatePlayQueue } from \"./updatePlayQueue\";\nimport { store } from \"global\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport { ShuffleState } from \"models/view\";\n\nexport const moveTrack = async (playable: QueueTrackModel, lane: QueueLane, atEnd: boolean, index: number | null, context: AudioContextModel) => {\n const state = store.getState();\n let { queue } = state;\n const { player } = state;\n let playQueue = [...queue.playQueue];\n const shuffleOn = player.shuffle !== ShuffleState.Off;\n const oldIndex = playQueue.findIndex((item) => item.queueId === playable.queueId);\n\n if (playable.lane === QueueLane.Preview) {\n const endlessPlay = queue.endlessPlay.filter((item) => item.queueId !== playable.queueId);\n queue = { ...queue, endlessPlay };\n } else {\n playQueue.splice(oldIndex, 1);\n if (index != null && oldIndex < index) index--;\n }\n let newLane: QueueLane;\n if (lane === QueueLane.Preview) {\n const indexOfFlowLaneItem = playQueue.findIndex((item) => item.lane === QueueLane.Flow);\n newLane = indexOfFlowLaneItem === -1 ? QueueLane.Priority : QueueLane.Flow;\n } else {\n newLane = lane;\n }\n\n const updatedTrack = { ...playable, lane: newLane, originalIndex: shuffleOn ? playQueue.length + 1 : null };\n\n if (index == null) index = getTrackIndexInQueueLane(playQueue, lane, atEnd);\n playQueue.splice(index, 0, updatedTrack);\n if (playable.lane === QueueLane.Current) {\n playQueue = updateQueueLanes(playQueue, oldIndex);\n }\n queue = { ...queue, playQueue };\n await updatePlayQueue(queue, context, false, null);\n};\n","import { updateQueueLanes } from \"../helpers\";\nimport { updatePlayQueue } from \"./updatePlayQueue\";\nimport { store } from \"global\";\nimport { log } from \"services/logger\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { QueueLane } from \"models/app/player/input\";\nimport type { AudioInputItemModel, AudioInputItemPlayQueueModel } from \"models/app/player/input\";\n\nexport const playFromAudioChange = (audio: AudioInputItemModel, context: AudioContextModel): void => {\n if (audio.input !== AudioInputType.PlayQueue) {\n log.error({ code: \"web-210223-1428\", msg: \"audio change is only supported for play queue audios\" });\n return;\n }\n\n playFromPlayQueueAudioChange(audio, context);\n};\n\nfunction playFromPlayQueueAudioChange(audio: AudioInputItemPlayQueueModel, context: AudioContextModel) {\n const queue = store.getState().queue;\n let tracks = queue.playQueue;\n\n if (tracks.length === 0) {\n log.error({ code: \"web-210620-1657\", msg: \"no tracks in queue\" });\n return;\n }\n\n const queueId = audio.queueId;\n const queueTrackIndex = tracks.findIndex((item) => item.queueId === queueId);\n const queueTrack = tracks[queueTrackIndex];\n\n if (queueTrackIndex === -1 || !queueTrack) {\n log.error({ code: \"web-210620-1658\", msg: \"cant find queue track to play\", data: { audioTitle: audio.logTitle, queueTracks: tracks, audio } });\n return;\n }\n\n if (queueTrack.lane === QueueLane.Current) {\n log.error({ code: \"web-210620-1659\", msg: \"queue track already in current lane\" });\n }\n\n tracks = updateQueueLanes(tracks, queueTrackIndex);\n const newQueue = { ...queue, playQueue: tracks };\n\n updatePlayQueue(newQueue, context, false, null);\n}\n","import { guard } from \"./mixRadio\";\nimport { updatePlayQueue } from \"./updatePlayQueue\";\nimport {\n getCurrentLane,\n getCurrentLaneFromState,\n getCurrentLaneIndexFromState,\n getCurrentLaneQueueId,\n getMixRadioQueueTracks,\n movePreviewLaneToFlowLane,\n updateQueueLanes\n} from \"../helpers\";\nimport { dispatch, messageBus, store } from \"global\";\nimport { PLAYER_REPEAT } from \"global/actions\";\nimport type { AnalyticsQueueAddedPropertiesGroup } from \"services/logger/analytics/properties/groups\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport type { NormalizedData } from \"services/normalizeData\";\nimport { startPlay, tryStopPlayAll } from \"services/player/inputs/service/actions\";\nimport { getCurrentInputAudioItemFromState } from \"services/player/inputs/service/helpers\";\nimport { PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { PlayQueueModel } from \"models/app/player/input\";\nimport { QueueMode } from \"models/app/player/input\";\nimport { ShuffleState, RepeatStatus } from \"models/view\";\n\nexport enum PlayNextSource {\n SongEnded = \"SongEnded\",\n UserClick = \"UserClick\",\n SkipOnFail = \"SkipOnFail\"\n}\n\ninterface PlayNextProps {\n source: PlayNextSource;\n context: AudioContextModel;\n}\n\nexport const playNext = async (play: boolean | undefined, source: PlayNextSource, context: AudioContextModel) => {\n if (source === PlayNextSource.UserClick) {\n const playQueue = store.getState().queue.playQueue;\n const currentLaneIndex = getCurrentLaneIndexFromState();\n\n if (guard && playQueue.length - 1 === currentLaneIndex) {\n log.warn({ code: \"web-210906-1439\", msg: \"clicking next on empty mixradio queue\" });\n return;\n }\n }\n\n const current = getCurrentInputAudioItemFromState();\n\n if (play == undefined) play = current?.playState === PlayState.Buffering || current?.playState === PlayState.Playing;\n\n tryStopPlayAll(context);\n\n const { queue, continuePlay } = await playNextTrack({ source, context });\n\n if (!continuePlay) play = false;\n\n if (source === PlayNextSource.SkipOnFail) {\n if (!continuePlay) return;\n\n const oldCurrentLane = getCurrentLaneFromState();\n const newCurrentLane = getCurrentLane(queue.playQueue);\n\n if (oldCurrentLane?.id === newCurrentLane?.id) return;\n }\n\n updatePlayQueue(queue, context, false, null);\n await messageBus.sync();\n\n const queueId = getCurrentLaneQueueId();\n\n if (queueId == null) {\n log.error({ code: \"web-210520-1621\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n if (play) {\n startPlay(queueId, context);\n }\n};\n\nconst playNextTrack = async ({ source, context }: PlayNextProps): Promise<{ queue: PlayQueueModel; continuePlay: boolean }> => {\n const { queue, player } = store.getState();\n\n if (queue.playQueue.length === 0) {\n log.error({ code: \"web-210519-1157\", msg: DefaultLogMessage.UnexpectedValue });\n return { queue, continuePlay: false };\n }\n\n const currentIndex = getCurrentLaneIndexFromState();\n if (currentIndex === -1) {\n log.error({ code: \"web-210519-1156\", msg: DefaultLogMessage.UnexpectedValue });\n return { queue, continuePlay: false };\n }\n\n const isPlayerModeMixRadio = queue.mode === QueueMode.MixRadio;\n if (isPlayerModeMixRadio) {\n return playNextTrackMixRadioMode({ queue, currentIndex, shuffleOn: player.shuffle !== ShuffleState.Off });\n }\n return playNextTrackDefaultMode({ source, repeat: player.repeat, queue, currentIndex, context });\n};\n\ninterface DefaultModeProps extends PlayNextProps {\n queue: PlayQueueModel;\n repeat: RepeatStatus;\n currentIndex: number;\n}\n\nconst playNextTrackDefaultMode = ({ source, repeat, queue, currentIndex }: DefaultModeProps): { queue: PlayQueueModel; continuePlay: boolean } => {\n let continuePlay: boolean;\n let newCurrentIndex: number;\n let playQueue = queue.playQueue;\n const isEnd = currentIndex >= queue.playQueue.length - 1;\n\n switch (repeat) {\n case RepeatStatus.None: {\n if (queue.isEndlessPlayOn) {\n if (isEnd) {\n if (queue.endlessPlay.length === 0) {\n continuePlay = false;\n newCurrentIndex = 0;\n } else {\n playQueue = movePreviewLaneToFlowLane(queue);\n continuePlay = true;\n newCurrentIndex = currentIndex + 1;\n }\n } else {\n continuePlay = true;\n newCurrentIndex = currentIndex + 1;\n }\n } else {\n continuePlay = !isEnd;\n newCurrentIndex = !isEnd ? currentIndex + 1 : 0;\n }\n break;\n }\n case RepeatStatus.One: {\n continuePlay = true;\n if (source === PlayNextSource.UserClick) {\n if (isEnd) {\n newCurrentIndex = 0;\n dispatch({ type: PLAYER_REPEAT, payload: { repeat: RepeatStatus.None } });\n } else {\n newCurrentIndex = currentIndex + 1;\n }\n } else {\n newCurrentIndex = currentIndex;\n }\n break;\n }\n case RepeatStatus.All: {\n continuePlay = true;\n newCurrentIndex = !isEnd ? currentIndex + 1 : 0;\n break;\n }\n }\n\n playQueue = updateQueueLanes(playQueue, newCurrentIndex);\n\n const newQueue: PlayQueueModel = { ...queue, playQueue };\n return { queue: newQueue, continuePlay };\n};\n\ninterface MixRadioModeProps {\n queue: PlayQueueModel;\n currentIndex: number;\n shuffleOn: boolean;\n}\n\nconst playNextTrackMixRadioMode = async ({\n queue,\n currentIndex\n}: MixRadioModeProps): Promise<{ queue: PlayQueueModel; queueAddData: NormalizedData<AnalyticsQueueAddedPropertiesGroup> | null; continuePlay: boolean }> => {\n let playQueue = queue.playQueue;\n let queueAddData: NormalizedData<AnalyticsQueueAddedPropertiesGroup> | null = null;\n\n const remaining = playQueue.length - currentIndex - 1;\n\n if (remaining === 0) {\n const result = await getMixRadioQueueTracks(queue, currentIndex);\n if (result) {\n playQueue = result.queueTracks;\n queueAddData = result.queueAddData;\n }\n }\n\n const newCurrentIndex = currentIndex + 1;\n\n playQueue = updateQueueLanes(playQueue, newCurrentIndex);\n const newQueue: PlayQueueModel = { ...queue, playQueue };\n return { queue: newQueue, queueAddData, continuePlay: true };\n};\n","import { updatePlayQueue } from \"./updatePlayQueue\";\nimport { getCurrentLaneIndexFromState, getCurrentLaneQueueId, updateQueueLanes } from \"../helpers\";\nimport { messageBus, store } from \"global\";\nimport { DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { startPlay } from \"services/player/inputs/service/actions\";\nimport { PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { getAudioPropertiesFromState } from \"components/shared/hooks\";\n\nexport const playPrevious = async (context: AudioContextModel) => {\n const playState = getAudioPropertiesFromState().playState;\n const play = playState === PlayState.Buffering || playState === PlayState.Playing;\n let { queue } = store.getState();\n\n let { playQueue } = queue;\n let currentIndex = getCurrentLaneIndexFromState();\n currentIndex = currentIndex > 0 ? currentIndex - 1 : playQueue.length - 1;\n playQueue = updateQueueLanes(playQueue, currentIndex);\n\n queue = { ...queue, playQueue };\n\n await updatePlayQueue(queue, context, false, null);\n await messageBus.sync();\n\n const queueId = getCurrentLaneQueueId();\n if (queueId == null) {\n log.error({ code: \"web-210520-1621\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n if (play) startPlay(queueId, context);\n};\n","import { updatePlayQueue } from \"./updatePlayQueue\";\nimport { getCurrentLane, isAudioItemPlaying, movePreviewLaneToFlowLane, updateQueueLanes } from \"../helpers\";\nimport { store } from \"global\";\nimport { log } from \"services/logger\";\nimport { startPlay } from \"services/player/inputs/service/actions\";\nimport { putAttributePlayUserTrace } from \"models/app\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel, PlayQueueModel, QueueTrackModel } from \"models/app/player/input\";\n\nexport const playQueuePlayTrack = async (uniqueId: string, isPreviewLane: boolean, context: AudioContextModel) => {\n let { queue } = store.getState();\n\n if (isPreviewLane) queue.playQueue = movePreviewLaneToFlowLane(queue);\n queue = playQueueTrack(queue, uniqueId);\n await updatePlayQueue(queue, context, false, null);\n startPlay(uniqueId, context);\n};\n\nconst playQueueTrack = (queue: PlayQueueModel, queueId: string) => {\n let playQueue: QueueTrackModel[] = queue.playQueue;\n\n const newCurrentIndex = playQueue.findIndex((item) => item.queueId === queueId);\n if (newCurrentIndex === -1) {\n log.error({ code: \"web-210519-1154\", msg: \"newCurrentIndex === -1\" });\n return queue;\n }\n playQueue = updateQueueLanes(playQueue, newCurrentIndex);\n return { ...queue, playQueue };\n};\n\nexport async function tryStartPlayCurrentLane(queue: PlayQueueModel, audios: AudioInputItemModel[], context: AudioContextModel) {\n const currentLane = getCurrentLane(queue.playQueue);\n if (!currentLane) {\n log.error({ code: \"web-210218-1129\", msg: \"nothing in currentLane\" });\n return;\n }\n\n if (isAudioItemPlaying(audios, currentLane.queueId)) return;\n const { title, id } = currentLane.track;\n\n if (context.trace) putAttributePlayUserTrace(context.trace, { type: \"title_trackId\", value: `${title} | ${id}` });\n await startPlay(currentLane.queueId, context);\n}\n","import { updatePlayQueue } from \"./updatePlayQueue\";\nimport { store } from \"global\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport const removeItemFromQueue = async (queueId: string, isPreviewLane: boolean, context: AudioContextModel) => {\n let queue = store.getState().queue;\n\n if (isPreviewLane) {\n queue = {\n ...queue,\n endlessPlay: queue.endlessPlay.filter((item) => item.queueId !== queueId)\n };\n } else {\n queue = {\n ...queue,\n playQueue: queue.playQueue.filter((item) => item.queueId !== queueId)\n };\n }\n await updatePlayQueue(queue, context, false, null);\n};\n","import { getClearedQueue } from \"./clearQueue\";\nimport { showPriorityQueueActionModal } from \"./PriorityQueueActionModal\";\nimport { updatePlayQueue } from \"./updatePlayQueue\";\nimport { addTracksToQueueTracks, getCurrentLane, shufflePlayQueue } from \"../helpers\";\nimport { store, dispatch } from \"global\";\nimport { PLAYER_SET_PLAY, SET_DESKTOP_QUEUE_OPEN, PLAYQUEUE_ENDLESSPLAY_TRACK_ID_UPDATE } from \"global/actions\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { getAnalyticsQueueIntentPropertiesGroup, createQueueAddedAnalyticsData } from \"services/logger/analytics/properties/groups\";\nimport { createNormalizedData } from \"services/normalizeData\";\nimport { getTrackAndParentFromPlayable, updateSessionAndGetTracks } from \"services/playable\";\nimport { putAttributePlayUserTrace, DesktopQueueOpen } from \"models/app\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel, PlayQueueModel, QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport { removePageSectionsFromPreviewContext } from \"models/app/resourceContextModel\";\nimport type { PlayQueuePlayableModel, TrackPlayablePreviewModel } from \"models/domain\";\nimport { createTrackPlayablePreview, getComparableTrackPlayableId } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { ShuffleState } from \"models/view\";\nimport { getAppMediaSize, MediaSize } from \"components/shared/hooks\";\n\ninterface ReplaceQueueAndPlayProps {\n shuffle?: ShuffleState | undefined;\n playable: PlayQueuePlayableModel;\n playableContext: PreviewContextModel;\n context: AudioContextModel;\n}\n\nexport async function replaceQueueAndPlayTrack({ shuffle, playableContext, playable, context }: ReplaceQueueAndPlayProps) {\n const { player, queue, audioInput } = store.getState();\n\n const show = showPriorityQueuePopup(queue);\n if (show) showPriorityQueueActionModal(context, queue.playQueue);\n\n if (context.trace) putAttributePlayUserTrace(context.trace, { type: \"clickOnType\", value: playable.contentType });\n\n const shuffleOn = (shuffle != null ? shuffle : player.shuffle) !== ShuffleState.Off;\n const playerPlay = (context: AudioContextModel) => dispatch({ type: PLAYER_SET_PLAY, payload: { play: true, context } });\n await _replaceQueueAndLoadTrack(queue, audioInput.audios, playableContext, playable, shuffleOn, context, playerPlay);\n\n if (getAppMediaSize() === MediaSize.Mobile) return;\n\n const firstPlayQueueSession = store.getState().queue.firstQueueSession;\n if (firstPlayQueueSession) dispatch({ type: SET_DESKTOP_QUEUE_OPEN, payload: { open: DesktopQueueOpen.Open, autoOpen: true } });\n}\n\nconst showPriorityQueuePopup = (queue: PlayQueueModel) => {\n const emptyPriorityLane = isPriorityLaneEmpty(queue);\n const isPriorityQueueWarningOn = store.getState().queue.priorityLaneWarning;\n return !emptyPriorityLane && isPriorityQueueWarningOn;\n};\n\nconst isPriorityLaneEmpty = (queue: PlayQueueModel) => {\n const anyPriorityLaneItem = queue.playQueue.find((item) => item.lane === QueueLane.Priority);\n if (anyPriorityLaneItem) return false;\n return true;\n};\n\nasync function _replaceQueueAndLoadTrack(\n queue: PlayQueueModel,\n audios: AudioInputItemModel[],\n previewContext: PreviewContextModel,\n playable: PlayQueuePlayableModel,\n shuffleOn: boolean,\n context: AudioContextModel,\n readyToPlay: (context: AudioContextModel) => void\n) {\n queue = getClearedQueue(queue, true);\n\n const firePlay = (playQueue: QueueTrackModel[]) => {\n const track = getCurrentLane(playQueue)?.track;\n const { trace } = context;\n if (track && trace) putAttributePlayUserTrace(trace, { type: \"title_trackId\", value: `${track.title} | ${track.id}` });\n else {\n log.info({\n code: \"web-210611-1457\",\n msg: DefaultLogMessage.UnexpectedNull,\n data: {\n track,\n trace\n }\n });\n }\n readyToPlay(context);\n };\n\n const parent = getTrackAndParentFromPlayable(playable).parent;\n const queueIntentData = getAnalyticsQueueIntentPropertiesGroup(previewContext);\n\n queue.context = removePageSectionsFromPreviewContext(previewContext);\n queue.trackParent = parent;\n\n let playQueue = queue.playQueue;\n let play = true;\n\n const addData = createQueueAddedAnalyticsData(queueIntentData, parent);\n const queueAddedData = createNormalizedData(addData); // normalizeAnalyticsQueueAdded(addData);\n\n if (playable.contentType === ContentType.TrackPlayable || playable.contentType === ContentType.LiveRadioTrack) {\n const track = playable.contentType === ContentType.LiveRadioTrack ? createTrackPlayablePreview(playable.track, parent) : playable;\n playQueue = addTracksToQueueTracks(playQueue, [track], QueueLane.Current, true, null, true, shuffleOn, queueAddedData.referenceId, \"web-210716-1553\");\n\n queue = { ...queue, playQueue, endlessPlay: [] };\n dispatch({ type: PLAYQUEUE_ENDLESSPLAY_TRACK_ID_UPDATE, payload: { trackId: null } });\n queue = await updatePlayQueue(queue, context, true, queueAddedData, [playable]);\n playQueue = queue.playQueue;\n play = false;\n firePlay(playQueue);\n } else {\n queue = { ...queue, playQueue };\n queue = await updatePlayQueue(queue, context, false, queueAddedData, [playable]);\n playQueue = queue.playQueue;\n }\n\n playQueue = await replaceQueue_addPlayableAndTracks(playQueue, playable, shuffleOn, previewContext, queueAddedData.referenceId);\n\n queue = { ...queue, playQueue };\n queue = await updatePlayQueue(queue, context, false, queueAddedData, [playable]);\n\n if (play) firePlay(queue.playQueue);\n}\n\nexport async function replaceQueue_addPlayableAndTracks(\n playQueue: QueueTrackModel[],\n playable: PlayQueuePlayableModel,\n shuffleOn: boolean,\n context: PreviewContextModel,\n analyticsQueueAddedReferenceId: string\n) {\n const tracks = await updateSessionAndGetTracks(playable, context);\n\n if (tracks.length === 0) {\n log.error({ code: \"web-220217-1120\", msg: DefaultLogMessage.UnexpectedValue });\n return playQueue;\n }\n\n const currentLane = playQueue.find((queueTrack) => queueTrack.lane === QueueLane.Current) ?? null;\n\n const currentLaneOriginalIndex = getNewCurrentLaneIndex(currentLane, tracks, shuffleOn);\n\n const memoryLaneTracks: TrackPlayablePreviewModel[] = [];\n const currentLaneTracks: TrackPlayablePreviewModel[] = [];\n const flowLaneTracks: TrackPlayablePreviewModel[] = [];\n\n tracks.forEach((track, index) => {\n if (index < currentLaneOriginalIndex) {\n memoryLaneTracks.push(track);\n } else if (index === currentLaneOriginalIndex) {\n currentLaneTracks.push(track);\n } else {\n flowLaneTracks.push(track);\n }\n });\n\n if (memoryLaneTracks.length > 0) {\n playQueue = addTracksToQueueTracks(playQueue, memoryLaneTracks, QueueLane.Memory, true, null, false, false, analyticsQueueAddedReferenceId, \"web-210716-1559\");\n }\n\n if (currentLane == null) {\n if (currentLaneTracks.length > 0) {\n playQueue = addTracksToQueueTracks(playQueue, currentLaneTracks, QueueLane.Current, true, null, false, false, analyticsQueueAddedReferenceId, \"web-210716-1559\");\n } else {\n log.error({ code: \"web-220705-1120\", msg: DefaultLogMessage.UnexpectedNull });\n }\n }\n\n if (flowLaneTracks.length > 0) {\n playQueue = addTracksToQueueTracks(playQueue, flowLaneTracks, QueueLane.Flow, true, null, false, false, analyticsQueueAddedReferenceId, \"web-210716-1600\");\n }\n if (shuffleOn) {\n playQueue = shufflePlayQueue(playQueue);\n }\n\n return playQueue;\n}\n\nfunction getNewCurrentLaneIndex(currentLane: QueueTrackModel | null, tracks: TrackPlayablePreviewModel[], shuffleOn: boolean): number {\n if (currentLane == null) {\n const getRandomIndex = (max: number) => Math.floor(Math.random() * max);\n return shuffleOn ? getRandomIndex(tracks.length) : 0;\n }\n\n const compareableTrackId = currentLane.compareableTrackId;\n const currentLaneOriginalIndex = tracks.findIndex((track) => getComparableTrackPlayableId(track.track, track.parent) === compareableTrackId);\n\n if (currentLaneOriginalIndex === -1) {\n log.error({ code: \"web-210313-1401\", msg: \"can't find match\", data: { tracksList: tracks, currentLane } });\n return -1;\n }\n return currentLaneOriginalIndex;\n}\n","import { log, DefaultLogMessage } from \"services/logger\";\nimport { getCurrentLaneQueueId } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport { playChange } from \"services/player/inputs/service/actions\";\nimport { getAudioByInputItemIdFromState } from \"services/player/inputs/service/helpers\";\nimport type { PausePositionModel } from \"models/app/player\";\nimport { PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { getAudioPropertiesFromState } from \"components/shared/hooks\";\n\nexport const rewind = (context: AudioContextModel) => {\n const playState = getAudioPropertiesFromState().playState;\n const play = playState === PlayState.Buffering || playState === PlayState.Playing;\n\n const queueId = getCurrentLaneQueueId();\n if (queueId == null) {\n log.error({ code: \"web-210520-1622\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n rewindPlay(queueId, context, play);\n};\n\nfunction rewindPlay(queueId: string, context: AudioContextModel, play: boolean) {\n const item = getAudioByInputItemIdFromState(queueId);\n if (item == null) {\n log.error({ code: \"web-210519-1146\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n const playState = play ? PlayState.Buffering : PlayState.Paused;\n const position: PausePositionModel = { pausePosition: 0 };\n\n playChange(item, playState, position, context);\n}\n","import { getCurrentLaneIndexFromState } from \"../helpers\";\nimport { store, dispatch } from \"global\";\nimport { PLAYER_REWIND, PLAYER_PREVIOUS } from \"global/actions\";\nimport { playerConfig } from \"global/constants\";\nimport { log } from \"services/logger\";\nimport { getSecondsPlayed } from \"services/player/helpers\";\nimport { getCurrentInputAudioItemFromState } from \"services/player/inputs/service/helpers\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { RepeatStatus } from \"models/view\";\n\nexport const rewindOrPlayPrevious = (context: AudioContextModel) => {\n const index = getCurrentLaneIndexFromState();\n const loaded = getCurrentInputAudioItemFromState();\n\n const { repeat } = store.getState().player;\n const repeatAll = repeat === RepeatStatus.All;\n if (!loaded) {\n log.error({ code: \"web-210519-1130\", msg: \"can't rewind when loaded is null\" });\n return;\n }\n\n if (loaded.input === AudioInputType.LiveRadio) {\n log.error({ code: \"web-210519-1130\", msg: \"loaded is live radio\" });\n return;\n }\n\n if (index === 0 && !repeatAll) {\n dispatch({ type: PLAYER_REWIND, payload: { context } });\n } else {\n const { seconds } = getSecondsPlayed(loaded);\n if (seconds >= playerConfig.rewindLimit) {\n dispatch({ type: PLAYER_REWIND, payload: { context } });\n } else {\n dispatch({ type: PLAYER_PREVIOUS, payload: { context } });\n }\n }\n};\n","import { store } from \"global\";\nimport { playQueueShuffleCoefficients } from \"global/constants\";\nimport { updatePlayQueue } from \"services/player/inputs/inputs/playQueue/actions\";\nimport { unshufflePlayQueue, updateQueueLanes } from \"services/player/inputs/inputs/playQueue/helpers\";\nimport { lerp } from \"services/utils\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { PlayQueueModel } from \"models/app/player/input\";\nimport type { QueueTrackModel } from \"models/app/player/input/playQueue/QueueTrackModel\";\nimport { QueueLane } from \"models/app/player/input/playQueue/QueueTrackModel\";\nimport { ShuffleState } from \"models/view\";\n\nexport const shuffle = async (context: AudioContextModel) => {\n const { queue, player } = store.getState();\n let { playQueue } = queue;\n\n if (player.shuffle === ShuffleState.Off) {\n playQueue = unshufflePlayQueue(playQueue);\n } else {\n playQueue = shuffleQueueList(playQueue, queue.recentTrackIds);\n }\n const newQueue: PlayQueueModel = { ...queue, playQueue };\n\n await updatePlayQueue(newQueue, context, false, null);\n};\n\nfunction shuffleQueueList(oldQueue: QueueTrackModel[], myRecentTrackIds: string[]): QueueTrackModel[] {\n oldQueue = oldQueue.map((item, index) => ({ ...item, originalIndex: index }));\n\n const memoryLane = oldQueue.filter((item) => item.lane == QueueLane.Memory);\n const currentTrack = oldQueue.filter((item) => item.lane == QueueLane.Current);\n const priorityLane = oldQueue.filter((item) => item.lane == QueueLane.Priority);\n const flowLane = oldQueue.filter((item) => item.lane == QueueLane.Flow);\n\n const shuffledQueue = weightedShuffle([...memoryLane, ...flowLane], myRecentTrackIds);\n\n return updateQueueLanes([...currentTrack, ...priorityLane, ...shuffledQueue], 0);\n}\n\nfunction weightedShuffle(inputQueue: QueueTrackModel[], myRecentTrackIds: string[]): QueueTrackModel[] {\n if (inputQueue.length <= 1) return inputQueue;\n\n const recentTracksMap: Map<string, number> = new Map(myRecentTrackIds.map((item, index) => [item, index]));\n\n const { relativeWeightMin, relativeWeightMax } = playQueueShuffleCoefficients;\n\n function getWeight(trackId: string) {\n const recentPosition = recentTracksMap.get(trackId);\n const randomWeight = Math.random();\n\n if (recentPosition == null) return randomWeight;\n\n const relativeWeight = lerp(relativeWeightMin, relativeWeightMax, recentPosition / myRecentTrackIds.length);\n const absoluteWeight = Math.pow(randomWeight, 1 / relativeWeight); //TODO: new equation\n return absoluteWeight;\n }\n\n return inputQueue\n .map((queueTrack) => [queueTrack, getWeight(queueTrack.track.id)] as [QueueTrackModel, number])\n .sort((a, b) => b[1] - a[1])\n .map((item) => item[0]);\n}\n","import { playNext, PlayNextSource } from \"./playNext\";\nimport { log } from \"services/logger\";\nimport { isPlayStatePlayIntent } from \"services/player/helpers\";\nimport { getCurrentInputAudioItemFromState } from \"services/player/inputs/service/helpers\";\nimport { PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport function skipOnFail(audio: AudioInputItemModel, playStateBefore: PlayState) {\n if (audio.index !== 0) return;\n\n switch (audio.playState) {\n case PlayState.Error: {\n const playIntent = isPlayStatePlayIntent(playStateBefore);\n error(playIntent);\n break;\n }\n case PlayState.Playing:\n reset();\n break;\n }\n}\n\nlet skipCount = 0;\nlet skipCountTotal = 0;\n\nfunction reset() {\n skipCount = 0;\n}\n\nfunction error(playIntent: boolean) {\n if (skipCountTotal > 100) {\n log.error({ code: \"web-220706-0950\", msg: \"total skip count > 100\" });\n reset();\n return;\n }\n\n if (!playIntent || skipCount > 2 || skipCountTotal > 100) {\n reset();\n return;\n }\n\n skipCount++;\n skipCountTotal++;\n tryPlayNext();\n}\n\nasync function tryPlayNext() {\n const current = getCurrentInputAudioItemFromState();\n log.warn({ code: \"web-220627-1700\", msg: \"trying to skip to next song\", data: { \"currrent audio logTitle\": current?.logTitle } });\n\n const context: AudioContextModel = { action: AudioContextAction.SkipOnFail, trace: null };\n playNext(true, PlayNextSource.SkipOnFail, context);\n}\n","import { dispatch, store } from \"global\";\nimport { SET_DESKTOP_QUEUE_OPEN } from \"global/actions\";\nimport { DesktopQueueOpen } from \"models/app\";\nimport { AudioInputType } from \"models/app/player\";\nimport { QueueMode } from \"models/app/player/input\";\nimport { getQueueProperties } from \"components/shared/hooks/useQueueProperties\";\n\nexport const toggleDesktopPlayQueue = () => {\n const { ui, queue, player } = store.getState();\n const { desktopQueueOpen } = ui.layout;\n\n const isQueueModeMixRadio = queue.mode === QueueMode.MixRadio;\n const isInputLiveRadio = player.input === AudioInputType.LiveRadio;\n\n if (isQueueModeMixRadio || isInputLiveRadio) return;\n\n const { hasItems } = getQueueProperties();\n const queueOpen = desktopQueueOpen === DesktopQueueOpen.Open || (desktopQueueOpen === DesktopQueueOpen.Default && hasItems);\n dispatch({ type: SET_DESKTOP_QUEUE_OPEN, payload: { open: queueOpen ? DesktopQueueOpen.Closed : DesktopQueueOpen.Open } });\n};\n","import { dispatch, store } from \"global\";\nimport { PLAYQUEUE_UPDATE } from \"global/actions\";\nimport { isEqualByPredicate } from \"services/arrayHelper\";\nimport { log, LogTag } from \"services/logger\";\nimport type { AnalyticsQueueAddedPropertiesGroup } from \"services/logger/analytics/properties/groups\";\nimport type { NormalizedData } from \"services/normalizeData\";\nimport { getTrackAndParentFromPlayable } from \"services/playable\";\nimport { getComparableId } from \"services/resource\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { QueueLane } from \"models/app/player/input\";\nimport type { PlayQueueModel } from \"models/app/player/input\";\nimport type { TrackParentModel, PlayQueuePlayableModel } from \"models/domain\";\n\nexport const updatePlayQueue = async (\n queue: PlayQueueModel,\n context: AudioContextModel,\n blockEndlessPlayUpdate: boolean,\n queueAdded: NormalizedData<AnalyticsQueueAddedPropertiesGroup> | null,\n add?: PlayQueuePlayableModel[]\n): Promise<PlayQueueModel> => {\n const trackParents = resolveReferencedTrackParents(queue, add ? add?.map((value) => getTrackAndParentFromPlayable(value).parent) : undefined);\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-210212-0955\",\n msg: \"Queue has been updated\",\n data: {\n MemoryLane: queue.playQueue.filter((item) => item.lane === QueueLane.Memory),\n CurrentLane: queue.playQueue.filter((item) => item.lane === QueueLane.Current),\n QueueLane: queue.playQueue.filter((item) => item.lane === QueueLane.Priority),\n FlowLane: queue.playQueue.filter((item) => item.lane === QueueLane.Flow),\n TrackParents: queue.trackParents.length\n }\n }));\n\n await dispatch({\n type: PLAYQUEUE_UPDATE,\n payload: {\n playQueue: queue.playQueue,\n endlessPlay: queue.endlessPlay,\n trackParent: queue.trackParent,\n trackParents,\n context,\n blockEndlessPlayUpdate,\n queueAdded\n }\n });\n\n return store.getState().queue;\n};\n\nconst resolveReferencedCollection = <T>(referenceIds: string[], collection: T[], referenceIdFn: (value: T) => string, add?: T[]): T[] => {\n const map = new Map<string, T>(collection.map((value) => [referenceIdFn(value), value]));\n if (add) add.forEach((value) => map.set(referenceIdFn(value), value));\n const newCollection = [...map.values()].filter((value) => referenceIds.indexOf(referenceIdFn(value)) !== -1);\n\n if (isEqualByPredicate(collection, newCollection, (a, b) => referenceIdFn(a) === referenceIdFn(b))) return collection;\n return newCollection;\n};\n\nconst resolveReferencedTrackParents = (queue: PlayQueueModel, add?: TrackParentModel[]): TrackParentModel[] => {\n const trackParents = queue.trackParents;\n const trackParentReferences = [...queue.playQueue.map((value) => value.parentId), ...queue.endlessPlay.map((value) => value.parentId)];\n const newTrackParents = resolveReferencedCollection(trackParentReferences, trackParents, (value) => getComparableId(value), add);\n\n if (newTrackParents === trackParents) return trackParents;\n return newTrackParents;\n};\n","import { store } from \"global\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\n\nexport const getCurrentLane = (playQueue: QueueTrackModel[]): QueueTrackModel | null => {\n const currentLane = playQueue.find((item) => item.lane === QueueLane.Current);\n return currentLane ?? null;\n};\n\nexport const getCurrentLaneFromState = (): QueueTrackModel | null => {\n return getCurrentLane(store.getState().queue.playQueue);\n};\n\nexport const getCurrentLaneIndex = (playQueue: QueueTrackModel[]) => {\n const index = playQueue.findIndex((item) => item.lane === QueueLane.Current);\n return index;\n};\n\nexport const getCurrentLaneIndexFromState = () => {\n const { playQueue } = store.getState().queue;\n const index = playQueue.findIndex((item) => item.lane === QueueLane.Current);\n return index;\n};\n\nexport const getCurrentLaneQueueId = (): string | null => {\n const current = getCurrentLaneFromState();\n return current?.queueId ?? null;\n};\n","export * from \"./currentLane\";\nexport * from \"./mixRadio\";\nexport * from \"./play\";\nexport * from \"./playNext\";\nexport * from \"./playable\";\nexport * from \"./playables\";\nexport * from \"./queueLanes\";\nexport * from \"./queueView\";\nexport * from \"./repeat\";\nexport * from \"./shuffle\";\nexport * from \"./trackParents\";\nexport * from \"./tracks\";\n","import { addTracksToQueueTracks } from \"./tracks\";\nimport { store } from \"global\";\nimport { api } from \"global/constants\";\nimport { getMixRadioTracksPagination } from \"services/backend\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { AnalyticsQueueAddedPropertiesGroup } from \"services/logger/analytics/properties/groups\";\nimport { createQueueAddedAnalyticsData } from \"services/logger/analytics/properties/groups\";\nimport type { NormalizedData } from \"services/normalizeData\";\nimport { createNormalizedData } from \"services/normalizeData\";\nimport { getTrackPlayablePreviews } from \"services/playable\";\nimport { QueueLane, QueueMode } from \"models/app/player/input\";\nimport type { PlayQueueModel, QueueTrackModel } from \"models/app/player/input\";\n\nexport function isMixRadioSessionActive(id: string): boolean {\n if (store.getState().queue.mode !== QueueMode.MixRadio) return false;\n const mixRadioSession = store.getState().queue.mixRadioSession;\n return mixRadioSession?.mixRadio.id === id;\n}\n\nexport async function getMixRadioQueueTracks(\n queue: PlayQueueModel,\n currentIndex: number\n): Promise<{ queueTracks: QueueTrackModel[]; queueAddData: NormalizedData<AnalyticsQueueAddedPropertiesGroup> } | null> {\n let playQueue = queue.playQueue;\n if (currentIndex === -1) {\n log.error({ code: \"web-210901-1122\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n const remaining = playQueue.length - currentIndex - 1;\n const timeToFetch = remaining <= api.mixRadioMinFetch;\n if (!timeToFetch) return null;\n const mixRadioSession = queue.mixRadioSession;\n if (!mixRadioSession) {\n log.error({ code: \"web-210901-1123\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n if (!mixRadioSession.connection?.hasNextPage) {\n log.error({ code: \"web-210901-1124\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n if (!mixRadioSession.connection?.endCursor) {\n log.error({ code: \"web-210901-1125\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n const tracks = await getMixRadioTracksPagination({ id: mixRadioSession.mixRadio.id, first: api.mixRadioCountFetch, after: mixRadioSession.connection.endCursor });\n if (!tracks.model) {\n log.error({ code: \"web-210901-1126\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n\n if (!isMixRadioSessionActive(mixRadioSession.mixRadio.id)) return null;\n\n const queueIntentData = mixRadioSession.queueIntentData2;\n if (!queueIntentData) {\n log.error({ code: \"web-210922-1611\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n\n const addData = createQueueAddedAnalyticsData(queueIntentData, mixRadioSession.mixRadio);\n const queueAddData = createNormalizedData(addData);\n\n const trackPlayables = getTrackPlayablePreviews(tracks.model.items, mixRadioSession.mixRadio);\n\n playQueue = addTracksToQueueTracks(playQueue, trackPlayables, QueueLane.Flow, true, null, false, false, queueAddData.referenceId, \"web-210803-1329\");\n\n return { queueTracks: playQueue, queueAddData };\n}\n","import { getAudioByInputItemId } from \"services/player/inputs/service/helpers\";\nimport { PlayState } from \"models/app/player\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport function isAudioItemPlaying(audios: AudioInputItemModel[], queueId: string) {\n const item = getAudioByInputItemId(audios, queueId);\n\n if (item?.playState === PlayState.Buffering) return true;\n if (item?.playState === PlayState.Playing) return true;\n return false;\n}\n","import { store } from \"global\";\nimport { AudioInputType } from \"models/app/player\";\n\nexport const isNextDisabled = () => {\n const { queue, player } = store.getState();\n const isPlayQueueEmpty = queue.playQueue.length === 0;\n const isInputLiveRadio = player.input === AudioInputType.LiveRadio;\n return isInputLiveRadio || isPlayQueueEmpty;\n};\n\nexport const isPreviousDisabled = () => {\n const { queue, player } = store.getState();\n const isPlayQueueEmpty = queue.playQueue.length === 0;\n const isInputLiveRadio = player.input === AudioInputType.LiveRadio;\n return isInputLiveRadio || isPlayQueueEmpty;\n};\n","import { getQueueTrackFromAudio } from \"./queueTrack\";\nimport { getTrackParent } from \"./trackParents\";\nimport { store } from \"global\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { AudioInputItemPlayQueueModel, QueueTrackModel } from \"models/app/player/input\";\nimport type { TrackPlayablePreviewModel } from \"models/domain\";\nimport { createTrackPlayablePreview } from \"models/domain\";\n\nexport function getQueueTrackPlayable(queueTrack: QueueTrackModel): TrackPlayablePreviewModel | null {\n const trackParents = store.getState().queue.trackParents;\n if (trackParents.length === 0) {\n log.error({ code: \"web-220218-1403\", msg: DefaultLogMessage.UnexpectedValue });\n return null;\n }\n const parent = getTrackParent(queueTrack.parentId, trackParents);\n if (!parent) {\n log.error({ code: \"web-210316-1957\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n return createTrackPlayablePreview(queueTrack.track, parent);\n}\n\nexport function getQueueTrackPlayableFromAudio(audio: AudioInputItemPlayQueueModel): TrackPlayablePreviewModel | null {\n const track = getQueueTrackFromAudio(audio);\n if (!track) return null;\n\n const playable = getQueueTrackPlayable(track);\n return playable;\n}\n","import { addTracksToQueueTracks } from \"./tracks\";\nimport { getPlayablesTracks } from \"services/playable\";\nimport type { QueueTrackModel, QueueLane } from \"models/app/player/input\";\nimport type { PlayQueuePlayableModel } from \"models/domain\";\n\nexport const addPlayablesToQueue = async (\n playQueue: QueueTrackModel[],\n playables: PlayQueuePlayableModel[],\n lane: QueueLane.Memory | QueueLane.Current | QueueLane.Priority | QueueLane.Flow,\n atEnd: boolean,\n insert: number | null,\n setCurrentLane: boolean,\n shuffleOn: boolean,\n referenceId: string\n): Promise<QueueTrackModel[]> => {\n const tracks = await getPlayablesTracks(playables);\n const queueTracks = addTracksToQueueTracks(playQueue, tracks, lane, atEnd, insert, setCurrentLane, shuffleOn, referenceId, \"web-210716-1552\");\n\n return queueTracks;\n};","import { findLastIndex } from \"services/arrayHelper\";\nimport type { PlayQueueModel, QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane } from \"models/app/player/input\";\n\nexport const getPlayQueueCurrentLane = (playQueue: QueueTrackModel[]) => playQueue.find((item) => item.lane === QueueLane.Current);\nexport const getPlayQueuePriorityLane = (playQueue: QueueTrackModel[]) => playQueue.filter((item) => item.lane === QueueLane.Priority);\nexport const getPlayQueueFlowLane = (playQueue: QueueTrackModel[]) => playQueue.filter((item) => item.lane === QueueLane.Flow);\nexport const getPlayQueueMemoryLane = (playQueue: QueueTrackModel[]) => playQueue.filter((item) => item.lane === QueueLane.Memory);\n\nlet _previousLaneMap: Map<QueueLane, QueueLane>;\nconst previousLaneMap = () => {\n if (!_previousLaneMap) {\n _previousLaneMap = new Map<QueueLane, QueueLane>([\n [QueueLane.Preview, QueueLane.Flow],\n [QueueLane.Flow, QueueLane.Priority],\n [QueueLane.Priority, QueueLane.Current],\n [QueueLane.Current, QueueLane.Memory]\n ]);\n }\n return _previousLaneMap;\n};\n\nexport const getTrackIndexInQueueLane = (playQueue: QueueTrackModel[], lane: QueueLane, atEnd: boolean): number => {\n if (atEnd) {\n const index = findLastIndex(playQueue, (value) => value.lane === lane);\n if (index !== -1) return index + 1;\n } else {\n const index = playQueue.findIndex((value) => value.lane === lane);\n if (index !== -1) return index;\n }\n\n const previous: QueueLane | null = previousLaneMap().get(lane) ?? null;\n if (previous == null) return 0;\n\n return getTrackIndexInQueueLane(playQueue, previous, atEnd);\n};\n\nexport const updateQueueLanes = (playQueue: QueueTrackModel[], newCurrentIndex: number) => {\n const newCurrent = playQueue[newCurrentIndex];\n\n const newPlayQueue = playQueue.map((item, index) => {\n let newLane: QueueLane;\n\n if (index < newCurrentIndex) {\n if (item.lane === QueueLane.Priority) {\n if (newCurrent.lane === QueueLane.Priority) {\n newLane = QueueLane.Memory;\n } else {\n newLane = QueueLane.Priority;\n }\n } else {\n newLane = QueueLane.Memory;\n }\n } else if (index > newCurrentIndex) {\n if (item.lane === QueueLane.Priority) {\n newLane = QueueLane.Priority;\n } else {\n newLane = QueueLane.Flow;\n }\n } else {\n newLane = QueueLane.Current;\n }\n return { ...item, lane: newLane };\n });\n\n const getQueueLanePriority = (queueLane: QueueLane): number => {\n switch (queueLane) {\n case QueueLane.Memory:\n return 0;\n case QueueLane.Current:\n return 1;\n case QueueLane.Priority:\n return 2;\n case QueueLane.Flow:\n return 3;\n case QueueLane.Preview:\n return 4;\n }\n };\n newPlayQueue.sort((a, b) => {\n const aLane = getQueueLanePriority(a.lane);\n const bLane = getQueueLanePriority(b.lane);\n return aLane - bLane;\n });\n return newPlayQueue;\n};\n\nexport const movePreviewLaneToFlowLane = (queue: PlayQueueModel) => {\n let playQueue: QueueTrackModel[] = queue.playQueue;\n\n if (!queue.endlessPlay.length) return playQueue;\n\n const endlessPlay = queue.endlessPlay.map((item) => ({ ...item, lane: QueueLane.Flow }));\n playQueue = [...playQueue, ...endlessPlay];\n\n return playQueue;\n};\n","import { store } from \"global\";\nimport type { AudioInputItemPlayQueueModel } from \"models/app/player/input\";\n\nexport function getQueueTrackFromAudio(audio: AudioInputItemPlayQueueModel) {\n const tracks = store.getState().queue.playQueue;\n const track = tracks.find((track) => track.queueId === audio.queueId);\n\n return track ?? null;\n}\n","import { store } from \"global\";\nimport { QueueMode } from \"models/app/player/input\";\n\nexport const isQueueViewDisabled = () => {\n const { queue } = store.getState();\n const isModeMixRadio = queue.mode === QueueMode.MixRadio;\n return isModeMixRadio;\n};\n","import { store } from \"global\";\nimport { AudioInputType } from \"models/app/player\";\nimport { QueueMode } from \"models/app/player/input\";\nimport { RepeatStatus } from \"models/view\";\n\nexport const isRepeatDisabled = () => {\n const { queue, player } = store.getState();\n if (queue.mode === QueueMode.MixRadio) return true;\n if (player.input === AudioInputType.LiveRadio) return true;\n return false;\n};\n\nexport const getNextRepeatStatus = (repeat: RepeatStatus): RepeatStatus => {\n switch (repeat) {\n case RepeatStatus.None:\n return RepeatStatus.All;\n case RepeatStatus.All:\n return RepeatStatus.One;\n case RepeatStatus.One:\n return RepeatStatus.None;\n }\n};\n","import { updateQueueLanes } from \"./queueLanes\";\nimport { store } from \"global\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane, QueueMode } from \"models/app/player/input\";\nimport { ShuffleState } from \"models/view\";\n\nexport function getShuffleOn(shuffle: ShuffleState): boolean {\n return shuffle !== ShuffleState.Off;\n}\n\nexport const isShuffleDisabled = () => {\n const { queue, player } = store.getState();\n const isModeMixRadio = queue.mode === QueueMode.MixRadio;\n const isInputLiveRadio = player.input === AudioInputType.LiveRadio;\n return isModeMixRadio || isInputLiveRadio;\n};\n\nexport const getNextShuffleState = (currentShuffle: ShuffleState): ShuffleState => {\n switch (currentShuffle) {\n case ShuffleState.Heavy:\n return ShuffleState.Off;\n case ShuffleState.Light:\n return ShuffleState.Off;\n case ShuffleState.Off:\n return ShuffleState.Heavy;\n }\n};\n\nexport const getShuffleStateWhenSetAndPlay = (currentShuffle: ShuffleState, payloadShuffle: ShuffleState | null): ShuffleState => {\n switch (currentShuffle) {\n case ShuffleState.Off:\n case ShuffleState.Light:\n if (payloadShuffle != null) return payloadShuffle;\n return ShuffleState.Off;\n case ShuffleState.Heavy:\n if (payloadShuffle === ShuffleState.Off) return payloadShuffle;\n return ShuffleState.Heavy;\n }\n};\n\nfunction shuffleByFisherYates<T>(array: T[]): T[] {\n let m = array.length;\n let tempItem;\n let currentItem;\n\n // While there remain items to shuffle…\n while (m) {\n // Pick a remaining item\n const originalCurrentItem: number | undefined = currentItem;\n currentItem = Math.floor(Math.random() * m);\n if (originalCurrentItem) {\n if (currentItem === originalCurrentItem - 1 || currentItem === originalCurrentItem + 1) {\n currentItem = Math.floor(Math.random() * m);\n }\n }\n m--;\n // And swap it with the current item.\n tempItem = array[m];\n array[m] = array[currentItem];\n array[currentItem] = tempItem;\n }\n\n return array;\n}\n\nexport const updateOriginIndex = (playQueue: QueueTrackModel[], insertedAtIndex: number, amountOfTracksAdded: number) => {\n return playQueue.map((track) => {\n if (track.originalIndex == null) {\n log.error({ code: \"web-210519-1153\", msg: DefaultLogMessage.UnexpectedNull });\n return track;\n } else if (track.originalIndex >= insertedAtIndex) {\n return { ...track, originalIndex: track.originalIndex + amountOfTracksAdded };\n } else return track;\n });\n};\n\nexport const shufflePlayQueue = (playQueue: QueueTrackModel[]): QueueTrackModel[] => {\n function shouldBeShuffled(item: QueueTrackModel) {\n return item.lane === QueueLane.Flow || item.lane === QueueLane.Memory;\n }\n\n const updateLane = (item: QueueTrackModel): QueueLane => {\n if (item.lane === QueueLane.Flow) return QueueLane.Flow;\n if (item.lane === QueueLane.Memory) return QueueLane.Flow;\n return item.lane;\n };\n\n const originalPlayQueue: QueueTrackModel[] = playQueue.map((item, i) => ({\n ...item,\n originalIndex: i,\n lane: updateLane(item)\n }));\n\n const prioritylane = originalPlayQueue.filter((item) => item.lane === QueueLane.Priority);\n const currentlane = originalPlayQueue.filter((item) => item.lane === QueueLane.Current);\n const lanesToShuffle = originalPlayQueue.filter((item) => shouldBeShuffled(item));\n\n const shuffledFlowlane = shuffleByFisherYates(lanesToShuffle);\n const newPlayQueue = currentlane.concat(prioritylane, shuffledFlowlane);\n\n return newPlayQueue;\n};\n\nconst sortByOriginalIndex = (a: QueueTrackModel, b: QueueTrackModel) => {\n if (a.originalIndex == null || b.originalIndex == null) {\n log.error({ code: \"web-210519-1152\", msg: DefaultLogMessage.UnexpectedNull });\n return 0;\n }\n return a.originalIndex - b.originalIndex;\n};\n\nconst clearQueueTracksOriginIndex = (playQueue: QueueTrackModel[]): QueueTrackModel[] => playQueue.map((item) => ({ ...item, originalIndex: null }));\n\nexport const unshufflePlayQueue = (playQueue: QueueTrackModel[]): QueueTrackModel[] => {\n const prioritylane = playQueue.filter((item) => item.lane === QueueLane.Priority);\n const playQueueToUnshuffle = playQueue.filter((item) => item.lane !== QueueLane.Priority);\n let newPlayQueue = playQueueToUnshuffle.sort(sortByOriginalIndex);\n const newCurrentIndex = newPlayQueue.findIndex((item) => item.lane === QueueLane.Current);\n\n if (newCurrentIndex === -1) {\n log.error({ code: \"web-220629-1502\", msg: DefaultLogMessage.UnexpectedNull });\n return playQueue;\n }\n newPlayQueue = updateQueueLanes(newPlayQueue, newCurrentIndex);\n newPlayQueue.splice(newCurrentIndex, 0, ...prioritylane);\n const withoutOriginIndex = clearQueueTracksOriginIndex(newPlayQueue);\n return withoutOriginIndex;\n};\n","import { getCurrentLaneFromState } from \"./currentLane\";\nimport { store } from \"global\";\nimport { getComparableId } from \"services/resource\";\nimport type { TrackParentModel } from \"models/domain\";\n\nexport const getTrackParent = (parentId: string, trackParents: TrackParentModel[]): TrackParentModel | null => {\n return trackParents.find((parent) => getComparableId(parent) === parentId) ?? null;\n};\n\nexport const getCurrentLaneTrackParentFromState = (): TrackParentModel | null => {\n const parentId = getCurrentLaneFromState()?.parentId;\n if (parentId == null) return null;\n\n const trackParents = store.getState().queue.trackParents;\n return getTrackParent(parentId, trackParents);\n};\n\nexport const getQueueLaneTrackParentFromState = (parentId: string | null): TrackParentModel | null => {\n if (parentId == null) return null;\n\n const trackParents = store.getState().queue.trackParents;\n return getTrackParent(parentId, trackParents);\n};\n","import { getTrackIndexInQueueLane } from \"./queueLanes\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport type { AnalyticsQueueAddedPropertiesGroup } from \"services/logger/analytics/properties/groups\";\nimport { getAnalyticsQueueIntentPropertiesGroup, createQueueAddedAnalyticsData } from \"services/logger/analytics/properties/groups\";\nimport type { NormalizedData } from \"services/normalizeData\";\nimport { createNormalizedData } from \"services/normalizeData\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport { QueueLane, createQueueTrackModel } from \"models/app/player/input\";\nimport type { PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { TrackPlayablePreviewModel } from \"models/domain\";\n\nexport const addTracksToQueueTracks = (\n playQueue: QueueTrackModel[],\n tracks: TrackPlayablePreviewModel[],\n lane: QueueLane.Memory | QueueLane.Current | QueueLane.Priority | QueueLane.Flow,\n atEnd: boolean,\n insert: number | null,\n setCurrentLane: boolean,\n shuffleOn: boolean,\n analyticsQueueAddedReferenceId: string,\n code: `web-${number}-${number}`\n): QueueTrackModel[] => {\n if (tracks.length === 0) {\n log.error({ code, msg: DefaultLogMessage.UnexpectedValue });\n return playQueue;\n }\n\n if (lane === QueueLane.Current && tracks.length !== 1) {\n log.error({ code: \"web-210313-1149\", msg: DefaultLogMessage.UnexpectedValue });\n return playQueue;\n }\n\n let currentLaneIndex = playQueue.findIndex((item) => item.lane === QueueLane.Current);\n if (currentLaneIndex === -1) currentLaneIndex = 0;\n const currentLaneOriginalIndex = playQueue.find((item) => item.lane === QueueLane.Current)?.originalIndex ?? null;\n\n insert = insert ?? getTrackIndexInQueueLane(playQueue, lane, atEnd);\n let index = insert;\n const newQueueTracks: QueueTrackModel[] = [];\n\n const createOriginalIndex = (i: number) => {\n if (!shuffleOn) return null;\n if (currentLaneOriginalIndex == null) return null;\n return currentLaneOriginalIndex + i;\n };\n\n tracks.forEach((track, i) => {\n const newLane = setCurrentLane && currentLaneIndex === index ? QueueLane.Current : lane;\n\n const originalIndex = createOriginalIndex(i + 1);\n\n const queueTrack = createQueueTrackModel(track, newLane, originalIndex, analyticsQueueAddedReferenceId);\n newQueueTracks.push(queueTrack);\n index++;\n });\n\n playQueue = playQueue.map((queueTrack) => {\n if (lane === QueueLane.Current && queueTrack.lane === QueueLane.Current) {\n queueTrack.lane = QueueLane.Memory;\n }\n queueTrack.originalIndex = updateOriginalIndex(queueTrack.originalIndex, currentLaneOriginalIndex, tracks.length);\n return queueTrack;\n });\n playQueue.splice(insert, 0, ...newQueueTracks);\n return playQueue;\n};\n\nfunction updateOriginalIndex(originalIndex: number | null, from: number | null, withNumber: number) {\n if (from == null) return null;\n if (originalIndex != null) {\n if (originalIndex > from) {\n return withNumber + originalIndex;\n }\n }\n return originalIndex;\n}\n\nexport const getQueueTracksForChromecast = (\n playQueue: QueueTrackModel[],\n tracks: TrackPlayablePreviewModel[],\n lane: QueueLane.Memory | QueueLane.Current | QueueLane.Priority | QueueLane.Flow,\n insert: number | null,\n setCurrentLane: boolean,\n shuffleOn: boolean,\n context: PreviewContextModel\n): { playQueue: QueueTrackModel[]; queueAddData: NormalizedData<AnalyticsQueueAddedPropertiesGroup>; insert: number; newQueueTracks: QueueTrackModel[] } | null => {\n if (tracks.length === 0) {\n log.error({ code: \"web-210528-1511\", msg: DefaultLogMessage.UnexpectedValue });\n return null;\n }\n\n let currentLaneIndex = playQueue.findIndex((item) => item.lane === QueueLane.Current);\n if (currentLaneIndex === -1) currentLaneIndex = 0;\n\n insert = insert ?? getTrackIndexInQueueLane(playQueue, lane, true);\n let index = insert;\n const newQueueTracks: QueueTrackModel[] = [];\n\n const queueIntentData = getAnalyticsQueueIntentPropertiesGroup(context);\n const addData = createQueueAddedAnalyticsData(queueIntentData, tracks[0].parent);\n const queueAddData = createNormalizedData(addData);\n\n tracks.forEach((track, i) => {\n let newLane: QueueLane = lane;\n if (lane === QueueLane.Current) {\n newLane = currentLaneIndex === index ? QueueLane.Current : QueueLane.Flow;\n } else if (setCurrentLane && currentLaneIndex === index) {\n newLane = QueueLane.Current;\n }\n const originalIndex = shuffleOn ? playQueue.length + i : null;\n const queueTrack = createQueueTrackModel(track, newLane, originalIndex, queueAddData.referenceId);\n newQueueTracks.push(queueTrack);\n index++;\n });\n\n playQueue = [...playQueue];\n playQueue = playQueue.map((queueTrack) => {\n if (lane === QueueLane.Current && queueTrack.lane === QueueLane.Current) {\n queueTrack.lane = QueueLane.Memory;\n }\n return queueTrack;\n });\n playQueue.splice(insert, 0, ...newQueueTracks);\n return { playQueue, queueAddData, insert, newQueueTracks };\n};\n","import {\n addToQueue,\n dropTrack,\n removeItemFromQueue,\n addEndlessPlayToQueue,\n updateEndlessPlay,\n replaceQueueAndPlayTrack,\n clearPriorityQueue,\n playQueuePlayTrack,\n clearQueue,\n addMixRadioTracksToQueue,\n moveEndlessPlayToFlowLane\n} from \"./actions\";\nimport { audioEnded } from \"./actions/audioEnded\";\nimport { playFromAudioChange } from \"./actions/playFromAudioChange\";\nimport { skipOnFail } from \"./actions/skipOnFail\";\nimport { isInputPlayQueueFromState } from \"../../service/helpers\";\nimport { messageBus } from \"global\";\nimport {\n PLAYQUEUE_UPDATE,\n PLAYQUEUE_ADD,\n PLAYQUEUE_DROP,\n PLAYQUEUE_SET_AND_PLAY,\n PLAYQUEUE_ENDLESSPLAY_UPDATE,\n AUDIO_OUTPUT_AUDIO_ENDED,\n USER_LOGGED_OUT,\n PLAYQUEUE_CLEAR,\n PLAYQUEUE_REMOVE_TRACK,\n PLAYQUEUE_ADD_TO_LAST,\n AUDIO_INPUT_AUDIO_PLAY_CHANGE,\n PLAYQUEUE_PLAY_TRACK,\n AUDIO_INPUT_PLAY_AUDIO,\n PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE,\n PLAYQUEUE_CLEAR_PRIORITY_LANE\n} from \"global/actions\";\nimport { isControllerLocalFromState } from \"services/player/controllers/service/helpers\";\nimport { AudioControllerType } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { QueueLane } from \"models/app/player/input\";\n\nexport const initPlayQueueAudioInputService = () => {\n messageBus.subscribeEvery(PLAYQUEUE_PLAY_TRACK, async (msg) => {\n const { queueId, isPreviewLane, context } = msg.payload;\n playQueuePlayTrack(queueId, isPreviewLane ?? false, context);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_ADD_TO_LAST, async (msg) => {\n const { playable, context, playableContext } = msg.payload;\n addToQueue(playable, null, QueueLane.Flow, true, playableContext, context);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_ADD, async (msg) => {\n const { playable, context, playableContext } = msg.payload;\n addToQueue(playable, null, QueueLane.Priority, true, playableContext, context);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_DROP, async (msg) => {\n dropTrack(msg.payload);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_CLEAR_PRIORITY_LANE, (msg) => {\n clearPriorityQueue(msg.payload.context);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_SET_AND_PLAY, async (msg) => {\n replaceQueueAndPlayTrack(msg.payload);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_ENDLESSPLAY_UPDATE, async (msg) => {\n addEndlessPlayToQueue(msg.payload);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_CLEAR, async (msg) => {\n await clearQueue(msg.payload.context);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_REMOVE_TRACK, async (msg) => {\n const { queueId, isPreviewLane, context } = msg.payload;\n removeItemFromQueue(queueId, isPreviewLane, context);\n });\n\n messageBus.subscribeEvery(PLAYQUEUE_UPDATE, async (msg) => {\n const { context, blockEndlessPlayUpdate } = msg.payload;\n\n if (!blockEndlessPlayUpdate) {\n await updateEndlessPlay(context);\n await moveEndlessPlayToFlowLane(context);\n }\n await addMixRadioTracksToQueue(context);\n });\n\n messageBus.subscribeEvery(PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE, async (msg) => {\n const { context, controller } = msg.payload;\n\n if (controller === AudioControllerType.Chromecast) {\n await updateEndlessPlay(context);\n await moveEndlessPlayToFlowLane(context);\n }\n await addMixRadioTracksToQueue(context);\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_PLAY_AUDIO, async (msg) => {\n if (!isInputPlayQueueFromState()) return;\n const { audio, context } = msg.payload;\n playFromAudioChange(audio, context);\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIO_PLAY_CHANGE, async (msg) => {\n if (!isControllerLocalFromState()) return;\n if (!isInputPlayQueueFromState()) return;\n\n const { audio, playStateBefore } = msg.payload;\n skipOnFail(audio, playStateBefore);\n });\n\n messageBus.subscribeEvery(AUDIO_OUTPUT_AUDIO_ENDED, async (msg) => {\n if (!isInputPlayQueueFromState()) return;\n const { audioId, context } = msg.payload;\n\n audioEnded(audioId, context);\n });\n\n messageBus.subscribeEvery(USER_LOGGED_OUT, async () => {\n const context: AudioContextModel = { action: AudioContextAction.UserLogOut, trace: null };\n clearQueue(context);\n });\n};\n","import { dispatch } from \"global\";\nimport { AUDIO_INPUT_AUDIO_END_REASON } from \"global/actions\";\nimport { isAudioLoaded, isAudioLoadChange } from \"services/player/helpers\";\nimport { PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport async function updateAudiosEndReason(newAudios: AudioInputItemModel[], oldAudios: AudioInputItemModel[], context: AudioContextModel) {\n for (const oldAudio of oldAudios) {\n const newAudio = newAudios.find((n) => n.audioId === oldAudio.audioId) ?? null;\n if (newAudio) continue;\n await updateAudioEndReason(oldAudio, PlayState.Stopped, oldAudio.playState, context);\n }\n\n for (const newAudio of newAudios) {\n const oldAudio = oldAudios.find((n) => n.audioId === newAudio.audioId) ?? null;\n await updateAudioEndReason(newAudio, newAudio.playState, oldAudio?.playState ?? PlayState.Stopped, context);\n }\n}\n\nexport async function updateAudioEndReason(audio: AudioInputItemModel, playStateNow: PlayState, playStateBefore: PlayState, context: AudioContextModel) {\n const loaded = isAudioLoaded(playStateNow);\n if (loaded) return;\n\n const change = isAudioLoadChange(playStateNow, playStateBefore);\n if (!change) return;\n\n // console.warn(\"end reason fire: \" + audio.playState + \", \" + playStateNow + \", \" + playStateBefore);\n\n await dispatch({ type: AUDIO_INPUT_AUDIO_END_REASON, payload: { audio, context } });\n}\n","import { playChange } from \".\";\nimport { isInputPlayQueueFromState } from \"../helpers\";\nimport { dispatch } from \"global\";\nimport { ANALYTICS_PLAYED_ERROR_EVENT } from \"global/actions\";\nimport type { LogCode } from \"services/logger\";\nimport { getLoadedPlaybackReportFromStorage, getPlayedDurationFromReport, log } from \"services/logger\";\nimport { getAnalyticsPlayableErrorProperties } from \"services/logger/analytics/properties/event\";\nimport { stopPlayUserTrace } from \"models/app\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\nimport { openToast } from \"components/organisms/toast\";\nimport { PlaybackFailToast } from \"components/organisms/toast/toasts\";\n\nexport function shouldTryReplayAudio(audio: AudioInputItemModel) {\n return audio.errorCount <= 1;\n}\n\nexport function onAudioError(code: LogCode, audio: AudioInputItemModel, context: AudioContextModel, message: string, trackUrlCacheError?: string, trackUrlFetchError?: string) {\n if (audio.playState === PlayState.Stopped || audio.playState === PlayState.Error) return;\n\n if (shouldTryReplayAudio(audio)) replayAudio(audio, context);\n else endAudioWithError(code, audio, context, message, trackUrlCacheError, trackUrlFetchError);\n}\n\nfunction replayAudio(audio: AudioInputItemModel, context: AudioContextModel) {\n log.info({ code: \"web-230524-1456\", msg: \"re-trying to play audio\", data: { logTitle: audio.logTitle } });\n\n const playState = audio.playState === PlayState.Paused ? PlayState.Paused : PlayState.Buffering;\n playChange(audio, playState, null, context);\n}\n\nfunction endAudioWithError(code: LogCode, audio: AudioInputItemModel, context: AudioContextModel, message: string, trackUrlCacheError?: string, trackUrlFetchError?: string) {\n if (context.trace) {\n stopPlayUserTrace(context.trace);\n context.trace = null;\n }\n\n const id = audio.input === AudioInputType.PlayQueue ? audio.trackId : audio.radioId;\n log.error({\n code,\n msg: \"audio could not be played (and message has been show to user)\",\n data: {\n logTitle: audio.logTitle,\n inputType: audio.input,\n id,\n message,\n trackUrlCacheError,\n trackUrlFetchError\n }\n });\n\n isInputPlayQueueFromState() && openToast(PlaybackFailToast());\n sendErrorEvent(audio, context);\n\n playChange(audio, PlayState.Error, null, context);\n}\n\nfunction sendErrorEvent(audio: AudioInputItemModel, context: AudioContextModel) {\n const report = getLoadedPlaybackReportFromStorage(audio.reportId);\n if (!report) {\n log.error({ code: \"web-220712-1539\", msg: \"report missing\" });\n return;\n }\n\n const analytics = report?.analytics2;\n if (!analytics) {\n log.error({ code: \"web-220712-1511\", msg: \"report analytics missing\" });\n return;\n }\n\n const duration = report ? getPlayedDurationFromReport(report) : 0;\n const errorData = getAnalyticsPlayableErrorProperties({\n playDuration: duration,\n endReason: context.action\n });\n\n dispatch({\n type: ANALYTICS_PLAYED_ERROR_EVENT,\n payload: {\n queueData: analytics.queueData,\n loadData: analytics.loadData,\n playableData: analytics.playableData,\n errorData\n }\n });\n}\n","export * from \"./endReason\";\nexport * from \"./error\";\nexport * from \"./lastPosition\";\nexport * from \"./outputType\";\nexport * from \"./setAndPlay\";\nexport * from \"./playChange\";\nexport * from \"./updateAudios\";\nexport * from \"./updateAudiosFromPlayQueue\";\nexport * from \"./seek\";\nexport * from \"./login\";\n","import { getCurrentInputAudioItemFromState } from \"../helpers\";\nimport { playerConfig, sessionStorageKeys } from \"global/constants\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\n\ninterface LastPosition {\n audioId: string;\n pausePosition: number;\n}\n\nlet timeoutRef: number | null = null;\n\nexport const updateLastPosition = () => {\n if (timeoutRef) {\n clearTimeout(timeoutRef);\n timeoutRef = null;\n }\n\n const item = getCurrentInputAudioItemFromState();\n\n const audioId = item?.audioId;\n const playState = item?.playState;\n\n const playStartMs = item?.input === AudioInputType.PlayQueue && playState === PlayState.Playing ? item?.position.playStartMs : null;\n const pausePosition = playStartMs != null ? (new Date().getTime() - playStartMs) / 1000 : null;\n\n if (!audioId || !pausePosition) {\n remove();\n return;\n }\n\n save({ audioId, pausePosition });\n timeoutRef = window.setTimeout(() => updateLastPosition(), playerConfig.lastPositionUpdateIntervalMs);\n};\n\nexport function getLastPositionFromSessionStorage(): LastPosition | null {\n const position = sessionStorage.getItem(sessionStorageKeys.lastPosition);\n if (position == null) return null;\n\n const lastPosition = JSON.parse(position);\n return lastPosition;\n}\n\nfunction save(position: LastPosition) {\n const value = JSON.stringify(position);\n sessionStorage.setItem(sessionStorageKeys.lastPosition, value);\n}\n\nfunction remove() {\n sessionStorage.removeItem(sessionStorageKeys.lastPosition);\n}\n","import { isInputPlayQueueFromState } from \"../helpers\";\nimport { updateAudiosFromPlayQueue } from \"./updateAudiosFromPlayQueue\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport function loginChange(context: AudioContextModel) {\n if (isInputPlayQueueFromState()) updateAudiosFromPlayQueue(null, context);\n}","import { getCurrentInputAudioItemFromState } from \"../helpers\";\nimport { getAudioSendPlaybackReport, getAudioInputReportId } from \"../helpers/reporting\";\nimport { updateAudioEndReason } from \"./endReason\";\nimport { playChange } from \"./playChange\";\nimport { updateAudios } from \"./updateAudios\";\nimport { store } from \"global\";\nimport { isControllerChromecastFromState } from \"services/player/controllers/service/helpers\";\nimport { isPlayStatePlayIntent } from \"services/player/helpers\";\nimport { PlayState, AudioInputType } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport function onControllerOrOutputChange(context: AudioContextModel) {\n updateAudiosEndReason(context);\n updateAudiosPlaybackReport(context);\n updatePlayState(context);\n}\n\nfunction updateAudiosEndReason(context: AudioContextModel) {\n const audios = store.getState().audioInput.audios;\n audios.forEach((audio) => updateAudioEndReason(audio, PlayState.Stopped, audio.playState, context));\n}\n\nfunction updateAudiosPlaybackReport(context: AudioContextModel) {\n let audios = store.getState().audioInput.audios;\n const output = store.getState().player.output;\n\n audios = audios.map((audio) => ({\n ...audio,\n sendReport: getAudioSendPlaybackReport(audio.input, output, audio.input === AudioInputType.PlayQueue && audio.sample),\n reportId: getAudioInputReportId(audio.audioId, output)\n }));\n updateAudios(audios, null, context);\n}\n\nfunction updatePlayState(context: AudioContextModel) {\n const isChromecast = isControllerChromecastFromState();\n\n const audio = getCurrentInputAudioItemFromState();\n if (!audio) return;\n\n const isPlaying = audio && isPlayStatePlayIntent(audio.playState);\n const shouldPlay = isChromecast;\n\n if (isPlaying == shouldPlay) return;\n const playState = shouldPlay ? PlayState.Buffering : PlayState.Paused;\n\n playChange(audio, playState, null, context);\n}\n","import { tryAddLoadDataToAudio } from \"./updateAudios\";\nimport { tryGetAudioPosition } from \"../helpers\";\nimport { getAudioByInputItemIdFromState } from \"../helpers/audio\";\nimport { getCurrentInputAudioItemFromState } from \"../helpers/currentAudio\";\nimport { dispatch, store } from \"global\";\nimport { AUDIO_INPUT_AUDIO_PLAY_CHANGE } from \"global/actions\";\nimport { DefaultLogMessage, log, LogTag } from \"services/logger\";\nimport { getPlayPausePosition, isPlayPausePositionAlmostEqual, isPlayPausePositionEqual } from \"services/player/helpers\";\nimport type { PausePositionModel, PlayPausePositionModel } from \"models/app/player\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport const playPause = (play: boolean, context: AudioContextModel) => {\n const loaded = getCurrentInputAudioItemFromState();\n\n if (!loaded) {\n log.error({ code: \"web-210519-1114\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n const playTrack = () => {\n log.debug([LogTag.Playback], () => ({\n code: \"web-210212-0952\",\n msg: \"player play track\",\n data: { loaded }\n }));\n\n playChange(loaded, PlayState.Buffering, null, context);\n };\n\n const pauseTrack = () => {\n log.debug([LogTag.Playback], () => ({\n code: \"web-210212-0952\",\n msg: \"player pause track\",\n data: { loaded }\n }));\n\n playChange(loaded, PlayState.Paused, null, context);\n };\n\n return play ? playTrack() : pauseTrack();\n};\n\nexport function startPlay(sourceId: string, context: AudioContextModel) {\n tryStopPlayAll(context);\n\n const item = getAudioByInputItemIdFromState(sourceId);\n if (item == null) {\n log.error({ code: \"web-210519-1147\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n const position: PausePositionModel = {\n pausePosition: 0\n };\n\n playChange(item, PlayState.Buffering, position, context);\n}\n\nexport function tryStopPlayAll(context: AudioContextModel) {\n const { audios } = store.getState().audioInput;\n const stopAudios = audios.filter((audio) => audio.playState !== PlayState.Stopped && audio.playState !== PlayState.Error);\n\n const position: PausePositionModel = {\n pausePosition: 0\n };\n\n for (const audio of stopAudios) {\n playChange(audio, PlayState.Stopped, position, context);\n }\n}\n\nexport function playChange(audio: AudioInputItemModel, playState: PlayState | null, position: PlayPausePositionModel | null, context: AudioContextModel) {\n const playStateBefore = audio.playState;\n\n if (playState) {\n audio.playState = playState;\n audio = tryAddLoadDataToAudio(audio);\n }\n\n if (audio.input === AudioInputType.PlayQueue) {\n if (playState === PlayState.Stopped) position = { pausePosition: 0 };\n const playing = audio.playState === PlayState.Playing;\n audio.position = getPlayPausePosition(position ?? audio.position, playing);\n }\n\n if (playState === PlayState.Playing) audio.errorCount = 0;\n\n dispatch({\n type: AUDIO_INPUT_AUDIO_PLAY_CHANGE,\n payload: { audio, playStateBefore, context }\n });\n}\n\nexport const playChangeFromOutput = (\n audio: AudioInputItemModel,\n allowPlayChange: boolean,\n outputPlayState: PlayState | null,\n outputPosition: PlayPausePositionModel | null,\n context: AudioContextModel\n) => {\n const currentPlayState = audio.playState;\n const currentPosition = tryGetAudioPosition(audio);\n\n const newPlayState = getNewPlayState(currentPlayState, outputPlayState, allowPlayChange);\n const newPosition = currentPosition ? getNewPosition(currentPosition, outputPosition, !!newPlayState) : null;\n\n if (newPlayState == null && newPosition == null) return;\n\n playChange(audio, newPlayState, newPosition, context);\n};\n\nfunction getNewPlayState(currentPlayState: PlayState, outputPlayState: PlayState | null, allowPlayChange: boolean): PlayState | null {\n if (!outputPlayState) return null;\n if (currentPlayState === outputPlayState) return null;\n\n if (!allowPlayChange) {\n let currentPlay = currentPlayState;\n if (currentPlay === PlayState.Buffering) currentPlay = PlayState.Playing;\n\n let outputPlay = outputPlayState;\n if (outputPlay === PlayState.Buffering) outputPlay = PlayState.Playing;\n\n if (currentPlay !== outputPlay) return null;\n }\n\n return outputPlayState;\n}\n\nfunction getNewPosition(currentPosition: PlayPausePositionModel, outputPosition: PlayPausePositionModel | null, playStateChange: boolean) {\n if (!outputPosition) return null;\n\n const equal = isPlayPausePositionEqual(currentPosition, outputPosition);\n if (equal) return null;\n\n if (playStateChange) return outputPosition;\n\n const almost = isPlayPausePositionAlmostEqual(currentPosition, outputPosition);\n if (almost) return null;\n\n return outputPosition;\n}\n","import { getCurrentInputAudioItemFromState } from \"../helpers\";\nimport { log } from \"services/logger\";\nimport { playChange } from \"services/player/inputs/service/actions\";\nimport type { PausePositionModel } from \"models/app/player\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\n\nexport const playerSeek = (percent: number, context: AudioContextModel) => {\n const loaded = getCurrentInputAudioItemFromState();\n if (!loaded) return;\n const { playState } = loaded;\n if (loaded.input === AudioInputType.LiveRadio) {\n log.error({ code: \"web-21103-1213\", msg: \"can't seek in live radio\" });\n return;\n }\n\n if (playState === PlayState.Error) {\n log.error({ code: \"web-210118-1520\", msg: \"unexpected playState\", data: { playState } });\n return;\n }\n\n const playing = playState === PlayState.Buffering || playState === PlayState.Playing;\n \n const newPlayState = playing ? PlayState.Buffering : loaded.playState !== PlayState.Paused ? PlayState.Paused : null;\n const newPosition: PausePositionModel = { pausePosition: (loaded.duration * percent) / 100 };\n\n playChange(loaded, newPlayState, newPosition, context);\n};\n","import { dispatch } from \"global\";\nimport { AUDIO_INPUT_TYPE_CHANGE, LIVERADIO_SET_AND_PLAY, PLAYQUEUE_SET_AND_PLAY } from \"global/actions\";\nimport type { AudioInputSetAndPlayAction } from \"global/actions/actionTypes\";\nimport { AudioInputType } from \"models/app/player\";\nimport { ContentType } from \"models/ModelType\";\n\nexport async function setAndPlay({ playable, context, playableContext, shuffle }: AudioInputSetAndPlayAction[\"payload\"]) {\n const input = playable.contentType === ContentType.LiveRadioPlayable ? AudioInputType.LiveRadio : AudioInputType.PlayQueue;\n\n await dispatch({\n type: AUDIO_INPUT_TYPE_CHANGE,\n payload: {\n input,\n context\n }\n });\n\n if (playable.contentType === ContentType.LiveRadioPlayable) {\n dispatch({\n type: LIVERADIO_SET_AND_PLAY,\n payload: {\n context,\n radio: playable,\n radioContext: playableContext\n }\n });\n } else {\n dispatch({\n type: PLAYQUEUE_SET_AND_PLAY,\n payload: {\n context,\n playable,\n playableContext,\n shuffle\n }\n });\n }\n}\n","import { dispatch, store } from \"global\";\nimport { AUDIO_INPUT_AUDIOS_CHANGE } from \"global/actions\";\nimport { getAnalyticsPlayableLoadProperties } from \"services/logger/analytics/properties/event\";\nimport type { AnalyticsQueueAddedPropertiesGroup } from \"services/logger/analytics/properties/groups\";\nimport type { NormalizedData } from \"services/normalizeData\";\nimport { isAudioLoaded } from \"services/player/helpers\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport async function updateAudios(audios: AudioInputItemModel[], queueAddData: NormalizedData<AnalyticsQueueAddedPropertiesGroup> | null, context: AudioContextModel) {\n audios = tryAddLoadDataToAudios(audios);\n const old = store.getState().audioInput.audios;\n\n dispatch({ type: AUDIO_INPUT_AUDIOS_CHANGE, payload: { audios, old, queueAddData, context } });\n}\n\nfunction tryAddLoadDataToAudios(audios: AudioInputItemModel[]): AudioInputItemModel[] {\n return audios.map((audio) => tryAddLoadDataToAudio(audio));\n}\n\nexport function tryAddLoadDataToAudio(audio: AudioInputItemModel): AudioInputItemModel {\n const loaded = isAudioLoaded(audio.playState);\n const hasLoadData = !!audio.analytics2?.loadData;\n if (hasLoadData === loaded) return audio;\n\n const analytics = audio.analytics2 ?? { playableData: null, addedDataId: null, loadData: null };\n if (loaded) analytics.loadData = getAnalyticsPlayableLoadProperties(audio);\n else analytics.loadData = null;\n\n return {\n ...audio,\n analytics2: analytics\n };\n}\n","import { updateAudios } from \"./updateAudios\";\nimport { getAudioInputReportId, getAudioSendPlaybackReport, isInputLiveRadioFromState } from \"../helpers\";\nimport { store } from \"global\";\nimport type { AnalyticsQueueAddedPropertiesGroup } from \"services/logger/analytics/properties/groups\";\nimport type { NormalizedData } from \"services/normalizeData\";\nimport { getNewCastItemId } from \"services/player/controllers/chromeCast/service/helpers\";\nimport { getPlayerOutputTypeFromState } from \"services/player/outputs/service\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemLiveRadioModel, StreamUrl } from \"models/app/player/input\";\nimport { StreamUrlType, createStreamUrl } from \"models/app/player/input\";\nimport { DomainModelType } from \"models/ModelType\";\n\nexport function updateAudiosFromLiveRadio(queueAddData: NormalizedData<AnalyticsQueueAddedPropertiesGroup> | null, context: AudioContextModel) {\n if (!isInputLiveRadioFromState()) return;\n\n const audio = createAudioFromLiveRadio();\n\n if (audio) updateAudios([audio], queueAddData, context);\n else updateAudios([], null, context);\n}\n\nfunction createAudioFromLiveRadio() {\n const { currentRadio, currentRadioContext, currentRadioAnalytics } = store.getState().liveRadio;\n if (currentRadio == null || currentRadioContext == null || currentRadioAnalytics == null) return null;\n\n const radio = currentRadio;\n const { playableData, queueAddData } = currentRadioAnalytics;\n\n const output = getPlayerOutputTypeFromState();\n const url: StreamUrl | null = radio.type === DomainModelType.Play && radio.liveRadio.mp3Url ? createStreamUrl(radio.liveRadio.mp3Url, StreamUrlType.Mp3) : null;\n\n const audioId = radio.id + (url ? \"\" : \"_noUrl\"); // todo: implement that radio always have src and change this\n const reportId = getAudioInputReportId(audioId, output);\n const sendReport = getAudioSendPlaybackReport(AudioInputType.LiveRadio, output, false);\n\n const audio: AudioInputItemLiveRadioModel = {\n analytics2: { playableData, addedDataId: queueAddData.referenceId, loadData: null },\n audioId,\n chromecastId: getNewCastItemId(),\n errorCount: 0,\n index: 0,\n input: AudioInputType.LiveRadio,\n logTitle: radio.liveRadio.title,\n playState: PlayState.Buffering,\n playbackContext: radio.liveRadio.playbackContext,\n radioId: radio.id,\n reportId,\n sendReport,\n url2: url\n };\n\n return audio;\n}\n","import { getCurrentLaneIndex } from \"../../inputs/playQueue/helpers\";\nimport { isInputPlayQueueFromState, getAudioInputReportId, getAudioSendPlaybackReport } from \"../helpers\";\nimport { updateAudios } from \"./updateAudios\";\nimport { store } from \"global\";\nimport { DefaultLogMessage, log, LogTag } from \"services/logger\";\nimport type { AnalyticsQueueAddedPropertiesGroup } from \"services/logger/analytics/properties/groups\";\nimport type { NormalizedData } from \"services/normalizeData\";\nimport { getNewCastItemId } from \"services/player/controllers/chromeCast/service/helpers\";\nimport { isAudioLoaded } from \"services/player/helpers\";\nimport { getPlayerOutputTypeFromState } from \"services/player/outputs/service\";\nimport { LoginState } from \"models/app\";\nimport type { PausePositionModel, PlayPausePositionModel } from \"models/app/player\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemPlayQueueModel, QueueTrackModel } from \"models/app/player/input\";\nimport { getIsEndlessPlayOnFromState } from \"components/shared/hooks\";\n\nexport function updateAudiosFromPlayQueue(queueAdded: NormalizedData<AnalyticsQueueAddedPropertiesGroup> | null, context: AudioContextModel) {\n if (!isInputPlayQueueFromState()) {\n log.error({ code: \"web-211003-1841\", msg: DefaultLogMessage.UnexpectedValue });\n return;\n }\n\n const queueTracks = getAllQueueTracks();\n const currentLaneIndex = getCurrentLaneIndex(queueTracks);\n const newAudios = queueTracks.map((queueTrack, i) => createOrUpdateAudioFromQueueTrack(queueTrack, i, currentLaneIndex));\n\n // TODO remove this when playback is verified on Chromecast\n // const isEqual = () => {\n // let i = 0;\n // for (;;) {\n // const a = oldAudios[i];\n // const b = newAudios[i];\n // if (a == undefined && b == undefined) return true;\n // if (a?.queueId !== b?.queueId) return false;\n // if (a?.index !== b?.index) return false;\n // if (a?.previousQueueLane !== b?.previousQueueLane) return false;\n // if (a?.queueLane !== b?.queueLane) return false;\n // if (a?.reportId !== b?.reportId) return false;\n // if (a?.sample !== b?.sample) return false;\n // if (a?.playState !== b?.playState) return false;\n // if (a?.sendReport !== b?.sendReport) return false;\n // if (a?.errorCount !== b?.errorCount) return false;\n // if (a?.url !== b?.url) return false;\n // i++;\n // }\n // };\n\n // if (isEqual()) return;\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-210212-1634\",\n msg: \"audios has been updated\",\n data: { audios: newAudios }\n }));\n\n updateAudios(newAudios, queueAdded, context);\n}\n\nfunction getAllQueueTracks(): QueueTrackModel[] {\n const { playQueue, endlessPlay } = store.getState().queue;\n const tracks = getIsEndlessPlayOnFromState() ? [...playQueue, ...endlessPlay] : playQueue;\n\n return tracks;\n}\n\nfunction createOrUpdateAudioFromQueueTrack(queueTrack: QueueTrackModel, queueTrackIndex: number, currentLaneIndex: number): AudioInputItemPlayQueueModel {\n const audioId = getAudioId(queueTrack);\n const oldAudios = store.getState().audioInput.audios;\n\n const audio = oldAudios.find((audio) => audio.audioId === audioId) as AudioInputItemPlayQueueModel | undefined;\n if (audio) return updateAudio(audio, queueTrack, queueTrackIndex, currentLaneIndex);\n else return createNewAudioFromQueueTrack(audioId, queueTrack, queueTrackIndex, currentLaneIndex);\n}\n\nfunction createNewAudioFromQueueTrack(audioId: string, queueTrack: QueueTrackModel, queueTrackIndex: number, currentLaneIndex: number): AudioInputItemPlayQueueModel {\n const { sample, index, queueLane, reportId, sendReport } = getAudioProperties(audioId, queueTrack, queueTrackIndex, currentLaneIndex);\n\n let analytics2: AudioInputItemPlayQueueModel[\"analytics2\"];\n\n if (queueTrack.analytics2) {\n analytics2 = { ...queueTrack.analytics2, loadData: null };\n } else {\n log.info({ code: \"web-221111-1232\", msg: \"analytics missing on queueTrack\" });\n analytics2 = { playableData: null, loadData: null, addedDataId: null };\n }\n\n const newPosition: PausePositionModel = {\n pausePosition: 0\n };\n\n return {\n logTitle: queueTrack.track.title,\n queueLane: queueTrack.lane,\n analytics2,\n audioId,\n chromecastId: getNewCastItemId(),\n duration: !sample ? queueTrack.track.duration : 30,\n index,\n input: AudioInputType.PlayQueue,\n errorCount: 0,\n playState: PlayState.Stopped,\n playbackContext: queueTrack.track.playbackReportContext,\n position: newPosition,\n previousQueueLane: queueLane,\n reportId,\n sample,\n sendReport,\n queueId: queueTrack.queueId,\n trackId: queueTrack.track.id,\n url2: null\n };\n}\n\nfunction updateAudio(audio: AudioInputItemPlayQueueModel, queueTrack: QueueTrackModel, queueTrackIndex: number, currentLaneIndex: number): AudioInputItemPlayQueueModel {\n const { sample, index, queueLane, reportId, sendReport } = getAudioProperties(audio.audioId, queueTrack, queueTrackIndex, currentLaneIndex);\n\n const previousQueueLane = queueLane !== audio.queueLane ? audio.queueLane : audio.previousQueueLane;\n const playState = index === 0 ? audio.playState : PlayState.Stopped;\n\n const loaded = isAudioLoaded(playState);\n const position: PlayPausePositionModel = loaded ? audio.position : { pausePosition: 0 };\n\n \n\n return {\n ...audio,\n index,\n playState,\n position,\n previousQueueLane,\n queueLane,\n reportId,\n sample,\n sendReport\n };\n}\n\nfunction getAudioId(queueTrack: QueueTrackModel) {\n const sample = store.getState().user.state !== LoginState.LoggedIn;\n const audioId = queueTrack.queueId + (sample ? \"_sample\" : \"_full\");\n\n return audioId;\n}\n\nfunction getAudioProperties(audioId: string, queueTrack: QueueTrackModel, queueTrackIndex: number, currentLaneIndex: number) {\n const loginState = store.getState().user.state;\n const output = getPlayerOutputTypeFromState();\n\n const sample = loginState !== LoginState.LoggedIn;\n const reportId = getAudioInputReportId(audioId, output);\n const index = queueTrackIndex - currentLaneIndex;\n const queueLane = queueTrack.lane;\n const sendReport = getAudioSendPlaybackReport(AudioInputType.PlayQueue, output, sample);\n\n return { sample, reportId, index, queueLane, sendReport };\n}\n","import { store } from \"global\";\nimport { isAudioLoaded } from \"services/player/helpers\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport const getAudioInputItemByPredicate = (audios: AudioInputItemModel[], predicate: (item: AudioInputItemModel) => boolean): AudioInputItemModel | null => {\n const inputItem = audios.find(predicate) ?? null;\n return inputItem;\n};\n\nexport const getAudioInputItemByPredicateFromState = (predicate: (item: AudioInputItemModel) => boolean): AudioInputItemModel | null => {\n const audios = store.getState().audioInput.audios;\n return getAudioInputItemByPredicate(audios, predicate);\n};\n\nexport function getAudioByInputItemId(audios: AudioInputItemModel[], uniqueId: string) {\n return getAudioInputItemByPredicate(audios, (item) => {\n if (item.input === AudioInputType.LiveRadio) return item.radioId === uniqueId;\n return item.queueId === uniqueId;\n });\n}\n\nexport function getAudioByInputItemIdFromState(uniqueId: string) {\n const audios = store.getState().audioInput.audios;\n return getAudioByInputItemId(audios, uniqueId);\n}\n\nexport const getAudioByIdFromState = (audioId: string) => store.getState().audioInput.audios.find((audio) => audio.audioId === audioId);\n\nexport const getAudioByChromecastIdFromState = (chromecastId: number) => store.getState().audioInput.audios.find((audio) => audio.chromecastId === chromecastId);\n\nexport const getLoadedInputAudio = (): AudioInputItemModel[] => {\n return store.getState().audioInput.audios.filter((item) => isAudioLoaded(item.playState));\n};\n","import { useSelector } from \"react-redux\";\nimport { store } from \"global\";\nimport { getPausePosition } from \"services/player/helpers\";\nimport type { RootModel } from \"models/app\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport const useCurrentInputAudioItemFromState = () => {\n const audios = useSelector((root: RootModel) => root.audioInput.audios);\n return audios.find((audio) => audio.index === 0) ?? null;\n};\n\nexport const getCurrentInputAudioItemFromState = () => {\n const audios = store.getState().audioInput.audios;\n return audios.find((audio) => audio.index === 0) ?? null;\n};\n\nexport const getCurrentAudioIndex = (): number | null => {\n const audios = store.getState().audioInput.audios;\n const index = audios.findIndex((audio) => audio.index === 0);\n if (index === -1) return null;\n return index;\n};\n\nexport function getCurrentAudio(audios: AudioInputItemModel[]): { currentAudio: AudioInputItemModel | null; currentIndex: number | null } {\n const index = audios.findIndex((audio) => audio.index === 0);\n if (index === -1) return { currentAudio: null, currentIndex: null };\n\n const audio = audios[index];\n return { currentAudio: audio, currentIndex: index };\n}\n\nexport const getCurrentInputAudioNearEndFromState = () => {\n const audio = getCurrentInputAudioItemFromState();\n if (!audio) return { audio: null, nearEnd: false };\n\n const position = audio?.input === AudioInputType.PlayQueue ? getPausePosition(audio.position).pausePosition : null;\n const duration = audio?.input === AudioInputType.PlayQueue ? audio?.duration : null;\n\n const nearEnd = position != null && duration != null && position + 3 >= duration;\n\n return { audio, nearEnd };\n};\n","export * from \"./audio\";\nexport * from \"./currentAudio\";\nexport * from \"./inputType\";\nexport * from \"./position\";\nexport * from \"./reporting\";\n\n","import { store } from \"global\";\nimport { AudioInputType } from \"models/app/player\";\n\nexport const isInputLiveRadioFromState = () => isInputLiveRadio(store.getState().player.input);\nexport const isInputLiveRadio = (input: AudioInputType) => input === AudioInputType.LiveRadio;\n\nexport const isInputPlayQueueFromState = () => isInputPlayQueue(store.getState().player.input);\nexport const isInputPlayQueue = (input: AudioInputType) => input === AudioInputType.PlayQueue;\n","import type { PlayPausePositionModel } from \"models/app/player\";\nimport { AudioInputType , PlayState } from \"models/app/player\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport function tryGetAudioPosition(audio: AudioInputItemModel): PlayPausePositionModel | null {\n switch (audio.input) {\n case AudioInputType.LiveRadio:\n return null;\n case AudioInputType.PlayQueue:\n return audio.position;\n }\n}\n\nexport const getAudioItemPositionSeconds = (playState: PlayState, position: PlayPausePositionModel | null) => {\n if (position == null) return 0;\n switch (playState) {\n case PlayState.Stopped:\n case PlayState.Buffering:\n case PlayState.Error:\n case PlayState.Paused: {\n if (position.pausePosition == null) return 0;\n return position.pausePosition;\n }\n case PlayState.Playing: {\n if (position.playStartMs == null) return 0;\n const now = new Date().getTime();\n return (now - position.playStartMs) / 1000;\n }\n }\n};\n\nexport const getAudioItemPositionPercent = (playState: PlayState, position: PlayPausePositionModel, duration: number) => {\n if (duration === 0) return 0;\n switch (playState) {\n case PlayState.Stopped:\n case PlayState.Buffering:\n case PlayState.Error:\n case PlayState.Paused: {\n if (position.pausePosition == null) return 0;\n return (position.pausePosition / duration) * 100;\n }\n case PlayState.Playing: {\n if (position.playStartMs == null) return 0;\n const now = new Date().getTime();\n return ((now - position.playStartMs) / 1000 / duration) * 100;\n }\n }\n};\n\nexport const getAudioItemPositionDelay = (playState: PlayState, position: PlayPausePositionModel, duration: number) => {\n if (duration === 0) return 0;\n switch (playState) {\n case PlayState.Stopped:\n case PlayState.Buffering:\n case PlayState.Error:\n case PlayState.Paused: {\n if (position.pausePosition == null) return 0;\n return position.pausePosition * -1;\n }\n case PlayState.Playing: {\n if (position.playStartMs == null) return 0;\n const now = new Date().getTime();\n return (position.playStartMs - now) / 1000;\n }\n }\n};\n","import { getAppSession } from \"services/appSession\";\nimport { PlayerOutputType, AudioInputType } from \"models/app/player\";\n\nexport function getAudioInputReportId(audioId: string, output: PlayerOutputType): string {\n const outputStr = () => {\n switch (output) {\n case PlayerOutputType.Browser:\n return \"browser\";\n case PlayerOutputType.Chromecast:\n return \"chromecast\";\n }\n };\n return `${audioId}_${outputStr()}_${getAppSession().storageId}`;\n}\n\nexport function getAudioSendPlaybackReport(input: AudioInputType, output: PlayerOutputType, sample: boolean): boolean {\n if (input === AudioInputType.LiveRadio) return false;\n if (output === PlayerOutputType.Chromecast) return false;\n if (sample) return false;\n\n return true;\n}\n","import { initElementPool, setMuted, setVolume } from \"./service/element\";\nimport { updateFlow, updateUrl } from \"./service/flow\";\nimport { isOutputBrowserFromState } from \"../service\";\nimport { messageBus, store } from \"global\";\nimport {\n AUDIO_OUTPUT_AUDIO_FAILED,\n AUDIO_INPUT_AUDIOS_CHANGE,\n AUDIO_INPUT_AUDIO_PLAY_CHANGE,\n PLAYER_SET_VOLUME,\n PLAYER_SET_MUTE,\n AUDIO_INPUT_AUDIO_SRC_CHANGE,\n PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE\n} from \"global/actions\";\nimport { log } from \"services/logger\";\n\nexport const initBrowserAudio = () => {\n messageBus.subscribeEvery(PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE, async () => {\n updateFlow();\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIOS_CHANGE, async () => {\n if (!isOutputBrowserFromState()) return;\n updateFlow();\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIO_PLAY_CHANGE, async () => {\n if (!isOutputBrowserFromState()) return;\n updateFlow();\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIO_SRC_CHANGE, async (msg) => {\n if (!isOutputBrowserFromState()) return;\n updateUrl(msg.payload.audio);\n });\n\n messageBus.subscribeEvery(AUDIO_OUTPUT_AUDIO_FAILED, async () => {\n if (!isOutputBrowserFromState()) return;\n updateFlow();\n });\n\n messageBus.subscribeEvery(PLAYER_SET_VOLUME, async () => {\n if (!isOutputBrowserFromState()) return;\n setVolume(store.getState().player.volume);\n });\n\n messageBus.subscribeEvery(PLAYER_SET_MUTE, async () => {\n if (!isOutputBrowserFromState()) return;\n setMuted(store.getState().player.muted);\n });\n\n try {\n initElementPool();\n updateFlow();\n } catch (e) {\n log.error({ code: \"web-220221-1334\", msg: \"error browser audio init\", error: e });\n }\n};\n","import { createAudioElement, audioMediaChange, MediaChangeEvent, disposeAudioElement } from \"../element\";\nimport { audioElementError } from \"../error\";\nimport { updatePreloadState } from \"../flow\";\nimport { getCacheId } from \"../hls\";\nimport { dispatch } from \"global\";\nimport { AUDIO_OUTPUT_AUDIO_ENDED, AUDIO_OUTPUT_AUDIO_DURATION_CHANGE } from \"global/actions\";\nimport { preloadOrderConfig } from \"global/constants\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\nimport { StreamUrlType } from \"models/app/player/input\";\nimport type { BrowserAudioItemModel, BrowserAudioItemPreload } from \"models/app/player/output\";\nimport { BrowserAudioItemPreloadSize, BrowserAudioLoadState } from \"models/app/player/output\";\n\nexport function disposeBrowserAudio(browserAudio: BrowserAudioItemModel) {\n browserAudio.disposed = true;\n browserAudio.loadNow = false;\n browserAudio.url = null;\n\n browserAudio.removeListeners();\n disposeAudioElement(browserAudio.element);\n\n if (browserAudio.hls) {\n browserAudio.hls.destroy();\n browserAudio.hls = null;\n }\n}\n\nexport function updateBrowserAudio(audio: AudioInputItemModel, browserAudio: BrowserAudioItemModel) {\n const index = audio.index;\n const { order, size } = getPreloadConfigFromIndex(index);\n\n browserAudio.preload.index = index;\n browserAudio.preload.order = order;\n browserAudio.preload.size = size;\n\n return browserAudio;\n}\n\nexport const createBrowserAudio = (audio: AudioInputItemModel) => {\n const element = createAudioElement();\n\n const browserAudio: BrowserAudioItemModel = {\n audioCacheId: getCacheId(audio),\n audioId: audio.audioId,\n playState: PlayState.Paused,\n canPlayThrough: false,\n disposed: false,\n element,\n hls: null,\n hlsRetryLock: false,\n input: audio.input,\n intendedPlayState: PlayState.Paused,\n isMediaSet: false,\n loadNow: false,\n logTitle: audio.logTitle,\n playTrace: null,\n position: { pausePosition: 0 },\n mediaChangeLock: false,\n preload: getPreload(audio.index),\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n removeListeners: null!,\n state: BrowserAudioLoadState.None,\n url: audio.input === AudioInputType.LiveRadio ? audio.url2 : null,\n urlLock: false\n };\n\n browserAudio.removeListeners = addEventListeners(audio, browserAudio).removeListeners;\n\n return browserAudio;\n};\n\nfunction addEventListeners(audio: AudioInputItemModel, browserAudio: BrowserAudioItemModel): { removeListeners: () => void } {\n const element = browserAudio.element;\n\n const canPlayThroughFn = () => {\n browserAudio.canPlayThrough = true;\n };\n\n const durationChangeFn = () => {\n const duration = isNaN(element.duration) ? null : element.duration;\n if (duration == null) return;\n if (duration <= 0) return;\n\n dispatch({ type: AUDIO_OUTPUT_AUDIO_DURATION_CHANGE, payload: { audioId: audio.audioId, duration } });\n };\n\n const endedFn = () => dispatch({ type: AUDIO_OUTPUT_AUDIO_ENDED, payload: { audioId: audio.audioId, context: { action: AudioContextAction.BrowserAudioEnded, trace: null } } });\n\n const errorFn = (e: ErrorEvent) => {\n audioElementError(browserAudio, e, e.message);\n };\n\n const pauseFn = () => audioMediaChange(browserAudio, MediaChangeEvent.Pause);\n const playingFn = () => audioMediaChange(browserAudio, MediaChangeEvent.Playing);\n\n const progressFn = () => {\n browserAudio.url?.urlType === StreamUrlType.Mp3 && updatePreloadState(browserAudio);\n };\n\n const seekedFn = () => audioMediaChange(browserAudio, MediaChangeEvent.Seeked);\n const seekingFn = () => audioMediaChange(browserAudio, MediaChangeEvent.Seeking);\n const waitingFn = () => audioMediaChange(browserAudio, MediaChangeEvent.Waiting);\n\n element.addEventListener(\"canplaythrough\", canPlayThroughFn);\n element.addEventListener(\"durationchange\", durationChangeFn);\n element.addEventListener(\"ended\", endedFn);\n element.addEventListener(\"error\", errorFn);\n element.addEventListener(\"pause\", pauseFn);\n element.addEventListener(\"playing\", playingFn);\n element.addEventListener(\"progress\", progressFn);\n element.addEventListener(\"seeked\", seekedFn);\n element.addEventListener(\"seeking\", seekingFn);\n element.addEventListener(\"waiting\", waitingFn);\n\n const removeListeners = () => {\n element.removeEventListener(\"canplaythrough\", canPlayThroughFn);\n element.removeEventListener(\"durationchange\", durationChangeFn);\n element.removeEventListener(\"ended\", endedFn);\n element.removeEventListener(\"error\", errorFn);\n element.removeEventListener(\"pause\", pauseFn);\n element.removeEventListener(\"playing\", playingFn);\n element.removeEventListener(\"progress\", progressFn);\n element.removeEventListener(\"seeked\", seekedFn);\n element.removeEventListener(\"seeking\", seekingFn);\n element.removeEventListener(\"waiting\", waitingFn);\n };\n return { removeListeners };\n}\n\nfunction getPreload(index: number): BrowserAudioItemPreload {\n const { order, size } = getPreloadConfigFromIndex(index);\n const preload: BrowserAudioItemPreload = {\n index,\n order,\n size,\n hlsPreload: null\n };\n\n return preload;\n}\n\nfunction getPreloadConfigFromIndex(index: number): { order: number; size: BrowserAudioItemPreloadSize } {\n let itemPreloadSetting = preloadOrderConfig.find((value) => value.index === index) ?? { order: Number.MAX_SAFE_INTEGER, size: BrowserAudioItemPreloadSize.Small };\n itemPreloadSetting = { ...itemPreloadSetting };\n\n return itemPreloadSetting;\n}\n","export * from \"./browserAudio\";\n","import { addElementToPool, getElementFromPool } from \"./elementPool\";\nimport { linearToLogarithmicVolume } from \"./setVolume\";\nimport { store } from \"global\";\n\nexport function createAudioElement() {\n const player = store.getState().player;\n const element = getElementFromPool() ?? new Audio();\n\n element.volume = linearToLogarithmicVolume(player.volume);\n element.muted = player.muted;\n element.autoplay = false;\n\n return element;\n}\n\nexport function disposeAudioElement(element: HTMLAudioElement) {\n element.pause();\n element.removeAttribute(\"src\");\n element.load();\n\n addElementToPool(element);\n}\n","import { BrowserName, getBrowserNameAndVersion } from \"services/app/appService\";\nimport { log } from \"services/logger\";\n\nlet elements: HTMLAudioElement[] | null = null;\n\nconst shouldUseElementPool = () => {\n const { name, version } = getBrowserNameAndVersion();\n return name === BrowserName.Safari && version != null && version >= 14;\n};\n\nexport function initElementPool() {\n if (!shouldUseElementPool()) return;\n\n for (let i = 0; i < 10; i++) {\n const audio = new Audio();\n audio.preload = \"none\";\n audio.autoplay = false;\n audio.src = \"https://nuuday.dk/file.mp3\";\n if (!elements) elements = [];\n elements.push(audio);\n }\n}\n\nexport function addElementToPool(element: HTMLAudioElement) {\n if (!elements) return;\n\n const invalid = \"2de19c3a-0f10-4b32-9475-7e55668d6f00\";\n\n element.preload = \"none\";\n element.autoplay = false;\n element.src = `https://${invalid}.com/${invalid}.mp3`;\n elements.push(element);\n}\n\nexport function getElementFromPool(): HTMLAudioElement | null {\n if (!elements) return null;\n\n const element = elements.pop() ?? null;\n if (!element) {\n log.error({ code: \"web-211216-13227\", msg: \"element is null from pool\" });\n }\n return element;\n}\n","export * from \"./elementPool\";\nexport * from \"./mediaChange\";\nexport * from \"./createElement\";\nexport * from \"./setPlayState\";\nexport * from \"./setPosition\";\nexport * from \"./setVolume\";\nexport * from \"./setMuted\";","import { dispatch, messageBus } from \"global\";\nimport { AUDIO_OUTPUT_AUDIO_ENDED, AUDIO_OUTPUT_AUDIO_PLAY_CHANGE } from \"global/actions\";\nimport { log, LogTag } from \"services/logger\";\nimport { getPositionFromCurrentTime } from \"services/player/helpers\";\nimport { getAudioByIdFromState } from \"services/player/inputs/service/helpers\";\nimport { putAttributePlayUserTrace, stopPlayUserTrace } from \"models/app\";\nimport { PlayState } from \"models/app/player\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport enum MediaChangeEvent {\n Pause = \"Pause\",\n Playing = \"Playing\",\n Prevented = \"Prevented\",\n Seeked = \"Seeked\",\n Seeking = \"Seeking\",\n Waiting = \"Waiting\"\n}\n\nexport const audioMediaChange = async (browserAudio: BrowserAudioItemModel, change: MediaChangeEvent) => {\n if (browserAudio.disposed) return;\n if (browserAudio.url == null) return;\n\n const { element, audioId } = browserAudio;\n if (element.ended) return;\n\n if (handleSongEndedAtUnexpectedDuration(browserAudio, change)) return;\n\n await messageBus.sync();\n const isPlaying = !element.paused && element.src != null && element.src !== \"\" && change !== MediaChangeEvent.Waiting && !element.seeking;\n\n let playState: PlayState;\n const position = getPositionFromCurrentTime(element.currentTime);\n\n if (isPlaying) {\n if (browserAudio.playTrace) {\n putAttributePlayUserTrace(browserAudio.playTrace, { type: \"error\", value: \"NoPlaybackError\" });\n stopPlayUserTrace(browserAudio.playTrace);\n browserAudio.playTrace = null;\n }\n playState = PlayState.Playing;\n } else {\n const newPlayState = element.paused ? PlayState.Paused : PlayState.Buffering;\n playState = newPlayState;\n }\n\n if (browserAudio.mediaChangeLock) return;\n browserAudio.mediaChangeLock = true;\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-210215-1630\",\n msg: `audioMediaChange: ${browserAudio.logTitle}`,\n data: {\n isPlaying,\n title: browserAudio.logTitle,\n audioId: browserAudio.audioId,\n duration: element.duration,\n \"currentTime (seconds played)\": element.currentTime\n }\n }));\n\n // const playStateChange = browserAudio.playState !== playState;\n browserAudio.playState = playState;\n\n const audio = getAudioByIdFromState(audioId);\n if (!audio) return;\n\n // const positionChange = audio.input === AudioInputType.PlayQueue ? !isPlayPositionEqual(audio.position, position) : false;\n\n // if (playStateChange || positionChange) {\n dispatch({\n type: AUDIO_OUTPUT_AUDIO_PLAY_CHANGE,\n payload: {\n audio,\n allowPlayChange: false,\n playState,\n mediaChangeEvent: change,\n context: { action: getAudioContextAction(change), trace: null },\n position\n }\n });\n // }\n\n // await messageBus.sync();\n\n // if (change === MediaChangeEvent.Seeked) {\n // dispatch({ type: AUDIO_OUTPUT_AUDIO_SEEK_CHANGE, payload });\n // }\n\n browserAudio.mediaChangeLock = false;\n};\n\nfunction handleSongEndedAtUnexpectedDuration(browserAudio: BrowserAudioItemModel, change: MediaChangeEvent): boolean {\n if (change !== MediaChangeEvent.Waiting) return false;\n const { audioId, element } = browserAudio;\n\n const { duration, currentTime } = element;\n if (Math.sign(duration) !== 1 || Math.sign(currentTime) !== 1) return false;\n\n const left = duration - currentTime;\n if (left > 0.5) return false;\n\n log.error({\n code: \"web-220425-1625\",\n msg: \"unexpected loading very close to end of audio\",\n data: {\n logTitle: browserAudio.logTitle,\n left,\n duration,\n currentTime\n }\n });\n\n dispatch({\n type: AUDIO_OUTPUT_AUDIO_ENDED,\n payload: {\n audioId,\n context: {\n action: AudioContextAction.BrowserAudioEnded,\n trace: null\n }\n }\n });\n\n return true;\n}\n\nfunction getAudioContextAction(event: MediaChangeEvent): AudioContextAction {\n switch (event) {\n case MediaChangeEvent.Pause:\n return AudioContextAction.BrowserAudioPause;\n case MediaChangeEvent.Playing:\n return AudioContextAction.BrowserAudioPlaying;\n case MediaChangeEvent.Seeked:\n return AudioContextAction.BrowserAudioSeeked;\n case MediaChangeEvent.Seeking:\n return AudioContextAction.BrowserAudioSeeking;\n case MediaChangeEvent.Waiting:\n return AudioContextAction.BrowserAudioWaiting;\n case MediaChangeEvent.Prevented:\n return AudioContextAction.BrowserAudioPlayPrevented;\n }\n}\n","import { getBrowserAudios } from \"../flow\";\n\nexport function setMuted(muted: boolean) {\n getBrowserAudios().forEach((audio) => (audio.element.muted = muted));\n}\n","import { setPosition } from \"./setPosition\";\nimport { playNotAllowedError } from \"../error\";\nimport { inSkipDebounce } from \"../skipDebounce\";\nimport type { PlayPausePositionModel } from \"models/app/player\";\nimport { PlayState } from \"models/app/player\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport function setPlayStateAndPosition(browserAudio: BrowserAudioItemModel, playState: PlayState, position: PlayPausePositionModel) {\n setPlayState(browserAudio, playState);\n setPosition(browserAudio, position, playState);\n}\n\nexport async function setPlayState(browserAudio: BrowserAudioItemModel, playState: PlayState) {\n if (!browserAudio.isMediaSet) return;\n\n if (inSkipDebounce) {\n if (playState === PlayState.Buffering) return;\n if (playState === PlayState.Playing) return;\n }\n\n if (browserAudio.intendedPlayState === playState) return;\n browserAudio.intendedPlayState = playState;\n\n const element = browserAudio.element;\n const wasPlaying = !element.paused;\n\n switch (playState) {\n case PlayState.Buffering:\n case PlayState.Playing: {\n if (!wasPlaying) {\n try {\n await element.play();\n } catch (e) {\n const domException = e as DOMException;\n console.error(\"play error\", e);\n\n if (domException?.name === \"NotAllowedError\") playNotAllowedError(browserAudio, e);\n return;\n }\n }\n return;\n }\n case PlayState.Error:\n case PlayState.Stopped:\n if (wasPlaying) {\n element.pause();\n }\n return;\n case PlayState.Paused: {\n if (wasPlaying) {\n element.pause();\n }\n return;\n }\n }\n}\n","import { isPlayPausePositionEqual } from \"services/player/helpers\";\nimport type { PlayPausePositionModel } from \"models/app/player\";\nimport { PlayState } from \"models/app/player\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport const setPosition = (browserAudio: BrowserAudioItemModel, position: PlayPausePositionModel, playState: PlayState) => {\n const { element } = browserAudio;\n\n if (!browserAudio.isMediaSet) return;\n if (isPlayPausePositionEqual(position, browserAudio.position)) return;\n\n browserAudio.position = position;\n const playStartMs = position.playStartMs ?? null;\n const pausePosition = position.pausePosition ?? null;\n\n if (playStartMs == null && pausePosition == null) {\n element.currentTime = 0;\n return;\n }\n\n if (pausePosition != null && playState !== PlayState.Playing) {\n if (element.currentTime === pausePosition) return;\n element.currentTime = pausePosition;\n }\n};\n","import { getBrowserAudios } from \"../flow\";\n\nexport function setVolume(volume: number) {\n getBrowserAudios().forEach((audio) => (audio.element.volume = linearToLogarithmicVolume(volume)));\n}\nexport function linearToLogarithmicVolume(value: number): number {\n return (Math.exp(value) - 1) / (Math.E - 1);\n}\n","import { MediaChangeEvent } from \"../element\";\nimport { removeBrowserAudio } from \"../flow\";\nimport { deleteTrackCache } from \"../hls/hlsCachePool\";\nimport { dispatch } from \"global\";\nimport { AUDIO_OUTPUT_AUDIO_FAILED, AUDIO_OUTPUT_AUDIO_PLAY_CHANGE } from \"global/actions\";\nimport type { LogCode } from \"services/logger\";\nimport { log, LogTag } from \"services/logger\";\nimport { getAudioByIdFromState } from \"services/player/inputs/service/helpers\";\nimport { putAttributePlayUserTrace } from \"models/app\";\nimport { PlayState } from \"models/app/player\";\nimport type { AudioContextModel } from \"models/app/player/AudioContext\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport async function hlsElementError(browserAudio: BrowserAudioItemModel, message: string) {\n if (browserAudio.playTrace) putAttributePlayUserTrace(browserAudio.playTrace, { type: \"error\", value: \"StreamUrlError\" });\n const code = \"web-230524-1503\";\n const context = { action: AudioContextAction.AudioHlsError, trace: browserAudio.playTrace };\n await disposeAudioAndResetTrackStreamUrl(code, browserAudio, context, message);\n}\n\nexport async function audioElementError(browserAudio: BrowserAudioItemModel, e: ErrorEvent, message: string) {\n const code = \"web-210223-1547\";\n log.error({ code, msg: \"audio element error\", error: e });\n if (browserAudio.playTrace) putAttributePlayUserTrace(browserAudio.playTrace, { type: \"error\", value: \"StreamUrlError\" });\n\n const context = { action: AudioContextAction.AudioHtmlElementError, trace: browserAudio.playTrace };\n await disposeAudioAndResetTrackStreamUrl(code, browserAudio, context, message);\n}\n\nexport async function trackStreamError(browserAudio: BrowserAudioItemModel, cacheError: string, fetchError: string) {\n if (browserAudio.playTrace) putAttributePlayUserTrace(browserAudio.playTrace, { type: \"error\", value: \"LoadTrackStreamError\" });\n const code = \"web-230524-1504\";\n const context = { action: AudioContextAction.AudioTrackStreamError, trace: browserAudio.playTrace };\n await disposeAudioAndResetTrackStreamUrl(code, browserAudio, context, \"LoadTrackStreamError\", cacheError, fetchError);\n}\n\nexport function playNotAllowedError(browserAudio: BrowserAudioItemModel, error: unknown) {\n log.info({ tags: [LogTag.Playback], code: \"web-220105-0939\", msg: \"element.play failed\", error });\n\n const audio = getAudioByIdFromState(browserAudio.audioId);\n const context: AudioContextModel = { action: AudioContextAction.BrowserAudioPlayPrevented, trace: null };\n\n if (!audio) {\n log.error({ code: \"web-221121-1547\", msg: \"audio not found\" });\n return;\n }\n\n dispatch({\n type: AUDIO_OUTPUT_AUDIO_PLAY_CHANGE,\n payload: { audio, playState: PlayState.Paused, allowPlayChange: true, position: null, context, mediaChangeEvent: MediaChangeEvent.Prevented }\n });\n}\n\nasync function disposeAudioAndResetTrackStreamUrl(\n code: LogCode,\n browserAudio: BrowserAudioItemModel,\n context: AudioContextModel,\n message: string,\n trackUrlCacheError?: string,\n trackUrlFetchError?: string\n) {\n await deleteTrackCache(browserAudio);\n removeBrowserAudio(browserAudio);\n\n const audio = getAudioByIdFromState(browserAudio.audioId);\n if (!audio) return;\n\n await dispatch({\n type: AUDIO_OUTPUT_AUDIO_FAILED,\n payload: { code, audio, context, message, trackUrlCacheError, trackUrlFetchError }\n });\n}\n","export * from \"./error\";","export * from \"./updateBrowserAudios\";\nexport * from \"./updateFlow\";\nexport * from \"./updateMedia\";\nexport * from \"./updatePlayState\";\nexport * from \"./updateLoad\";\nexport * from \"./updatePreloadState\";\nexport * from \"./updateUrl\";\n","import { createBrowserAudio, disposeBrowserAudio, updateBrowserAudio } from \"../browserAudio\";\nimport { store } from \"global\";\nimport { preloadOrderConfig } from \"global/constants\";\nimport { shouldTryReplayAudio } from \"services/player/inputs/service/actions\";\nimport { isOutputBrowserFromState } from \"services/player/outputs/service\";\nimport { PlayState } from \"models/app/player\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nlet browserAudios: BrowserAudioItemModel[] = [];\n\nexport function getBrowserAudios(): BrowserAudioItemModel[] {\n return browserAudios;\n}\n\nexport function getBrowserAudio(audioId: string): BrowserAudioItemModel | null {\n const audio = browserAudios.find((audio) => audio.audioId === audioId) ?? null;\n return audio;\n}\n\nexport function removeBrowserAudio(browserAudio: BrowserAudioItemModel) {\n disposeBrowserAudio(browserAudio);\n browserAudios = browserAudios.filter((browserAudio) => browserAudio !== browserAudio);\n}\n\nexport function replaceBrowserAudio(remove: BrowserAudioItemModel, add: AudioInputItemModel): BrowserAudioItemModel {\n removeBrowserAudio(remove);\n const browserAudio = addBrowserAudio(add);\n return browserAudio;\n}\n\nexport function updateBrowserAudios() {\n if (!isOutputBrowserFromState()) {\n disposeBrowserAudios();\n return [];\n }\n\n const audios = store.getState().audioInput.audios.filter((audio) => shouldLoad(audio));\n\n let newBrowserAudios = createOrUpdate(audios);\n newBrowserAudios = browserAudiosSort(newBrowserAudios);\n\n browserAudios.forEach((item) => newBrowserAudios.indexOf(item) === -1 && disposeBrowserAudio(item));\n browserAudios = newBrowserAudios;\n}\n\nfunction addBrowserAudio(audio: AudioInputItemModel) {\n const browserAudio = createBrowserAudio(audio);\n browserAudios.push(browserAudio);\n browserAudios = browserAudiosSort(browserAudios);\n\n return browserAudio;\n}\n\nfunction createOrUpdate(audios: AudioInputItemModel[]) {\n return audios.map((audio) => {\n let browserAudio = getBrowserAudio(audio.audioId);\n\n if (browserAudio == null) browserAudio = createBrowserAudio(audio);\n else browserAudio = updateBrowserAudio(audio, browserAudio);\n\n return browserAudio;\n });\n}\n\nfunction disposeBrowserAudios() {\n browserAudios.forEach((n) => disposeBrowserAudio(n));\n browserAudios = [];\n}\n\nfunction browserAudiosSort(browserAudios: BrowserAudioItemModel[]): BrowserAudioItemModel[] {\n return browserAudios.sort((a, b) => a.preload.order - b.preload.order);\n}\n\nfunction shouldLoad(audio: AudioInputItemModel): boolean {\n const playState = audio.playState;\n\n if (playState === PlayState.Error) return false;\n if (playState === PlayState.Paused || playState === PlayState.Playing || playState === PlayState.Buffering) return true;\n if (!shouldTryReplayAudio(audio)) return false;\n if (!store.getState().controlPanel.enableAudioPreload) return false;\n\n const should = preloadOrderConfig.some((value) => value.index === audio.index);\n return should;\n}\n","import { getBrowserAudioLog, getBrowserAudiosLog } from \"../log\";\nimport { inSkipDebounce, updateSkipDebounce } from \"../skipDebounce\";\nimport { loadUrl } from \"../url/loadUrl\";\nimport { getBrowserAudios, updateBrowserAudios } from \"./updateBrowserAudios\";\nimport { updateLoadNow } from \"./updateLoad\";\nimport { updateMedia } from \"./updateMedia\";\nimport { updatePlayState } from \"./updatePlayState\";\nimport { updatePreloadState } from \"./updatePreloadState\";\nimport { log, LogTag } from \"services/logger\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport function updateFlow() {\n updateBrowserAudios();\n updateSkipDebounce();\n const browserAudios = getBrowserAudios();\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-210212-1645\",\n msg: \"updating browserAudios' flow\",\n data: {\n browserAudios: getBrowserAudiosLog(browserAudios)\n }\n }));\n\n browserAudios.forEach((browserAudio) => updateBrowserAudioFlow(browserAudio));\n}\n\nfunction updateBrowserAudioFlow(browserAudio: BrowserAudioItemModel) {\n if (inSkipDebounce) {\n log.debug([LogTag.Playback], () => ({\n code: \"web-210212-1645\",\n msg: \"NOT updating browserAudio flow (because of skip debounce)\",\n data: {\n browserAudio: getBrowserAudioLog(browserAudio)\n }\n }));\n return;\n }\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-210212-1451\",\n msg: \"updating browserAudio flow\",\n data: {\n browserAudio: getBrowserAudioLog(browserAudio)\n }\n }));\n\n updateLoadNow(browserAudio);\n\n if (!browserAudio.url) {\n loadUrl(browserAudio);\n return;\n }\n\n updateMedia(browserAudio);\n updatePlayState(browserAudio);\n updatePreloadState(browserAudio);\n}\n","import { getBrowserAudios } from \".\";\nimport { inSkipDebounce } from \"../skipDebounce\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\nimport { BrowserAudioLoadState } from \"models/app/player/output\";\n\nexport function updateLoadNow(browserAudio: BrowserAudioItemModel) {\n if (inSkipDebounce) return;\n if (browserAudio.disposed) return;\n\n browserAudio.loadNow = isPreviousDone(browserAudio);\n}\n\nfunction isPreviousDone(browserAudio: BrowserAudioItemModel): boolean {\n const browserAudios = getBrowserAudios();\n\n for (const other of browserAudios) {\n const isPrevious = other.preload.order < browserAudio.preload.order;\n if (!isPrevious) continue;\n\n const isDone = other.state === BrowserAudioLoadState.PartialDone || other.state === BrowserAudioLoadState.Done;\n if (!isDone) return false;\n }\n\n return true;\n}\n","import { createHlsElement } from \"../hls\";\nimport { getBrowserAudioLog } from \"../log\";\nimport { inSkipDebounce } from \"../skipDebounce\";\nimport { log, LogTag } from \"services/logger\";\nimport { StreamUrlType } from \"models/app/player/input\";\nimport { BrowserAudioLoadState } from \"models/app/player/output\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport const updateMedia = (browserAudio: BrowserAudioItemModel) => {\n if (inSkipDebounce) return;\n if (browserAudio.disposed) return;\n if (!browserAudio.loadNow) return;\n if (browserAudio.isMediaSet) return;\n if (!browserAudio.url) return;\n\n const { element, url } = browserAudio;\n\n browserAudio.state = BrowserAudioLoadState.Buffering;\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-221213-1453\",\n msg: \"browserAudio updateMedia, state: Buffering\",\n data: {\n browserAudio: getBrowserAudioLog(browserAudio)\n }\n }));\n\n switch (url.urlType) {\n case StreamUrlType.Hls: {\n const hls = createHlsElement(browserAudio, url.url);\n if (hls != null) {\n browserAudio.hls = hls;\n browserAudio.isMediaSet = true;\n }\n break;\n }\n case StreamUrlType.Mp3: {\n element.src = url.url;\n browserAudio.isMediaSet = true;\n }\n }\n\n element.preload = \"auto\";\n};\n","import { getBrowserAudio } from \".\";\nimport { setPlayState, setPlayStateAndPosition } from \"../element\";\nimport { getAudioByIdFromState } from \"services/player/inputs/service/helpers\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport function updatePlayStateFromAudio(audio: AudioInputItemModel) {\n const browserAudio = getBrowserAudio(audio.audioId);\n if (!browserAudio) return;\n\n _updatePlayState(audio, browserAudio);\n}\n\nexport function updatePlayState(browserAudio: BrowserAudioItemModel) {\n const audio = getAudioByIdFromState(browserAudio.audioId);\n if (!audio) return;\n\n _updatePlayState(audio, browserAudio);\n}\n\nfunction _updatePlayState(audio: AudioInputItemModel, browserAudio: BrowserAudioItemModel) {\n if (audio.input === AudioInputType.PlayQueue) setPlayStateAndPosition(browserAudio, audio.playState, audio.position);\n else setPlayState(browserAudio, audio.playState);\n}\n","import { getHlsPreloadState, preloadHls } from \"../hls\";\nimport { getBrowserAudioLog } from \"../log\";\nimport { updateFlow } from \"./updateFlow\";\nimport { playerConfig } from \"global/constants\";\nimport { LogTag, LogLevel, DefaultLogMessage, log } from \"services/logger\";\nimport { getAudioByIdFromState, getAudioItemPositionSeconds } from \"services/player/inputs/service/helpers\";\nimport { AudioInputType } from \"models/app/player\";\nimport { StreamUrlType } from \"models/app/player/input\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\nimport { BrowserAudioLoadState, BrowserAudioItemPreloadSize } from \"models/app/player/output\";\n\ninterface LoadedChunk {\n position: number;\n duration: number;\n}\n\nexport function updatePreloadState(browserAudio: BrowserAudioItemModel) {\n const state = getPreloadState(browserAudio);\n if (state == null) return null;\n\n if (state == browserAudio.state) {\n updateTryPreload(browserAudio);\n return;\n }\n\n browserAudio.state = state;\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-221213-1452\",\n msg: `browserAudio state updated: ${browserAudio.state}`,\n data: {\n browserAudio: getBrowserAudioLog(browserAudio)\n }\n }));\n\n if (state === BrowserAudioLoadState.PartialDone || state === BrowserAudioLoadState.Done) {\n preloadDone(browserAudio);\n }\n}\n\nexport function updateTryPreload(browserAudio: BrowserAudioItemModel) {\n if (browserAudio.state !== BrowserAudioLoadState.Buffering) return;\n\n // log.debug([LogTag.Playback], () => ({\n // code: \"web-221213-1553\",\n // msg: \"updating browserAudio preload\",\n // data: {\n // browserAudio: getBrowserAudioLog(browserAudio)\n // }\n // }));\n\n preloadHls(browserAudio);\n}\n\nfunction preloadDone(browserAudio: BrowserAudioItemModel) {\n log.debug([LogTag.Playback], () => ({\n code: \"web-221213-1554\",\n msg: \"browserAudio preloadDone\",\n data: {\n browserAudio: getBrowserAudioLog(browserAudio)\n }\n }));\n\n updateFlow();\n}\n\nexport function calculatePreloadState(\n browserAudio: BrowserAudioItemModel,\n duration: number,\n loadedDuration: number\n): BrowserAudioLoadState.Buffering | BrowserAudioLoadState.PartialDone | BrowserAudioLoadState.Done {\n const size = browserAudio.preload.size;\n const canPlayThrough = browserAudio.canPlayThrough;\n if (size === BrowserAudioItemPreloadSize.Full && !canPlayThrough) return BrowserAudioLoadState.Buffering;\n\n const loadedMin = getPreloadDurationSeconds(size);\n\n const done = loadedDuration + 1 >= duration;\n const partial = duration > 0 && loadedDuration >= loadedMin;\n\n const newState = done ? BrowserAudioLoadState.Done : partial ? BrowserAudioLoadState.PartialDone : BrowserAudioLoadState.Buffering;\n const smallLog = newState === BrowserAudioLoadState.Buffering;\n const bigLog = newState !== browserAudio.state;\n const loadedPercent = duration > 0 ? (loadedDuration / duration) * 100 : null;\n\n smallLog &&\n log.debug(\n [LogTag.Playback],\n () => ({\n code: \"web-210217-1352\",\n msg: `preload progress, title: \"${browserAudio.logTitle}, percent: \"${loadedPercent}\"`\n }),\n LogLevel.Info\n );\n bigLog &&\n log.debug(\n [LogTag.Playback],\n () => {\n return {\n code: \"web-210217-1352\",\n msg: `preload state change, title: \"${browserAudio.logTitle}\", state: ${newState}, percent: ${loadedPercent}`,\n data: {\n title: browserAudio.logTitle,\n audioId: browserAudio.audioId,\n duration,\n url: browserAudio.url,\n \"currentTime (seconds played)\": browserAudio.element.currentTime,\n loadedDuration,\n loadNow: browserAudio.loadNow,\n loadedDone: done\n }\n };\n },\n LogLevel.Info\n );\n return newState;\n}\n\nfunction getPreloadState(browserAudio: BrowserAudioItemModel): BrowserAudioLoadState | null {\n if (browserAudio.disposed) return null;\n\n switch (browserAudio.url?.urlType) {\n case StreamUrlType.Hls:\n return getHlsPreloadState(browserAudio);\n case StreamUrlType.Mp3:\n return getPreloadStateFromAudioElement(browserAudio);\n case undefined:\n return null;\n }\n}\n\nfunction getPreloadStateFromAudioElement(browserAudio: BrowserAudioItemModel): BrowserAudioLoadState | null {\n if (browserAudio.state !== BrowserAudioLoadState.PartialDone && browserAudio.state !== BrowserAudioLoadState.Buffering) return null;\n\n const item = getAudioByIdFromState(browserAudio.audioId);\n if (!item) {\n log.error({ code: \"web-210205-1700\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n\n if (item.input !== AudioInputType.PlayQueue) {\n // log.error({code: \"web-210922-1619\", msg: DefaultLogMessage.UnexpectedNull});\n return null;\n }\n\n const cursor = item ? getAudioItemPositionSeconds(item.playState, item.position) : 0;\n const chunks: { position: number; duration: number }[] = [];\n const { element } = browserAudio;\n for (let i = 0; i < element.buffered.length; i++) {\n const start = element.buffered.start(i);\n const end = element.buffered.end(i);\n chunks.push({ position: start, duration: end - start });\n }\n\n const duration: number = browserAudio.element.duration ?? 0;\n const loaded = getLoadedDuration(chunks, duration, cursor);\n const newState = calculatePreloadState(browserAudio, duration, loaded);\n return newState;\n}\n\nexport function getLoadedDuration(chunks: LoadedChunk[], duration: number, cursor: number): number {\n const getPosition = (chunks: LoadedChunk[], cursor: number) => {\n let position: number = cursor;\n for (const chunk of chunks) {\n const start = chunk.position;\n const end = chunk.position + chunk.duration;\n\n if (start <= position && end > position) {\n position = end;\n } else break;\n }\n return position;\n };\n\n const after: LoadedChunk[] = [];\n const before: LoadedChunk[] = [];\n\n chunks.forEach((chunk) => {\n const start = chunk.position;\n const end = chunk.position + chunk.duration;\n if (cursor <= end) after.push(chunk);\n if (cursor > start) before.push(chunk);\n });\n\n const position1 = getPosition(after, cursor);\n let duration1 = position1 - cursor;\n\n if (position1 >= duration) {\n const position2 = getPosition(before, 0);\n const duration2 = position2 > cursor ? cursor : position2;\n\n duration1 += duration2;\n }\n\n return duration1;\n}\n\nconst getPreloadDurationSeconds = (preload: BrowserAudioItemPreloadSize | null): number => {\n switch (preload) {\n case BrowserAudioItemPreloadSize.Small:\n return playerConfig.smallPreloadDurationSec;\n case BrowserAudioItemPreloadSize.Full:\n return playerConfig.maxPreloadDuratioSec;\n case null:\n return 0;\n }\n};\n","import { saveUrl } from \"../url/saveUrl\";\nimport { getBrowserAudio } from \"./updateBrowserAudios\";\nimport { updateFlow } from \"./updateFlow\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\n\nexport async function updateUrl(audio: AudioInputItemModel) {\n let browserAudio = getBrowserAudio(audio.audioId);\n if (!browserAudio) return;\n\n browserAudio = await saveUrl(audio, browserAudio);\n updateFlow();\n}\n","import Hls from \"hls.js\";\nimport { hlsElementError } from \"../error\";\nimport { store } from \"global\";\nimport { headerNames, CacheType } from \"shared/services\";\nimport { log } from \"services/logger\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport const createHlsElement = (browserAudio: BrowserAudioItemModel, url: string): Hls | null => {\n const { element } = browserAudio;\n if (!Hls.isSupported()) {\n log.error({ code: \"web-210915-1236\", msg: \"hls not supported\" });\n return null;\n }\n\n const hls = new Hls({\n xhrSetup: (xhr) => {\n if (store.getState().controlPanel.enableAudioPreload) {\n xhr.setRequestHeader(headerNames.cacheType, CacheType.Hls);\n xhr.setRequestHeader(headerNames.hlsCaller, \"HlsJs\");\n }\n },\n fragLoadingMaxRetry: 2,\n manifestLoadingMaxRetry: 0,\n levelLoadingMaxRetry: 0\n });\n\n hls.on(Hls.Events.ERROR, (event, data) => {\n if (browserAudio.disposed) return;\n if (!data.fatal) return;\n\n let logData: Record<string, unknown>;\n let message: string;\n try {\n const networkDetails = data.networkDetails as XMLHttpRequest | undefined;\n const logNetworkDetails = networkDetails ? { status: networkDetails.status, statusText: networkDetails.statusText, respomse: networkDetails.response } : undefined;\n\n message = data.err?.message ?? data.error?.message ?? data.error?.name ?? \"undefined hls error message\";\n logData = { reason: data.reason, err: data.err, error: data.error, details: data.details, type: data.type, url: data.url, networkDetails: logNetworkDetails };\n } catch (e) {\n message = \"no data\";\n logData = { error: \"no data\", e };\n }\n\n log.warn({ code: \"web-210212-0949\", msg: `hls audio error: ${data.type}, fatal: ${data.fatal}`, data: { event, ...logData } });\n hlsElementError(browserAudio, message);\n\n // switch (data.type) {\n // case Hls.ErrorTypes.MEDIA_ERROR:\n // if (data.fatal) hls.recoverMediaError();\n // break;\n // case Hls.ErrorTypes.NETWORK_ERROR:\n // if (data.fatal) {\n // // TODO must be disabled until we can distinguish between network and trackStream expired responses\n // // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // // if ((data?.response as any)?.code === 0) {\n // // if (browserAudioItem.hlsStartLoadTimeout) return;\n // // browserAudioItem.hlsStartLoadTimeout = true;\n // // setTimeout(() => {\n // // browserAudioItem.hlsStartLoadTimeout = false;\n // // if (browserAudioItem.disposed) return;\n // // hls.startLoad();\n // // }, 1000);\n // // } else {\n // // }\n // }\n // break;\n // case Hls.ErrorTypes.KEY_SYSTEM_ERROR:\n // case Hls.ErrorTypes.MUX_ERROR:\n // case Hls.ErrorTypes.OTHER_ERROR:\n // break;\n // }\n });\n\n hls.attachMedia(element);\n hls.loadSource(url);\n\n return hls;\n};\n","import { serviceWorkerConfig } from \"../../../../../../../shared/services\";\nimport { store } from \"global\";\nimport { playerConfig } from \"global/constants\";\nimport { log, LogTag } from \"services/logger\";\nimport { AudioInputType } from \"models/app/player\";\nimport type { AudioInputItemModel, StreamUrl } from \"models/app/player/input\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport function getCacheId(audio: AudioInputItemModel): string {\n const cacheId = (() => {\n switch (audio.input) {\n case AudioInputType.LiveRadio: {\n const radioId = audio.radioId;\n return `radio_${radioId}`.toLowerCase();\n }\n case AudioInputType.PlayQueue: {\n const trackId = audio.trackId;\n const sample = audio.sample;\n return `track_${trackId}_${sample ? \"sample\" : \"full\"}`.toLowerCase();\n }\n }\n })();\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-221213-1552\",\n msg: `created new cache id: ${audio.logTitle}`,\n data: {\n cacheId,\n logTitle: audio.logTitle\n }\n }));\n\n return cacheId;\n}\n\nexport async function updateUrlInCache(browserAudio: BrowserAudioItemModel) {\n if (!isCachePoolEnabled()) return;\n\n const url = browserAudio.url;\n const key = getUrlKey(browserAudio.audioCacheId);\n\n if (url) {\n log.debug([LogTag.Playback], () => ({\n code: \"web-230102-1256\",\n msg: `save url in cache: ${browserAudio.logTitle}`\n }));\n\n await saveJsonToCache(key, url);\n } else {\n log.debug([LogTag.Playback], () => ({\n code: \"web-230102-1257\",\n msg: `delete url from cache: ${browserAudio.logTitle}`\n }));\n\n await deleteFromCache(key);\n }\n}\n\nexport async function setTrackCacheBegin(browserAudio: BrowserAudioItemModel) {\n if (!isCachePoolEnabled()) return;\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-230102-1255\",\n msg: `begin saving track as cached: ${browserAudio.logTitle}`\n }));\n\n const cacheId = browserAudio.audioCacheId;\n\n const deleteEnd = deleteFromCache(getCachedEndKey(cacheId));\n const saveBegin = saveToCache(getCachedBeginKey(cacheId));\n\n await Promise.all([deleteEnd, saveBegin]);\n}\n\nexport async function setTrackFullyCached(browserAudio: BrowserAudioItemModel, checkKeys: string[]): Promise<boolean> {\n if (!isCachePoolEnabled()) return false;\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-230102-1259\",\n msg: `saving track as fully cached: ${browserAudio.logTitle}`\n }));\n\n const valid = checkDataValid(checkKeys);\n if (!valid) return false;\n\n await saveToCache(getCachedEndKey(browserAudio.audioCacheId));\n return true;\n}\n\n// TODO consider disabling this check\nasync function checkDataValid(checkKeys: string[]): Promise<boolean> {\n const checks = checkKeys.map(async (key) => {\n try {\n const response = await readFromCache(key);\n if (!response) return false;\n\n const body = await response.text();\n return body != null && body !== \"\";\n } catch (e) {\n log.error({ code: \"web-230103-1129\", msg: \"cached data not valid\", data: { key } });\n return false;\n }\n });\n\n const ok: boolean = (await Promise.all(checks)).every((value) => value);\n return ok;\n}\n\nexport type TrackUrlResult = {\n url: StreamUrl | null;\n message: string;\n};\n\nexport async function getValidTrackUrl(browserAudio: BrowserAudioItemModel): Promise<TrackUrlResult> {\n if (!isCachePoolEnabled()) return { url: null, message: \"cache pool disabled\" };\n\n const cacheId = browserAudio.audioCacheId;\n\n const url = await readJsonFromCache<StreamUrl>(getUrlKey(cacheId));\n if (!url) return { url: null, message: \"not cached\" };\n\n const validDuration = playerConfig.expectedHlsStreamValidSec;\n const now = new Date().getTime();\n const validByTime = now < url.fetchedTime + validDuration;\n if (validByTime) {\n log.debug([LogTag.Playback], () => ({\n code: \"web-230102-1135\",\n msg: `found cached url (url valid by time): ${browserAudio.logTitle}`\n }));\n\n return { url, message: \"found cached url (url valid by time)\" };\n }\n\n const [begin, end] = await Promise.all([existInCache(getCachedBeginKey(cacheId)), existInCache(getCachedEndKey(cacheId))]);\n const trackCahed = begin === true && end === true;\n if (trackCahed) {\n log.debug([LogTag.Playback], () => ({\n code: \"web-230102-1136\",\n msg: `found cached url (url valid by track cached): ${browserAudio.logTitle}`\n }));\n\n return { url, message: \"found cached url (url valid by track cached)\" };\n }\n\n return { url: null, message: \"not found\" };\n}\n\nexport async function deleteTrackCache(browserAudio: BrowserAudioItemModel) {\n if (!isCachePoolEnabled()) return null;\n\n const cacheId = browserAudio.audioCacheId;\n\n const deleteUrl = deleteFromCache(getUrlKey(cacheId));\n const deleteBegin = deleteFromCache(getCachedBeginKey(cacheId));\n const deleteEnd = deleteFromCache(getCachedEndKey(cacheId));\n\n await Promise.all([deleteUrl, deleteBegin, deleteEnd]);\n}\n\nfunction isCachePoolEnabled() {\n return store.getState().controlPanel.enableAudioCachePool === true;\n}\n\nfunction getUrlKey(cacheId: string): string {\n return `url_${cacheId}`;\n}\n\nfunction getCachedBeginKey(cacheId: string): string {\n return `cached_begin_${cacheId}`;\n}\n\nfunction getCachedEndKey(cacheId: string): string {\n return `cached_end_${cacheId}`;\n}\n\nasync function saveToCache(key: string, value?: string) {\n const cache = await caches.open(serviceWorkerConfig.cacheNameHls);\n await cache.put(key, new Response(value));\n}\n\nasync function existInCache(key: string): Promise<boolean> {\n const cache = await caches.open(serviceWorkerConfig.cacheNameHls);\n const exist = (await cache.match(key)) != undefined;\n return exist;\n}\n\nasync function saveJsonToCache<T>(key: string, value: T) {\n const cache = await caches.open(serviceWorkerConfig.cacheNameHls);\n await cache.put(key, new Response(JSON.stringify(value), { headers: { \"content-type\": \"application/json\" } }));\n}\n\nasync function readJsonFromCache<T>(key: string): Promise<T | null> {\n const cache = await caches.open(serviceWorkerConfig.cacheNameHls);\n const response = await cache.match(key);\n if (!response) return null;\n\n const value = await response.json();\n if (value == null) return null;\n\n return value;\n}\n\nasync function readFromCache(key: string): Promise<Response | undefined> {\n const cache = await caches.open(serviceWorkerConfig.cacheNameHls);\n const response = await cache.match(key);\n return response;\n}\n\nasync function deleteFromCache(key: string) {\n const cache = await caches.open(serviceWorkerConfig.cacheNameHls);\n await cache.delete(key);\n}\n","import { calculatePreloadState, getLoadedDuration, updatePreloadState } from \"../flow\";\nimport { inSkipDebounce } from \"../skipDebounce/skipDebounce\";\nimport { setTrackFullyCached, setTrackCacheBegin } from \"./hlsCachePool\";\nimport { store } from \"global\";\nimport { CacheType, headerNames } from \"shared/services/serviceWorkerConfig\";\nimport { playerConfig } from \"global/constants/player\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport { serviceWorkerRegistered } from \"services/serviceWorker/initServiceWorker\";\nimport { StreamUrlType } from \"models/app/player/input\";\nimport type { BrowserAudioItemModel, HlsPreloadAudioChunkModel, HlsPreloadAudioEncryptionKeyModel, HlsPreloadManifestModel, PreloadFetchResult } from \"models/app/player/output\";\nimport { BrowserAudioLoadState, BrowserAudioItemPreloadSize, PreloadFetchResultStatus } from \"models/app/player/output\";\n\nexport function getHlsPreloadState(browserAudio: BrowserAudioItemModel): BrowserAudioLoadState | null {\n if (!isPreloadingEnabled()) return null;\n\n if (browserAudio.disposed) {\n log.error({ code: \"web-211213-1249\", msg: \"item disposed\" });\n return null;\n }\n\n if (browserAudio.url == null) {\n log.error({ code: \"web-211215-1547\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n\n if (browserAudio.preload.size === BrowserAudioItemPreloadSize.Full) {\n if (browserAudio.preload.hlsPreload?.fullyLoaded) return BrowserAudioLoadState.Done;\n else return BrowserAudioLoadState.Buffering;\n }\n\n const manifest = browserAudio.preload.hlsPreload?.manifest;\n if (manifest == null) return BrowserAudioLoadState.Buffering;\n\n const cursor = browserAudio.element.currentTime;\n const loaded = getLoadedHlsDuration(manifest, cursor);\n if (loaded == null) {\n log.error({ code: \"web-210413-1225\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n const duration = manifest.duration;\n\n const newState = calculatePreloadState(browserAudio, duration, loaded);\n return newState;\n}\n\nfunction getLoadedHlsDuration(manifest: HlsPreloadManifestModel, cursor: number): number | null {\n const duration = manifest.duration;\n let chunks = manifest.chunks;\n chunks = chunks.filter((item) => item.loaded);\n const loaded = getLoadedDuration(chunks, duration, cursor);\n return loaded;\n}\n\nexport const preloadHls = async (browserAudio: BrowserAudioItemModel) => {\n if (!isPreloadingEnabled()) return;\n if (inSkipDebounce) return;\n if (browserAudio.disposed) return;\n if (!browserAudio.loadNow) return;\n if (!browserAudio.url) return;\n if (browserAudio.url.urlType !== StreamUrlType.Hls) return;\n if (!browserAudio.hls) return;\n if (!serviceWorkerRegistered) return;\n if (browserAudio.state !== BrowserAudioLoadState.Buffering) return;\n\n const preload = browserAudio.preload;\n if (preload.hlsPreload?.status === PreloadFetchResultStatus.UnknownError) return;\n\n browserAudio.preload.hlsPreload ??= {\n fullyLoaded: false,\n manifest: null,\n lock: false,\n status: PreloadFetchResultStatus.OK\n };\n\n const hlsPreload = browserAudio.preload.hlsPreload;\n\n if (hlsPreload.lock) return;\n hlsPreload.lock = true;\n\n await tryParseAndFetchNextItem(browserAudio);\n\n if (hlsPreload.status === PreloadFetchResultStatus.NetworkError) {\n updatePreloadState(browserAudio);\n\n setTimeout(async () => {\n hlsPreload.lock = false;\n updatePreloadState(browserAudio);\n }, playerConfig.hlsRetryTimeoutMs);\n } else {\n hlsPreload.lock = false;\n updatePreloadState(browserAudio);\n }\n};\n\nasync function tryParseAndFetchNextItem(browserAudio: BrowserAudioItemModel) {\n if (browserAudio.disposed) return;\n\n const preload = browserAudio.preload.hlsPreload;\n if (preload == null) {\n log.error({ code: \"web-220505-1414\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n\n if (preload.fullyLoaded) return;\n\n let manifest = preload.manifest;\n if (!manifest) {\n await setTrackCacheBegin(browserAudio);\n const result = await tryParseIndex(browserAudio);\n\n manifest = result.value ?? null;\n preload.manifest = manifest;\n preload.status = result.status;\n\n if (!manifest) return;\n }\n\n const { next, status } = await tryFetchNextItem(browserAudio);\n if (browserAudio.disposed) return;\n\n preload.status = status;\n preload.fullyLoaded = !next && status === PreloadFetchResultStatus.OK;\n\n if (preload.fullyLoaded) {\n const index = manifest.indexUrl;\n const chunk = manifest.chunks[manifest.chunks.length - 1]?.url;\n\n const ok = chunk && (await setTrackFullyCached(browserAudio, [index, chunk]));\n if (!ok) {\n preload.status = PreloadFetchResultStatus.UnknownError;\n preload.fullyLoaded = false;\n }\n }\n}\n\nasync function tryFetchNextItem(browserAudio: BrowserAudioItemModel): Promise<{ next: boolean; status: PreloadFetchResultStatus }> {\n const chunk = getNextItem(browserAudio);\n if (!chunk) return { next: false, status: PreloadFetchResultStatus.OK };\n\n const status = await fetchNextItem(chunk);\n\n return { next: true, status };\n}\n\nasync function fetchNextItem(chunk: HlsPreloadAudioChunkModel | HlsPreloadAudioEncryptionKeyModel): Promise<PreloadFetchResultStatus> {\n const headers = addHeaders(true);\n try {\n const ok = (await fetch(chunk.url, { headers })).ok;\n chunk.loaded = ok;\n\n if (ok) return PreloadFetchResultStatus.OK;\n return PreloadFetchResultStatus.UnknownError;\n } catch (e) {\n return PreloadFetchResultStatus.NetworkError;\n }\n}\n\nfunction getNextItem(browserAudio: BrowserAudioItemModel): HlsPreloadAudioChunkModel | HlsPreloadAudioEncryptionKeyModel | null {\n const manifest = browserAudio.preload.hlsPreload?.manifest ?? null;\n if (manifest == null) {\n log.error({ code: \"web-220505-1414\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n\n const encryption = manifest.encryption;\n if (encryption == null) {\n log.error({ code: \"web-220505-1414\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n\n if (!encryption.loaded) return encryption;\n\n const playCursor = browserAudio.element.currentTime;\n\n let chunks = manifest.chunks ?? null;\n if (chunks == null) {\n log.error({ code: \"web-210412-1510\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n chunks = chunks.filter((item) => !item.loaded);\n for (const chunk of chunks) {\n const start = chunk.position;\n const end = chunk.position + chunk.duration;\n if (playCursor >= start && playCursor < end) return chunk;\n }\n for (const chunk of chunks) {\n const start = chunk.position;\n if (playCursor >= start) return chunk;\n }\n return chunks[0] ?? null;\n}\n\nfunction addHeaders(onlyForCache: boolean) {\n const headers: HeadersInit = {};\n headers[headerNames.cacheType] = CacheType.Hls;\n headers[headerNames.hlsCaller] = \"PreloadService\";\n if (onlyForCache) headers[headerNames.onlyForCache] = \"True\";\n\n return headers;\n}\n\nasync function tryParseIndex(browserAudio: BrowserAudioItemModel): Promise<PreloadFetchResult<HlsPreloadManifestModel>> {\n try {\n return await parseIndex(browserAudio);\n } catch (e) {\n log.error({ code: \"web-210914-1405\", msg: \"error\", error: e });\n return { status: PreloadFetchResultStatus.UnknownError };\n }\n}\n\nconst parseIndex = async (browserAudio: BrowserAudioItemModel): Promise<PreloadFetchResult<HlsPreloadManifestModel>> => {\n const MASTER_PLAYLIST_REGEX = new RegExp(\n [\n /#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?/.source, // duration (#EXTINF:<duration>,<title>), group 1 => duration, group 2 => title\n /(?!#) *(\\S[\\S ]*)/.source, // segment URI, group 3 => the URI (note newline is not eaten)\n /#EXT-X-BYTERANGE:*(.+)/.source, // next segment's byterange, group 4 => range spec (x@y)\n /#EXT-X-PROGRAM-DATE-TIME:(.+)/.source, // next segment's program date/time group 5 => the datetime spec\n /#EXT-X-(KEY):(.+)/.source,\n /#.*/.source // All other non-segment oriented tags will match with all groups empty\n ].join(\"|\"),\n \"g\"\n );\n\n const url = browserAudio.url;\n if (url == null) {\n log.error({ code: \"web-210412-1314\", msg: DefaultLogMessage.UnexpectedNull });\n return { status: PreloadFetchResultStatus.UnknownError };\n }\n\n if (url.urlType !== StreamUrlType.Hls) {\n log.error({ code: \"web-210412-1314\", msg: DefaultLogMessage.UnexpectedValue });\n return { status: PreloadFetchResultStatus.UnknownError };\n }\n\n const baseUrl = getHlsBaseUrl(url.url);\n if (baseUrl == null) {\n log.error({ code: \"web-210412-1611\", msg: DefaultLogMessage.UnexpectedNull });\n return { status: PreloadFetchResultStatus.UnknownError };\n }\n\n const headers = addHeaders(false);\n\n let response: Response;\n try {\n response = await fetch(url.url, { headers });\n } catch {\n return { status: PreloadFetchResultStatus.NetworkError };\n }\n\n if (!response.ok) {\n return { status: PreloadFetchResultStatus.UnknownError };\n }\n\n let result: RegExpExecArray | null;\n const text = await response.text();\n let position = 0;\n const chunks: HlsPreloadAudioChunkModel[] = [];\n let chunk: HlsPreloadAudioChunkModel | null = null;\n let encryptionUrl: string | null = null;\n while ((result = MASTER_PLAYLIST_REGEX.exec(text)) != null) {\n const durationStr = result[1];\n const segment = result[3];\n if (result[7]) {\n const encryption = result[7].match(/URI=\"(\\S*)\"/);\n if (encryption) encryptionUrl = encryption[1];\n }\n\n if (durationStr != null) {\n const duration = Number(durationStr);\n chunk = {\n duration,\n position,\n url: \"\",\n loaded: false\n };\n chunks.push(chunk);\n position += duration;\n } else if (segment != null) {\n if (!chunk) {\n log.error({ code: \"web-210412-1451\", msg: DefaultLogMessage.UnexpectedNull });\n return { status: PreloadFetchResultStatus.UnknownError };\n }\n chunk.url = baseUrl + segment;\n }\n }\n\n const duration = position;\n if (encryptionUrl == null) {\n log.error({ code: \"web-210419-1247\", msg: DefaultLogMessage.UnexpectedNull });\n return { status: PreloadFetchResultStatus.UnknownError };\n }\n\n const encryption: HlsPreloadAudioEncryptionKeyModel = {\n url: baseUrl + encryptionUrl,\n loaded: false\n };\n\n const item: HlsPreloadManifestModel = { duration, indexUrl: url.url, encryption, chunks };\n return { value: item, status: PreloadFetchResultStatus.OK };\n};\n\nfunction getHlsBaseUrl(indexUrl: string) {\n const baseUrl = indexUrl.split(\"index.m3u8\")[0];\n if (baseUrl == null) {\n log.error({ code: \"web-210412-1608\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n return baseUrl;\n}\n\nfunction isPreloadingEnabled() {\n return store.getState().controlPanel.enableAudioPreload;\n}\n","export * from \"./createHlsElement\";\nexport * from \"./hlsCachePool\";\nexport * from \"./hlsPreload\";\n","export * from \"./log\";\n","import { log, LogTag } from \"services/logger\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport function logBrowserAudios(message: string, browserAudios: BrowserAudioItemModel[]) {\n const browserAudiosLog = getBrowserAudiosLog(browserAudios);\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-221205-1101\",\n msg: message,\n data: {\n browserAudios: browserAudiosLog\n }\n }));\n}\n\nexport function getBrowserAudiosLog(browserAudios: BrowserAudioItemModel[]) {\n return browserAudios.map((browserAudio) => getBrowserAudioLog(browserAudio));\n}\n\nexport function getBrowserAudioLog(browserAudio: BrowserAudioItemModel) {\n return {\n audioId: browserAudio.audioId,\n audioPlayState: browserAudio.playState,\n logTitle: browserAudio.logTitle,\n playState: browserAudio.intendedPlayState,\n preload: browserAudio.preload,\n url: browserAudio.url\n };\n}\n","export * from \"./skipDebounce\";","import { getBrowserAudios, updateFlow } from \"../flow\";\nimport { playerConfig } from \"global/constants/player\";\nimport { log, LogTag } from \"services/logger\";\n\nexport let inSkipDebounce = false;\n\nlet lastPlayingId: string | null = null;\nlet lastPlayingChange = 0;\nlet timeOutId: number | null = null;\n\nexport const updateSkipDebounce = () => {\n updatePlayingChange();\n updateDebounce();\n};\n\nfunction updatePlayingChange() {\n const playingId = getBrowserAudios().find((item) => item.preload.order === 0)?.audioId ?? null;\n\n if (playingId == null || playingId != lastPlayingId) {\n lastPlayingId = playingId;\n lastPlayingChange = new Date().getTime();\n }\n}\n\nconst updateDebounce = () => {\n if (timeOutId != null) {\n window.clearTimeout(timeOutId);\n timeOutId = null;\n }\n const now = new Date().getTime();\n const timeout = lastPlayingChange + playerConfig.playerMultiSkipTimeoutMs - now;\n\n if (timeout <= 0) {\n setDebounce(false);\n } else {\n setDebounce(true);\n timeOutId = window.setTimeout(() => updateDebounce(), timeout);\n }\n};\n\nfunction setDebounce(debounce: boolean) {\n if (debounce === inSkipDebounce) return;\n inSkipDebounce = debounce;\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-211213-1558\",\n msg: `browserAudio debounce changed, inSkipDebound: ${debounce}`,\n data: { debounce }\n }));\n\n if (!debounce) updateFlow();\n}\n","import type { TrackUrlResult } from \"../hls\";\nimport { getPlaybackFull, getPlaybackSample } from \"services/backend/backend\";\nimport { log, LogTag } from \"services/logger/initLoggerService\";\nimport { simulateInvalidUrl } from \"services/player/helpers/debug\";\nimport { StreamQuality } from \"generated/graphql-types\";\nimport { StreamUrlType } from \"models/app/player/input\";\n\nexport const fetchTrackUrl = async (trackId: string, sample: boolean, logTitle: string): Promise<TrackUrlResult> => {\n const invalidUrl = simulateInvalidUrl(sample ? StreamUrlType.Hls : StreamUrlType.Mp3);\n if (invalidUrl.simulate) return { url: invalidUrl.url ?? null, message: \"simulating invalid url\" };\n\n const getTrackStream = sample ? getPlaybackSample : getPlaybackFull;\n const result = await getTrackStream({ id: trackId, quality: StreamQuality.Kbps_320 });\n\n const data = { trackId, sample, result };\n if (result == null) {\n log.error({ code: \"web-210330-1041\", msg: \"backend could not return trackStream\", data });\n return { url: null, message: \"backend could not return trackStream\" };\n }\n if (result.error) {\n log.error({ code: \"web-210330-1041\", msg: `error: ${result.errorReason}`, data });\n return { url: null, message: `error: ${result.errorReason}` };\n }\n const url = result.model;\n\n if (url) {\n log.debug([LogTag.Playback], () => ({\n code: \"web-230102-1128\",\n msg: `fetched new track url, title: ${logTitle}`\n }));\n\n return { url, message: \"fetched new track url\" };\n }\n\n log.error({ code: \"web-210330-1042\", msg: \"backend returned trackStream with no urls\", data });\n return { url: null, message: \"backend returned trackStream with no urls\" };\n};\n","export * from \"./fetchTrackUrl\";\nexport * from \"./loadUrl\";\nexport * from \"./saveUrl\";\n","import { fetchTrackUrl } from \".\";\nimport { trackStreamError } from \"../error\";\nimport { getValidTrackUrl } from \"../hls\";\nimport { inSkipDebounce } from \"../skipDebounce\";\nimport { dispatch } from \"global\";\nimport { AUDIO_INPUT_AUDIO_SRC_CHANGE } from \"global/actions\";\nimport { DefaultLogMessage, log, LogTag } from \"services/logger\";\nimport { getAudioInputItemByPredicateFromState } from \"services/player/inputs/service/helpers\";\nimport { AudioInputType } from \"models/app/player\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport type { AudioInputItemModel, StreamUrl } from \"models/app/player/input\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\nimport { BrowserAudioLoadState } from \"models/app/player/output\";\n\nexport const loadUrl = async (browserAudio: BrowserAudioItemModel) => {\n if (inSkipDebounce) return;\n if (browserAudio.disposed) return;\n if (!browserAudio.loadNow) return;\n\n if (browserAudio.urlLock) return;\n browserAudio.urlLock = true;\n\n await _loadUrl(browserAudio);\n\n browserAudio.urlLock = false;\n};\n\nasync function _loadUrl(browserAudio: BrowserAudioItemModel) {\n if (browserAudio.url) return;\n\n const audio = getAudioInputItemByPredicateFromState((item) => item.audioId === browserAudio.audioId);\n if (audio == null) {\n log.error({ code: \"web-210120-1408\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n if (audio.input !== AudioInputType.PlayQueue) return;\n\n browserAudio.state = BrowserAudioLoadState.LoadUrl;\n\n log.debug([LogTag.Playback], () => ({\n code: \"web-211216-1358\",\n msg: `browserAudio state: LoadUrl, title: ${browserAudio.logTitle}`\n }));\n\n const validTrackUrlResult = await getValidTrackUrl(browserAudio);\n\n const fetchTrackUrlResults = validTrackUrlResult.url ? null : await fetchTrackUrl(audio.trackId, audio.sample, browserAudio.logTitle);\n const resultUrl = validTrackUrlResult.url ?? fetchTrackUrlResults?.url ?? null;\n if (resultUrl) await dispathUrl(audio, resultUrl);\n else await trackStreamError(browserAudio, validTrackUrlResult.message, fetchTrackUrlResults?.message ?? \"\");\n}\n\nasync function dispathUrl(audio: AudioInputItemModel, url: StreamUrl | null) {\n audio.url2 = url;\n\n await dispatch({\n type: AUDIO_INPUT_AUDIO_SRC_CHANGE,\n payload: {\n audio,\n context: {\n action: AudioContextAction.AudioLoadTrackStream,\n trace: null\n }\n }\n });\n}\n","import { replaceBrowserAudio } from \"../flow/updateBrowserAudios\";\nimport { updateUrlInCache } from \"../hls\";\nimport type { AudioInputItemModel } from \"models/app/player/input\";\nimport type { BrowserAudioItemModel } from \"models/app/player/output\";\n\nexport async function saveUrl(audio: AudioInputItemModel, browserAudio: BrowserAudioItemModel) {\n const oldUrl = browserAudio.url?.url;\n const newUrl = audio.url2?.url;\n\n const change = newUrl != oldUrl;\n const replace = change && !!oldUrl;\n\n if (replace) browserAudio = replaceBrowserAudio(browserAudio, audio);\n if (change) browserAudio.url = audio.url2;\n\n await updateUrlInCache(browserAudio);\n\n return browserAudio;\n}\n","export * from \"./outputType\";\n","import { store } from \"global\";\nimport { PlayerOutputType } from \"models/app/player\";\n\nexport function getPlayerOutputTypeFromState() {\n return store.getState().player.output;\n}\n\nexport const isOutputChromecast = (output: PlayerOutputType) => output === PlayerOutputType.Chromecast;\nexport const isOutputChromecastFromState = () => isOutputChromecast(store.getState().player.output);\n\nexport const isOutputBrowser = (output: PlayerOutputType) => output === PlayerOutputType.Browser;\nexport const isOutputBrowserFromState = () => isOutputBrowser(store.getState().player.output);\n","export * from \"./initMediaSessionService\";\nexport * from \"./initRecentTracksService\";\nexport * from \"./liveRadioHeartbeatService\";\n","import { AudioContextAction } from \"../../../models/app/player/AudioContext\";\nimport { dispatch, messageBus } from \"global\";\nimport { AUDIO_INPUT_AUDIOS_CHANGE, AUDIO_OUTPUT_AUDIO_PLAY_CHANGE, PLAYER_NEXT, PLAYER_PREVIOUS_OR_REWIND, PLAYER_SET_PLAY } from \"global/actions\";\nimport { log } from \"services/logger/initLoggerService\";\nimport { getCoverSrcFromTemplate } from \"services/resource\";\nimport { ContentType } from \"models/ModelType\";\nimport type { CurrentAudioLoadedPrimaryPreview, CurrentAudioLoadedSecondaryPreview } from \"components/shared/hooks\";\nimport { getCurrentAudioPrimaryResourceFromState, getCurrentAudioSecondaryResourceFromState } from \"components/shared/hooks\";\n\nexport async function initMediaSessionService() {\n if (!(\"mediaSession\" in navigator)) return;\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIOS_CHANGE, updateMediaSession);\n messageBus.subscribeEvery(AUDIO_OUTPUT_AUDIO_PLAY_CHANGE, updateMediaSession);\n}\n\nlet currentPrimary: CurrentAudioLoadedPrimaryPreview | null = null;\nlet currentSecondary: CurrentAudioLoadedPrimaryPreview | null = null;\n\nfunction updateMediaSession() {\n const mediaSession = navigator.mediaSession;\n\n if (!mediaSession) {\n log.warn({ code: \"web-211105-1104\", msg: \"mediaSession is null\" });\n return;\n }\n\n const primary = getCurrentAudioPrimaryResourceFromState().resource;\n const secondary = getCurrentAudioSecondaryResourceFromState().resource;\n\n if (primary?.id == currentPrimary?.id && secondary?.id === currentSecondary?.id) return;\n\n currentPrimary = primary;\n currentSecondary = secondary;\n\n const mediaInfo = getMediaInfo(primary, secondary);\n const artwork = getArtwork(primary);\n\n const metadata: MediaMetadataInit | undefined = mediaInfo != null ? { ...mediaInfo, artwork } : undefined;\n mediaSession.metadata = metadata ? new MediaMetadata(metadata) : null;\n\n const playFn = () => {\n if (secondary) dispatch({ type: PLAYER_SET_PLAY, payload: { play: true, context: { action: AudioContextAction.UserMediaControlsPlay, trace: null } } });\n };\n const pauseFn = () => {\n if (secondary) dispatch({ type: PLAYER_SET_PLAY, payload: { play: false, context: { action: AudioContextAction.UserMediaControlsPause, trace: null } } });\n };\n const previousFn = () => {\n if (secondary) dispatch({ type: PLAYER_PREVIOUS_OR_REWIND, payload: { context: { action: AudioContextAction.UserMediaControlsPrevious, trace: null } } });\n };\n const nextFn = () => {\n if (secondary) dispatch({ type: PLAYER_NEXT, payload: { context: { action: AudioContextAction.UserMediaControlsNext, trace: null } } });\n };\n\n mediaSession.setActionHandler(\"play\", () => playFn());\n mediaSession.setActionHandler(\"pause\", () => pauseFn());\n mediaSession.setActionHandler(\"previoustrack\", () => previousFn());\n mediaSession.setActionHandler(\"nexttrack\", () => nextFn());\n}\n\nfunction getArtwork(primary: CurrentAudioLoadedPrimaryPreview | null): MediaImage[] | undefined {\n const template = primary?.cover;\n if (template == null) return undefined;\n\n const images: MediaImage[] = [];\n\n const add = (size: number, forceAdd?: boolean) => {\n const { success, src } = getCoverSrcFromTemplate(template, size, size);\n if (!success && !forceAdd) return;\n images.push({ src, sizes: `${size}x${size}` });\n };\n\n add(64);\n add(128);\n add(256);\n add(512, true);\n add(1024);\n\n return images;\n}\n\nfunction getMediaInfo(\n primary: CurrentAudioLoadedPrimaryPreview | null,\n secondary: CurrentAudioLoadedSecondaryPreview | null\n): { title: string; album?: string; artist?: string } | null {\n if (!primary) return null;\n\n switch (primary.contentType) {\n case ContentType.TrackPlayable: {\n return {\n title: primary.track.title,\n album: primary.track.album.title,\n artist: primary.track.artist.name\n };\n }\n case ContentType.MixRadio: {\n const track = secondary?.contentType === ContentType.TrackPlayable ? secondary.track : null;\n const title = track ? `${primary.title} - ${track.title}` : primary.title;\n return {\n title,\n album: track?.album.title ?? undefined,\n artist: track?.artist.name ?? undefined\n };\n }\n case ContentType.LiveRadioPlayable: {\n return { title: primary.liveRadio.title };\n }\n }\n}\n","import { getCurrentInputAudioItemFromState } from \"../inputs/service/helpers\";\nimport { dispatch } from \"global\";\nimport { AUDIO_INPUT_AUDIOS_CHANGE, AUDIO_INPUT_AUDIO_PLAY_CHANGE, RECENT_TRACKS_ADD_ID, RECENT_TRACKS_UPDATE } from \"global/actions\";\nimport { messageBus, store } from \"global/config/configureStore\";\nimport { getRecentTracks } from \"services/backend\";\nimport { log } from \"services/logger\";\nimport { getIsLoggedInFromState } from \"services/user\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\n\nconst recentTracksLimit = 200;\nconst backendSyncIntervalMs = 1_000 * 60 * 60 * 12;\n\nlet timeOutId: null | number = null;\nlet timeOutAudioId: string | null = null;\n\nexport async function initRecentTracksService() {\n const loggedIn = await getIsLoggedInFromState();\n if (!loggedIn) return;\n\n scheduleRecentTracksSync();\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIO_PLAY_CHANGE, () => {\n tryAddRecentlyPlayedTrack();\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIOS_CHANGE, () => {\n tryAddRecentlyPlayedTrack();\n });\n}\n\nasync function syncRecentTracks() {\n try {\n console.log(\"recentTrackIds\");\n const recentTrackIds = await (await getRecentTracks({ first: recentTracksLimit })).model?.trackIds;\n if (recentTrackIds) {\n dispatch({\n type: RECENT_TRACKS_UPDATE,\n payload: {\n lastUpdated: new Date().getTime(),\n recentTrackIds\n }\n });\n }\n } catch (e) {\n log.error({ code: \"web-220923-1509\", msg: \"getRecentTracks exception\" });\n }\n\n window.setTimeout(() => syncRecentTracks(), backendSyncIntervalMs);\n}\n\nfunction scheduleRecentTracksSync() {\n const lastUpdated = store.getState().queue.recentTracksLastUpdated;\n const timeOut = lastUpdated + backendSyncIntervalMs - new Date().getTime();\n window.setTimeout(() => syncRecentTracks(), timeOut);\n}\n\nconst tryAddRecentlyPlayedTrack = () => {\n const audio = getCurrentInputAudioItemFromState();\n\n if (timeOutId != null && timeOutAudioId === audio?.audioId && audio?.playState === PlayState.Playing) {\n return;\n }\n\n if (timeOutId != null) {\n window.clearTimeout(timeOutId);\n timeOutAudioId = null;\n timeOutId = null;\n }\n\n if (audio?.input !== AudioInputType.PlayQueue) return;\n\n timeOutAudioId = audio.audioId;\n timeOutId = window.setTimeout(\n () =>\n dispatch({\n type: RECENT_TRACKS_ADD_ID,\n payload: { id: audio.trackId }\n }),\n 10_000\n );\n};\n","import { v4 } from \"uuid\";\nimport { messageBus, store } from \"global\";\nimport { AUDIO_INPUT_AUDIOS_CHANGE, AUDIO_INPUT_AUDIO_PLAY_CHANGE, PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE } from \"global/actions\";\nimport { Feature, isFeatureEnabled } from \"global/config\";\nimport { getLiveRadioHeartbeatInSeconds, mutateReportLiveRadioHeartbeat } from \"services/backend\";\nimport { log } from \"services/logger\";\nimport { getCurrentInputAudioItemFromState } from \"services/player/inputs/service/helpers\";\nimport { isOutputBrowserFromState } from \"services/player/outputs/service\";\nimport { HeartbeatType } from \"generated/graphql-types\";\nimport { AudioInputType, PlayState } from \"models/app/player\";\nimport { DomainModelType } from \"models/ModelType\";\n\nexport function initLiveRadioHeartbeatService() {\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIOS_CHANGE, async () => {\n updateHeartbeat();\n });\n\n messageBus.subscribeEvery(AUDIO_INPUT_AUDIO_PLAY_CHANGE, async () => {\n updateHeartbeat();\n });\n\n messageBus.subscribeEvery(PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE, async () => {\n updateHeartbeat();\n });\n}\n\ninterface CurrentLiveRadio {\n id: string;\n playbackContext: string | null;\n url: string;\n}\n\ninterface LiveRadioSession extends CurrentLiveRadio {\n sessionId: string;\n lastReport: number;\n}\n\nlet session: LiveRadioSession | null = null;\nlet timeout: number | null = null;\nlet interval = 5 * 60 * 1000;\n\nasync function updateHeartbeat() {\n if (!isFeatureEnabled(Feature.LiveradioHeartbeat)) return;\n\n if (timeout != null) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n const playing = getPlayingRadio();\n const same = session?.id === playing?.id;\n\n if (!same) {\n if (session) {\n sendHeartbeat(session, HeartbeatType.Stop);\n session = null;\n }\n if (playing) {\n session = { ...playing, lastReport: 0, sessionId: v4() };\n await sendHeartbeatAndFetchInterval(session, HeartbeatType.Start);\n scheduleUpdate(interval);\n }\n return;\n }\n\n if (!session) return;\n\n const now = new Date().getTime();\n const next = session.lastReport + interval - now;\n\n if (next <= 0) {\n await sendHeartbeatAndFetchInterval(session, HeartbeatType.Live);\n scheduleUpdate(interval);\n } else {\n scheduleUpdate(next);\n }\n}\n\nfunction scheduleUpdate(next: number) {\n timeout = window.setTimeout(() => updateHeartbeat(), next);\n}\n\nfunction getPlayingRadio(): CurrentLiveRadio | null {\n if (!isOutputBrowserFromState()) return null;\n\n const current = getCurrentInputAudioItemFromState();\n if (current?.input !== AudioInputType.LiveRadio) return null;\n if (current.playState !== PlayState.Playing) return null;\n\n const radio = store.getState().liveRadio.currentRadio;\n\n const url = radio?.type === DomainModelType.Play ? radio.liveRadio.mp3Url : null;\n if (!url) return null;\n\n if (radio?.id !== current.radioId) {\n log.error({ code: \"web-230322-0952\", msg: \"playing radio id does not match\" });\n return null;\n }\n\n const playbackContext = radio.liveRadio.playbackContext;\n if (!playbackContext) {\n log.error({ code: \"web-230322-0952\", msg: \"playbackContext missing\" });\n }\n\n return { id: radio.id, playbackContext, url };\n}\n\nasync function sendHeartbeatAndFetchInterval(current: LiveRadioSession, type: HeartbeatType) {\n sendHeartbeat(current, type);\n await fetchInterval();\n}\n\nasync function sendHeartbeat(current: LiveRadioSession, type: HeartbeatType) {\n current.lastReport = new Date().getTime();\n\n console.warn(\"sending live radio heartbeat\");\n\n mutateReportLiveRadioHeartbeat({\n heartBeat: { playbackSessionId: current.sessionId, radioId: current.id, streamingUrl: current.url, playbackContext: current.playbackContext, type }\n });\n}\n\nasync function fetchInterval() {\n const intervalSec = (await getLiveRadioHeartbeatInSeconds({})).model;\n if (intervalSec == null) return;\n\n interval = intervalSec * 1000;\n}\n","import { getCachedUserPlaylistPreview } from \"./userPlaylistCache\";\nimport { dispatch, messageBus, store } from \"global\";\nimport { PLAYLIST_COLLECTION_ADDED, PLAYLIST_CANCELLED_ADDING_DUPLICATE_ITEMS, PLAYLIST_TRACKS_REMOVED, PLAYLIST_TRACK_ADDED } from \"global/actions\";\nimport {\n getPlaylistPreview,\n mutateAddAlbumToPlaylist,\n mutateAddPlaylistToPlaylist,\n mutateAddRecommendationToPlaylist,\n mutateAddTrackChartToPlaylist,\n mutateAddTracksToPlaylist,\n mutateModifyTracksInPlaylist\n} from \"services/backend\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { getTracks } from \"services/playable\";\nimport { getUnique } from \"services/utils\";\nimport { DuplicatesHandling, TrackModificationType } from \"generated/graphql-types\";\nimport type { PlayableModel, PlaylistPreviewModel, TrackPreviewModel } from \"models/domain\";\nimport { ContentType } from \"models/ModelType\";\nimport { ModalOpenResult } from \"models/view/AppModalModel\";\nimport { showAddDuplicatesModal } from \"components/organisms/modal/modals/AddDuplicatesModal\";\nimport { openToast } from \"components/organisms/toast\";\nimport { AddedToPlaylistToast, NotAddedToPlaylistToast } from \"components/organisms/toast/toasts\";\n\nexport function canBeAddedToPlaylist(playable: PlayableModel | null) {\n if (playable == null) return true;\n return (\n playable.contentType === ContentType.TrackPlayable ||\n playable.contentType === ContentType.LiveRadioTrack ||\n playable.contentType === ContentType.TrackRecommendation ||\n playable.contentType === ContentType.TrackChart ||\n playable.contentType === ContentType.Album ||\n playable.contentType === ContentType.Playlist\n );\n}\n\nexport async function addQueueToPlaylist(playlistId: string): Promise<boolean> {\n const trackIds = store.getState().queue.playQueue.map((n) => n.track.id);\n return await _addTracksToPlaylist(playlistId, trackIds, DuplicatesHandling.CheckDuplicates);\n}\n\nexport async function addTracksToPlaylist(playlistId: string, tracks: TrackPreviewModel[]) {\n const trackIds = tracks.map((n) => n.id);\n return await _addTracksToPlaylist(playlistId, trackIds, DuplicatesHandling.CheckDuplicates);\n}\n\nasync function _addTracksToPlaylist(playlistId: string, tracksIds: string[], duplicatesHandling: DuplicatesHandling): Promise<boolean> {\n let wasAdded = false, duplicates = false, duplicatesCount = 0;\n if (tracksIds.length > 0) {\n ({ wasAdded, duplicates, duplicatesCount } = await mutateAddTracksToPlaylist({\n id: playlistId,\n trackIds: tracksIds,\n duplicatesHandling\n }));\n\n if (duplicates) {\n const isFullyContained = duplicatesCount >= getUnique(tracksIds, n => n).length;\n\n const { result, data } = await showAddDuplicatesModal(duplicatesCount, tracksIds.length > 1, isFullyContained);\n if (result == ModalOpenResult.Submit) {\n const handling = data === DuplicatesHandling.SkipDuplicates ? DuplicatesHandling.SkipDuplicates : DuplicatesHandling.AllowDuplicates;\n return await _addTracksToPlaylist(playlistId, tracksIds, handling);\n }\n notifyOperationCancelled(playlistId, null, tracksIds.length, null, tracksIds.map(trackId => ({ trackId })));\n return false;\n }\n }\n notifyCollectionAddedAndToast(playlistId, null, wasAdded, tracksIds.length, null, duplicatesHandling);\n return wasAdded;\n}\n\nexport async function addPlayableToPlaylist(playlistId: string, playable: PlayableModel, duplicatesHandling = DuplicatesHandling.CheckDuplicates): Promise<boolean> {\n let wasAdded: boolean | null = null;\n let duplicates: boolean | null = null;\n let addedCount: number | null = null;\n let duplicatesCount: number | null = null;\n\n switch (playable.contentType) {\n case ContentType.QueueTrack:\n case ContentType.LiveRadioTrack:\n case ContentType.TrackPlayable:\n ({ wasAdded, duplicates } = await mutateAddTracksToPlaylist({\n id: playlistId,\n trackIds: [playable.id],\n duplicatesHandling\n }));\n if (duplicates) {\n const { result, data } = await showAddDuplicatesModal(1, false, false);\n if (result == ModalOpenResult.Submit) {\n const handling = data === DuplicatesHandling.SkipDuplicates ? DuplicatesHandling.SkipDuplicates : DuplicatesHandling.AllowDuplicates;\n return await addPlayableToPlaylist(playlistId, playable, handling);\n }\n notifyOperationCancelled(playlistId, null, 1, playable, null);\n return false;\n }\n if (wasAdded) {\n dispatch({\n type: PLAYLIST_TRACK_ADDED,\n payload: {\n playlistId,\n playlist: null,\n trackId: playable.id,\n duplicateTracksAdded: duplicatesHandling === DuplicatesHandling.CheckDuplicates ? null : \"all\"\n }\n });\n\n await messageBus.sync();\n const playlist = await getCachedUserPlaylistPreview(playlistId);\n const undoCallback = playlist?.trackCount !== null ? () => undo(playlistId, 1) : undefined;\n openToast(wasAdded ? AddedToPlaylistToast(1, undoCallback) : NotAddedToPlaylistToast());\n }\n return wasAdded;\n\n case ContentType.TrackRecommendation:\n ({ wasAdded, duplicates, addedCount, duplicatesCount } = await mutateAddRecommendationToPlaylist({\n id: playlistId,\n recommendationID: playable.id,\n duplicatesHandling\n }));\n break;\n\n case ContentType.TrackChart:\n ({ wasAdded, duplicates, addedCount, duplicatesCount } = await mutateAddTrackChartToPlaylist({\n id: playlistId,\n chartId: playable.id,\n duplicatesHandling\n }));\n break;\n\n case ContentType.Album:\n ({ wasAdded, duplicates, addedCount, duplicatesCount } = await mutateAddAlbumToPlaylist({\n id: playlistId,\n albumId: playable.id,\n duplicatesHandling\n }));\n break;\n\n case ContentType.Playlist:\n ({ wasAdded, duplicates, addedCount, duplicatesCount } = await mutateAddPlaylistToPlaylist({\n id: playlistId,\n playlistId: playable.id,\n duplicatesHandling\n }));\n break;\n\n case ContentType.Artist:\n case ContentType.MixedContent:\n {\n const tracks = await getTracks(playable);\n\n if (tracks && tracks.length > 0) {\n ({ wasAdded, duplicates, addedCount, duplicatesCount } =\n await mutateAddTracksToPlaylist({\n id: playlistId,\n trackIds: tracks.map((n) => n.id) ?? [],\n duplicatesHandling\n }));\n } else {\n wasAdded = false;\n addedCount = 0;\n duplicatesCount = 0;\n }\n }\n break;\n\n default:\n log.error({ code: \"web-210519-1225\", msg: DefaultLogMessage.NotImplemented });\n wasAdded = false;\n duplicates = false;\n duplicatesCount = 0;\n addedCount = 0;\n break;\n }\n\n if (duplicates) {\n const { result, data } = await showAddDuplicatesModal(duplicatesCount, true, playable.trackCount === duplicatesCount);\n if (result == ModalOpenResult.Submit) {\n const handling = data === DuplicatesHandling.SkipDuplicates ? DuplicatesHandling.SkipDuplicates : DuplicatesHandling.AllowDuplicates;\n return await addPlayableToPlaylist(playlistId, playable, handling);\n }\n notifyOperationCancelled(playlistId, null, addedCount, playable, null);\n return false;\n }\n\n notifyCollectionAddedAndToast(playlistId, null, wasAdded, addedCount, playable, duplicatesHandling);\n return wasAdded ?? false;\n}\n\nasync function notifyCollectionAddedAndToast(\n playlistId: string,\n playlist: PlaylistPreviewModel | null,\n wasAdded: boolean,\n addedCount: number,\n playable: PlayableModel | null,\n duplicatesHandling: DuplicatesHandling\n) {\n if (wasAdded && addedCount) {\n dispatch({\n type: PLAYLIST_COLLECTION_ADDED,\n payload: {\n playlistId,\n playlist,\n playable,\n trackCount: addedCount,\n duplicateTracksAdded: duplicatesHandling == DuplicatesHandling.SkipDuplicates ? \"unique\"\n : duplicatesHandling == DuplicatesHandling.AllowDuplicates ? \"all\" : null\n }\n });\n await messageBus.sync();\n }\n\n const undoCallback = wasAdded && addedCount ? () => undo(playlistId, addedCount) : undefined;\n openToast(wasAdded ? AddedToPlaylistToast(addedCount, undoCallback) : NotAddedToPlaylistToast());\n}\n\n\nasync function notifyOperationCancelled(\n playlistId: string,\n playlist: PlaylistPreviewModel | null,\n trackCount: number,\n playable: PlayableModel | null,\n tracks: {\n trackId: string;\n track?: TrackPreviewModel;\n }[] | null\n) {\n dispatch({\n type: PLAYLIST_CANCELLED_ADDING_DUPLICATE_ITEMS,\n payload: {\n playlistId,\n playlist,\n trackCount,\n playable,\n tracks\n }\n });\n}\n\nasync function undo(playlistId: string, count: number) {\n // we don't trust any cached trackcount since we dont have a subscription for what other clients might do, so we have to fetch it\n const playlistPreview = await getPlaylistPreview({ id: playlistId });\n const playlistTrackCount = playlistPreview?.model?.trackCount;\n\n if (playlistTrackCount === null || playlistTrackCount === undefined || playlistTrackCount < count) {\n log.error({ code: \"web-220919-1255\", msg: \"Undo add-to-playlist error\", data: { playlistId, trackCount: count } });\n return;\n }\n\n const positions = [...Array(count).keys()].map((indx) => playlistTrackCount - 1 - indx);\n const res = await mutateModifyTracksInPlaylist({\n id: playlistId,\n modifications: positions.map((positionFrom) => ({\n type: TrackModificationType.Remove,\n positionFrom\n }))\n });\n\n if (res?.ok) {\n dispatch({\n type: PLAYLIST_TRACKS_REMOVED,\n payload: {\n playlistId,\n playlist: null,\n positions\n }\n });\n }\n}\n","export * from \"./addToPlaylist\"\nexport * from \"./removeTrackFromPlaylist\"\nexport * from \"./userPlaylistCache\"\n","import { dispatch } from \"global\";\nimport { PLAYLIST_TRACK_ADDED, PLAYLIST_TRACKS_REMOVED, PLAYLIST_TRACKS_ADDED } from \"global/actions\";\nimport { mutateModifyTracksInPlaylist } from \"services/backend\";\nimport { TrackModificationType } from \"generated/graphql-types\";\nimport type { PlaylistModel, TrackPreviewModel } from \"models/domain\";\nimport { openToast } from \"components/organisms/toast\";\nimport { TrackNotRemovedToast, TrackRemovedToast } from \"components/organisms/toast/toasts\";\n\nexport async function removeTracksFromPlaylist(playlistId: string, tracks: TrackPreviewModel[]) {\n if (!playlistId || !tracks || tracks.length == 0) return false;\n\n const sortedTracks = [...tracks].sort((n) => n.position).reverse();\n\n const result = await mutateModifyTracksInPlaylist({\n id: playlistId,\n modifications: sortedTracks.map((track) => ({\n type: TrackModificationType.Remove,\n positionFrom: track.position\n }))\n });\n\n if (result?.ok) {\n dispatch({\n type: PLAYLIST_TRACKS_REMOVED,\n payload: {\n playlistId,\n playlist: result.playlist,\n positions: sortedTracks.map((n) => n.position)\n }\n });\n\n const onUndo = async () => {\n const undoneResult = await mutateModifyTracksInPlaylist({\n id: playlistId,\n modifications: sortedTracks.reverse().map((track) => ({\n type: TrackModificationType.Insert,\n positionTo: track.position,\n trackId: track.id\n }))\n });\n if (undoneResult?.ok) {\n if (tracks.length === 1) {\n dispatch({\n type: PLAYLIST_TRACK_ADDED,\n payload: {\n playlistId,\n playlist: undoneResult.playlist,\n trackId: tracks[0].id,\n position: tracks[0].position,\n track: tracks[0],\n duplicateTracksAdded: null\n }\n });\n } else {\n dispatch({\n type: PLAYLIST_TRACKS_ADDED,\n payload: {\n playlistId,\n playlist: undoneResult.playlist,\n duplicateTracksAdded: null,\n tracks: tracks.map((track) => ({\n trackId: track.id,\n position: track.position,\n track\n }))\n }\n });\n }\n }\n };\n\n openToast(TrackRemovedToast(tracks.length, onUndo));\n } else {\n openToast(TrackNotRemovedToast(tracks.length));\n }\n\n return result?.ok ?? false;\n}\n\nexport async function removeTrackFromPlaylist(track: TrackPreviewModel | null, playlist: PlaylistModel | null): Promise<boolean> {\n if (!track || !playlist) return false;\n return await removeTracksFromPlaylist(playlist.id, [track]);\n}\n","import { useSelector } from \"react-redux\";\nimport { dispatch, messageBus, store } from \"global\";\nimport {\n PLAYLIST_COLLECTION_ADDED,\n PLAYLIST_CREATED,\n PLAYLIST_DELETED,\n PLAYLIST_MODIFIED,\n PLAYLIST_TRACK_ADDED,\n PLAYLIST_TRACKS_ADDED,\n PLAYLIST_TRACKS_REMOVED,\n PLAYLIST_TRACK_REORDERED,\n UPDATE_CACHED_PLAYLISTS,\n USER_CHANGED,\n USER_LOGGED_IN,\n USER_PROFILES_CHANGED\n} from \"global/actions\";\nimport type { PlaylistCreatedAction } from \"global/actions/actionTypes\";\nimport { locale } from \"global/constants\";\nimport { getOwnPlaylists, getPlaylistPreview } from \"services/backend\";\nimport { log } from \"services/logger\";\nimport type { PlaylistVisibility } from \"generated/graphql-types\";\nimport { CombinedPlaylistsSorting } from \"generated/graphql-types\";\nimport type { RootModel } from \"models/app\";\nimport { LoginState } from \"models/app\";\nimport type { PlayableModel, PlaylistPreviewModel } from \"models/domain\";\nimport { useArrayMemo } from \"components/shared/hooks\";\n\nconst enableMoveToTop = true;\n\nexport function useCachedUserPlaylistPreview(playlistId: string) {\n const previews = useSelector((root: RootModel) => root.cache.userPlaylistPreviews);\n return previews?.find((n) => n.id == playlistId) ?? null;\n}\n\nexport async function getCachedUserPlaylistPreview(playlistId: string): Promise<PlaylistPreviewModel | null> {\n return store.getState().cache.userPlaylistPreviews?.find((n) => n.id == playlistId) ?? null;\n}\n\nexport function useUserPlaylists(sorting: CombinedPlaylistsSorting) {\n const data = useSelector((root: RootModel) => root.cache.userPlaylistPreviews);\n const memo = useArrayMemo(() => {\n if (!data) return [];\n switch (sorting) {\n case CombinedPlaylistsSorting.CreatedDate:\n return [...data].sort((a, b) => (b?.createdAt?.getTime() ?? 0) - (a?.createdAt?.getTime() ?? 0));\n case CombinedPlaylistsSorting.Title:\n return [...data].sort((a, b) => (a?.title ?? \"\").localeCompare(b.title, locale));\n default:\n return data;\n }\n }, [data]);\n return data ? memo : null;\n}\n\nexport function initCachedUserPlaylists() {\n messageBus.subscribeEvery(USER_LOGGED_IN, load);\n messageBus.subscribeEvery(USER_CHANGED, load);\n messageBus.subscribeEvery(USER_PROFILES_CHANGED, (evt) => {\n if (evt.payload.currentProfileChanged) {\n load();\n }\n });\n messageBus.subscribeEvery(PLAYLIST_CREATED, insert);\n messageBus.subscribeEvery(PLAYLIST_DELETED, (msg) => removeFromCache(msg.payload.playlistId));\n if (enableMoveToTop) {\n messageBus.subscribeEvery(PLAYLIST_MODIFIED, (msg) =>\n moveToTopOfCacheAndOptionallyUpdate(msg.payload.playlistId, msg.payload.playlist?.title, null, msg.payload.playlist?.visibility)\n );\n messageBus.subscribeEvery(PLAYLIST_COLLECTION_ADDED, (msg) => onCollectionAdded(msg.payload.playlistId, msg.payload.playable, msg.payload.trackCount));\n messageBus.subscribeEvery(PLAYLIST_TRACK_ADDED, (msg) => moveToTopOfCacheAndOptionallyUpdate(msg.payload.playlistId));\n messageBus.subscribeEvery(PLAYLIST_TRACKS_ADDED, (msg) => moveToTopOfCacheAndOptionallyUpdate(msg.payload.playlistId));\n messageBus.subscribeEvery(PLAYLIST_TRACKS_REMOVED, (msg) => onTracksRemoved(msg.payload.playlistId));\n messageBus.subscribeEvery(PLAYLIST_TRACK_REORDERED, (msg) => moveToTopOfCacheAndOptionallyUpdate(msg.payload.playlistId));\n }\n\n try {\n load();\n } catch (e) {\n log.error({ code: \"web-220221-1329\", msg: \"error in update cached user playlists service\", error: e });\n }\n}\n\nfunction onCollectionAdded(id: string, playable: PlayableModel | null, trackCount: number) {\n const playlist = store.getState().cache.userPlaylistPreviews?.find((n) => n.id == id);\n if (playlist) {\n moveToTopOfCacheAndOptionallyUpdate(id, null, playlist.trackCount == null ? null : (playlist.trackCount + trackCount));\n }\n}\n\nfunction onTracksRemoved(id: string) {\n const playlist = store.getState().cache.userPlaylistPreviews?.find((n) => n.id == id);\n if (playlist) {\n moveToTopOfCacheAndOptionallyUpdate(id, null, playlist.trackCount == null ? null : Math.max(0, playlist.trackCount - 1));\n }\n}\n\nfunction moveToTopOfCacheAndOptionallyUpdate(id: string, title: string | null = null, trackCount: number | null = null, visibility: PlaylistVisibility | null = null) {\n let playlists = store.getState().cache.userPlaylistPreviews;\n if (playlists) {\n const index = playlists.findIndex((n) => n.id == id);\n if (index != -1) {\n playlists = [playlists[index], ...playlists.filter((n) => n.id !== id)];\n if (\n (title !== null && title !== playlists[0].title) ||\n (trackCount !== null && trackCount !== playlists[0].trackCount) ||\n (visibility !== null && visibility !== playlists[0].visibility)\n ) {\n playlists[0] = {\n ...playlists[0],\n title: title ?? playlists[0].title,\n trackCount: trackCount ?? playlists[0].trackCount,\n visibility: visibility ?? playlists[0].visibility\n };\n }\n dispatch({\n type: UPDATE_CACHED_PLAYLISTS,\n payload: {\n playlists\n }\n });\n }\n }\n}\n\nfunction removeFromCache(id: string) {\n let playlists = store.getState().cache.userPlaylistPreviews;\n if (playlists) {\n const index = playlists.findIndex((n) => n.id == id);\n if (index != -1) {\n playlists = playlists.filter((n) => n.id !== id);\n dispatch({\n type: UPDATE_CACHED_PLAYLISTS,\n payload: {\n playlists\n }\n });\n }\n }\n}\n\nasync function insert(msg: PlaylistCreatedAction) {\n const playlist = msg.payload.playlist ?? (await getPlaylistPreview({ id: msg.payload.playlistId }))?.model;\n if (playlist) {\n const playlists = [playlist, ...(store.getState().cache.userPlaylistPreviews ?? [])];\n dispatch({\n type: UPDATE_CACHED_PLAYLISTS,\n payload: {\n playlists\n }\n });\n }\n}\n\nfunction load() {\n const isLoggedIn = store.getState().user.state === LoginState.LoggedIn;\n if (isLoggedIn) {\n getOwnPlaylists().then((result) => {\n dispatch({\n type: UPDATE_CACHED_PLAYLISTS,\n payload: {\n playlists: result.model?.items ?? []\n }\n });\n });\n } else {\n dispatch({\n type: UPDATE_CACHED_PLAYLISTS,\n payload: {\n playlists: null\n }\n });\n }\n}\n","import type { BeforeInstallPromptEvent } from \"./BeforeInstallPromptEvent\";\nimport { dispatch } from \"global\";\nimport { appSettingsShared } from \"shared/services\";\nimport { NOTIFICATION_PWA_INSTALL_MESSAGE_WAITING } from \"global/actions\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\n\nlet promptEvent: BeforeInstallPromptEvent | null = null;\nlet promptEventOpen = false;\n\nconst canPromptUserForPWAInstall = () => promptEvent != null;\n\nexport const isAppRunAsPWA = () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isStandaloneNavigator = (navigator as any).standalone === true;\n const isStandaloneMedia = window.matchMedia(\"(display-mode: standalone)\").matches;\n\n const isStandalone = isStandaloneNavigator || isStandaloneMedia;\n return isStandalone;\n};\n\nexport function isAppRunAsPWAChange(callback: (value: boolean) => void): () => void {\n const media = window.matchMedia(\"(display-mode: standalone)\");\n const listener = () => callback(isAppRunAsPWA());\n\n media.addEventListener(\"change\", listener);\n return () => media.removeEventListener(\"change\", listener);\n}\n\nexport function initPWAService() {\n if (!enablePWA()) return;\n\n window.addEventListener(\"beforeinstallprompt\", (e: unknown) => {\n const prompt = e as BeforeInstallPromptEvent;\n promptEvent = prompt;\n prompt.preventDefault();\n });\n\n window.addEventListener(\"appinstalled\", () => {\n dispatch({ type: NOTIFICATION_PWA_INSTALL_MESSAGE_WAITING, payload: { waiting: true } });\n });\n}\n\nexport enum PWAInstallOption {\n InstallAvailable = \"InstallAvailable\",\n InstallPromptOpen = \"InstallPromptOpen\",\n Installed = \"Installed\",\n None = \"None\"\n}\n\nexport const getPWAInstallOption = (): PWAInstallOption => {\n if (isAppRunAsPWA()) return PWAInstallOption.Installed;\n if (promptEventOpen) return PWAInstallOption.InstallPromptOpen;\n if (!canPromptUserForPWAInstall()) return PWAInstallOption.None;\n\n return PWAInstallOption.InstallAvailable;\n};\n\nexport const promptUserForPWAInstall = async () => {\n const prompt = promptEvent;\n if (prompt == null) {\n log.error({ code: \"web-210304-2003\", msg: DefaultLogMessage.UnexpectedNull });\n return;\n }\n\n promptEvent = null;\n promptEventOpen = true;\n\n prompt.prompt();\n const userChoice = await prompt.userChoice;\n\n promptEventOpen = false;\n const accepted = userChoice.outcome === \"accepted\";\n\n if (accepted) {\n log.info({ code: \"web-210305-1745\", msg: \"PWA install accepted. browser might close this window\" });\n }\n return accepted;\n};\n\nlet _enablePWA: boolean | null = null;\n\nfunction enablePWA(): boolean {\n if (_enablePWA == null) _enablePWA = getEnablePWA();\n return _enablePWA;\n}\n\nfunction getEnablePWA(): boolean {\n if (!appSettingsShared.EnablePWA) return false;\n\n // let origin = window.location.origin.toLowerCase();\n // origin = origin.replace(\"http://\", \"\");\n // origin = origin.replace(\"https://\", \"\");\n\n // if (origin.includes(\"yousee.dk\") && origin != \"musik.yousee.dk\") return false;\n // if (origin.includes(\"telmore.dk\") && origin != \"musik.telmore.dk\") return false;\n\n return true;\n}\n","import { Environment } from \"./remoteConfigService\";\n\nexport function getAppMaintenanceEnvKey(env: Environment | null) {\n if (env == null) return null;\n switch (env) {\n case Environment.Local:\n return \"WebLocalMaintenanceEnabled\";\n case Environment.Stage:\n return \"WebStageMaintenanceEnabled\";\n case Environment.Test:\n return \"WebTestMaintenanceEnabled\";\n case Environment.Dev:\n return \"WebDevMaintenanceEnabled\";\n case Environment.Prod:\n return \"WebProdMaintenanceEnabled\";\n }\n}\n","import { MaintenanceConfig } from \"./remoteConfigService\";\n\nexport function getEmptyMaintenanceConfig(): MaintenanceConfig {\n return {\n WebMaintenanceEnabled: false,\n AppMaintenanceBannerTitle: \"\",\n AppMaintenanceLinkTitle: \"\",\n AppMaintenanceLinkUrl: \"\",\n AppMaintenancePopupText: \"\",\n AppMaintenancePopupTitle: \"\"\n };\n}\n","export * from \"./remoteConfigService\";\n","import type { FirebaseApp } from \"firebase/app\";\nimport type { RemoteConfig as FirebaseRemoteConfig, Value as FirebaseValue } from \"firebase/remote-config\";\nimport { getAppMaintenanceEnvKey } from \"./getAppMaintenanceEnvKey\";\nimport { getEmptyMaintenanceConfig } from \"./getEmptyMaintenanceConfig\";\nimport { dispatch } from \"global\";\nimport { NOTIFICATION_BANNER_TOGGLE, NOTIFICATION_MAINTENANCE_DATA_UPDATE } from \"global/actions\";\nimport { replaceAllBackwardsCompatible } from \"services/formatters\";\nimport { getOrCreateFbApp } from \"services/logger/initFBLoggerService\";\nimport { LogTag, DefaultLogMessage, log } from \"services/logger/initLoggerService\";\nimport { BannerWarning } from \"models/app\";\n\nexport enum Environment {\n Local = \"Local\",\n Dev = \"Dev\",\n Test = \"Test\",\n Stage = \"Stage\",\n Prod = \"Prod\"\n}\nexport interface MaintenanceData {\n AppMaintenanceBannerTitle: string;\n AppMaintenanceLinkTitle: string;\n AppMaintenanceLinkUrl: string;\n AppMaintenancePopupText: string;\n AppMaintenancePopupTitle: string;\n}\nexport interface MaintenanceConfig extends MaintenanceData {\n WebMaintenanceEnabled: boolean;\n}\n\ntype FirebaseGetRemoteConfig = (app?: FirebaseApp) => FirebaseRemoteConfig;\ntype FirebaseGetValue = (remoteConfig: FirebaseRemoteConfig, key: string) => FirebaseValue;\ntype FirebaseFetchAndActivate = (remoteConfig: FirebaseRemoteConfig) => Promise<boolean>;\n\nconst getFbRemoteConfig: () => FirebaseRemoteConfig | null = () => {\n const app = getOrCreateFbApp();\n if (!app) {\n log.warn({ code: \"web-210902-1351\", msg: \"blocked\" });\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fb_GetRemoteConfig: FirebaseGetRemoteConfig | null = (<any>window).trackingFbase?.getRemoteConfig ?? null;\n\n if (!fb_GetRemoteConfig) {\n log.warn({ code: \"web-220429-1651\", msg: \"blocked\" });\n return null;\n }\n\n const fbRemoteConfig = fb_GetRemoteConfig(app);\n if (!fbRemoteConfig) {\n log.error({ code: \"web-230427-1537\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n return fbRemoteConfig;\n};\n\nconst remoteConfigUpdateIntervalMs = 5 * 60 * 1000;\n\nfunction getEnvironment(fbRemoteConfig: FirebaseRemoteConfig): Environment | null {\n const host = window.location.host;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fb_GetValue: FirebaseGetValue | null = (<any>window).trackingFbase?.getValue ?? null;\n if (!fb_GetValue) {\n log.warn({ code: \"web-220429-1654\", msg: \"blocked\" });\n return null;\n }\n\n const match = (key: string) => {\n let domainStr = fb_GetValue(fbRemoteConfig, key).asString();\n if (domainStr === \"\") {\n log.warn({ code: \"web-220927-1103\", msg: \"no domain - empty string\", data: { key } });\n return false;\n }\n if (domainStr == null) {\n log.warn({ code: \"web-220927-1104\", msg: \"no domain - null\", data: { key } });\n return false;\n }\n\n domainStr = replaceAllBackwardsCompatible(domainStr, \"http://\", \"\");\n domainStr = replaceAllBackwardsCompatible(domainStr, \"https://\", \"\");\n\n const match = host == domainStr;\n\n log.debug([LogTag.RemoteConfig], () => ({\n code: \"web-220804-1230\",\n msg: `match`,\n data: {\n key,\n domainStr,\n host\n }\n }));\n\n return match;\n };\n\n if (match(\"WebLocalDomain\")) return Environment.Local;\n if (match(\"WebDevDomain\")) return Environment.Dev;\n if (match(\"WebTestDomain\")) return Environment.Test;\n if (match(\"WebStageDomain\")) return Environment.Stage;\n if (match(\"WebProdDomain\")) return Environment.Prod;\n\n return null;\n}\n\nfunction getMaintenanceConfig(fbRemoteconfig: FirebaseRemoteConfig): MaintenanceConfig {\n if (!fbRemoteconfig) return getEmptyMaintenanceConfig();\n\n const environment = getEnvironment(fbRemoteconfig);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fb_GetValue: FirebaseGetValue | null = (<any>window).trackingFbase?.getValue ?? null;\n if (fb_GetValue == null) {\n log.warn({ code: \"web-230427-1541\", msg: \"blocked\" });\n return getEmptyMaintenanceConfig();\n }\n const MaintenanceEnabledKey = getAppMaintenanceEnvKey(environment);\n\n log.debug([LogTag.RemoteConfig], () => ({\n code: \"web-220804-1232\",\n msg: `get maintenance banner enabled key`,\n data: { key: MaintenanceEnabledKey }\n }));\n\n return {\n WebMaintenanceEnabled: MaintenanceEnabledKey == null ? false : fb_GetValue(fbRemoteconfig, MaintenanceEnabledKey).asBoolean(),\n AppMaintenanceBannerTitle: fb_GetValue(fbRemoteconfig, \"AppMaintenanceBannerTitle\").asString(),\n AppMaintenanceLinkTitle: fb_GetValue(fbRemoteconfig, \"AppMaintenanceLinkTitle\").asString(),\n AppMaintenanceLinkUrl: fb_GetValue(fbRemoteconfig, \"AppMaintenanceLinkUrl\").asString(),\n AppMaintenancePopupText: fb_GetValue(fbRemoteconfig, \"AppMaintenancePopupText\").asString(),\n AppMaintenancePopupTitle: fb_GetValue(fbRemoteconfig, \"AppMaintenancePopupTitle\").asString()\n };\n}\nconst setMaintenanceConfig = (maintenanceConfig: MaintenanceConfig) => {\n log.debug([LogTag.RemoteConfig], () => ({ code: \"web-220804-1233\", msg: `config`, data: { config: maintenanceConfig } }));\n\n const data: MaintenanceData = {\n AppMaintenanceBannerTitle: maintenanceConfig.AppMaintenanceBannerTitle,\n AppMaintenanceLinkTitle: maintenanceConfig.AppMaintenanceLinkTitle,\n AppMaintenanceLinkUrl: maintenanceConfig.AppMaintenanceLinkUrl,\n AppMaintenancePopupText: maintenanceConfig.AppMaintenancePopupText,\n AppMaintenancePopupTitle: maintenanceConfig.AppMaintenancePopupTitle\n };\n\n dispatch({ type: NOTIFICATION_MAINTENANCE_DATA_UPDATE, payload: { data } });\n dispatch({\n type: NOTIFICATION_BANNER_TOGGLE,\n payload: {\n show: maintenanceConfig.WebMaintenanceEnabled,\n warning: BannerWarning.MaintenanceBanner\n }\n });\n};\n\nasync function fetchGeneralConfigAndRun() {\n const fbRemoteConfig = getFbRemoteConfig();\n\n if (!fbRemoteConfig) return null;\n\n fbRemoteConfig.settings.minimumFetchIntervalMillis = 0;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fetchAndActivate: FirebaseFetchAndActivate | null = (<any>window).trackingFbase?.fetchAndActivate ?? null;\n\n if (!fetchAndActivate) {\n log.warn({ code: \"web-220429-1652\", msg: \"blocked\" });\n return null;\n }\n\n try {\n await fetchAndActivate(fbRemoteConfig);\n\n const maintenanceConfig = getMaintenanceConfig(fbRemoteConfig);\n setMaintenanceConfig(maintenanceConfig);\n } catch (e) {\n if (navigator.onLine) log.error({ code: \"web-210903-1135\", msg: \"error when fetching config\", error: e });\n return null;\n }\n}\n\nexport function initRemoteConfigService() {\n try {\n const run = () => {\n fetchGeneralConfigAndRun();\n setTimeout(run, remoteConfigUpdateIntervalMs);\n };\n run();\n } catch (e) {\n log.error({ code: \"web-210903-1130\", msg: \"error in switch\", error: e });\n }\n}\n","export * from \"./resourceProductPageService\";\nexport * from \"./resourceLinkService\";\nexport * from \"./resourceService\";","import type { ProductPageType } from \"./resourceProductPageService\";\nimport { translate, translateWithReplacement } from \"global/config\";\nimport { environment } from \"services/environment\";\nimport { toLocaleStringUsingLocalization } from \"services/formatters\";\nimport { getLongTimeSpanFromSecondsHHMM, getShortTimeSpanFromSecondsHHMMSS, getNotificationsDateOrTimeAgo, getYearYYYY } from \"services/formatters/timeFormatters\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport { navigation } from \"services/navigation\";\nimport type { QueueTrackModel } from \"models/app/player/input\";\nimport type { ContextResourceModel, LinkContextModel, PageContextModel, PreviewContextModel, SectionContextModel } from \"models/app/resourceContextModel\";\nimport { MixRadioLinkParentType, NotificationType } from \"models/domain\";\nimport type {\n LiveRadioModel,\n LiveRadioTrackModel,\n SearchAlbumResultsModel,\n SearchArtistResultsModel,\n SearchPlaylistResultsModel,\n SearchTrackResultsModel,\n ArtistModel,\n ArtistSimilarArtistsModel,\n ArtistTracksModel,\n AlbumArtistAlbumsModel,\n AlbumPageModel,\n AlbumModel,\n ArtistAlbumsModel,\n ArtistAlbumsAppearsOnModel,\n ArtistRadioModel,\n ArtistRadioPageModel,\n ArtistSinglesModel,\n ChartModel,\n ChartPageModel,\n LiveRadioCategoryModel,\n LiveRadioPlayableModel,\n MixRadioModel,\n MixedContentModel,\n MixedContentPreviewModel,\n MixedContentTrackModel,\n PlaylistCategoryModel,\n PlaylistModel,\n PlaylistPageModel,\n RecommendationModel,\n LocationContentType,\n ResourceModel,\n ResourcePageModel,\n SearchTrackResultModel,\n TrackPlayableModel,\n TrackRadioModel,\n TrackRadioPageModel,\n MixRadioCategoryPreviewModel\n} from \"models/domain\";\nimport type { BannerPreviewModel } from \"models/domain/BannerModel\";\nimport type { LayoutPageModel, LayoutItemModel } from \"models/domain/layoutPage\";\nimport type { MultiselectionTracksPlayModel } from \"models/domain/MultiselectionTracksModel\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\nimport { PreviewDisplayType } from \"components/molecules/preview\";\n\nconst getMixedContentSubtitleText = (resource: MixedContentModel | null) => {\n if (resource?.mixedContentType === ContentType.MyMusicTracks) return text(translate(\"Tracks\"));\n return text(resource?.subtitle ?? undefined);\n};\n\nconst getRecommendationSubtitleText = (resource: RecommendationModel | null) => text(resource?.subtitle);\n\nconst getYearText = (year?: number) => text(year?.toFixed());\n\nconst getFollowersText = (followers?: number) => text(followers != undefined ? `${translate(\"PlaylistFollowers\")} ${toLocaleStringUsingLocalization(followers)}` : undefined);\n\nconst getDurationShortTimeSpanText = (duration: number | null | undefined) => text(duration ? getShortTimeSpanFromSecondsHHMMSS(duration) : undefined);\n\nconst getDurationLongTimeSpanText = (duration?: number) => text(duration != undefined ? getLongTimeSpanFromSecondsHHMM(duration) : undefined);\n\nconst getTimeAgoTimeSpanText = (duration?: number) => text(duration != undefined ? getNotificationsDateOrTimeAgo(duration) : undefined);\n\nconst getNotInSubscriptionText = () => text(\"Ikke tilgængeligt længere\");\n\nconst getReleaseYearText = (releaseDate: Date | null | undefined) => text(releaseDate ? getYearYYYY(releaseDate) : undefined);\n\nconst getTrackCountText = (trackCount: number | null | undefined) =>\n text(trackCount !== undefined && trackCount !== null ? `${trackCount.toFixed()} ${(trackCount === 1 ? translate(\"Track\") : translate(\"Tracks\")).toLowerCase()}` : undefined); // add track/tracks as lower case\n\nconst getArtistRadioDescriptionText = (resource: ArtistRadioModel | null) => text(resource ? getArtistRadioSubtitle(resource) : undefined);\n\nconst getAlbumLink = (resource: AlbumModel | null | undefined) =>\n link(ContentType.Album, resource, resource?.title, resource ? navigation.templates.album(resource.id) : undefined);\n\nconst getAlbumArtistAlbumsLink = (resource: AlbumArtistAlbumsModel | null | undefined) =>\n link(ContentType.AlbumArtistAlbums, resource, getMoreFromTitle(resource?.artistName), resource ? navigation.templates.albumArtistAlbums(resource.id) : undefined);\n\nconst getArtistLink = (resource: ArtistModel | null | undefined) =>\n link(ContentType.Artist, resource, resource?.name, resource ? navigation.templates.artist(resource.id) : undefined);\n\nconst getArtistAndFeaturedArtistsLinks = (artist: ArtistModel | null | undefined, featuredArtists: ArtistModel[] | null | undefined) => {\n const links = [link(ContentType.Artist, artist, artist?.name, artist ? navigation.templates.artist(artist.id) : undefined)];\n featuredArtists?.forEach((fa) => {\n const item = link(ContentType.Artist, fa, fa.name, navigation.templates.artist(fa.id));\n links.push(item);\n });\n return links;\n};\n\nconst getArtistTracksLink = (resource: ArtistTracksModel | null | undefined, section?: SectionContextModel) => {\n const getArtistPopularTracksTitle = () => {\n if (section?.type === ContentType.Queue) {\n if (resource?.type === DomainModelType.Page) {\n return resource.artist.name;\n }\n }\n return translate(\"PopularSongs\");\n };\n\n return link(ContentType.ArtistTracks, resource, getArtistPopularTracksTitle(), resource ? navigation.templates.artistPopularTracks(resource.id) : undefined);\n};\n\nconst getArtistAlbumsLink = (resource: ArtistAlbumsModel | null | undefined) =>\n link(ContentType.ArtistAlbums, resource, translate(\"Album\"), resource ? navigation.templates.artistAlbums(resource.id) : undefined);\n\nconst getArtistAlbumsAppearsOnLink = (resource: ArtistAlbumsAppearsOnModel | null | undefined) =>\n link(ContentType.ArtistAppearsOn, resource, translate(\"AppearsOn\"), resource ? navigation.templates.ArtistAlbumsAppearsOn(resource.id) : undefined);\n\nconst getArtistSimilarArtistsLink = (resource: ArtistSimilarArtistsModel | null | undefined) =>\n link(ContentType.ArtistSimilarArtists, resource, translate(\"SimilarArtists\"), resource ? navigation.templates.artistSimilarArtists(resource.id) : undefined);\n\nconst getArtistSinglesLink = (resource: ArtistSinglesModel | null | undefined) =>\n link(ContentType.ArtistSingles, resource, translate(\"SinglesAndEps\"), resource ? navigation.templates.artistSingles(resource.id) : undefined);\n\nconst getArtistRadioLink = (resource: ArtistRadioModel | null | undefined) =>\n link(ContentType.ArtistRadio, resource, resource ? getArtistRadioTitle(resource) : undefined, resource ? navigation.templates.artistRadio(resource.id) : undefined);\n\nconst getChartLink = (resource: ChartModel | null | undefined) =>\n link(ContentType.Chart, resource, resource?.title, resource ? navigation.templates.chart(resource.id) : undefined);\n\nconst getLiveRadioCategoryLink = (resource: LiveRadioCategoryModel | null | undefined) =>\n link(ContentType.LiveRadioCategory, resource, resource?.title, resource ? navigation.templates.liveRadioCategory(resource.id) : undefined);\n\nconst getLiveRadioPlayableLink = (resource: LiveRadioPlayableModel | null | undefined) =>\n link(ContentType.LiveRadioPlayable, resource, resource?.liveRadio.title, resource ? navigation.templates.liveRadio(resource.id) : undefined);\n\nconst getLiveRadioLink = (resource: LiveRadioModel | null | undefined) =>\n link(ContentType.LiveRadio, resource, resource?.title, resource ? navigation.templates.liveRadio(resource.id) : undefined);\n\nconst getMixRadiosLink = (title: string | null) => link(ContentType.MixRadios, null, title ?? translate(\"AllMixRadiosPageTitle\"), navigation.templates.mixRadios());\n\nconst getMixRadioLink = (resource: MixRadioModel | null) => {\n const type = ContentType.MixRadio;\n switch (resource?.parent.type) {\n case MixRadioLinkParentType.LayoutPageItem:\n return link(type, resource, resource.title, navigation.templates.layoutPageItemResource(resource.parent.pageId, resource.parent.itemId, resource.id));\n case MixRadioLinkParentType.MixRadioCategory:\n return link(type, resource, resource.title, navigation.templates.mixRadioCategoryMixRadio(resource.parent.categoryId, resource.id));\n case MixRadioLinkParentType.MixRadios:\n case MixRadioLinkParentType.Notification:\n return link(type, resource, resource.title, navigation.templates.mixRadiosMixRadio(resource.id));\n case undefined:\n return link(type, resource, undefined, undefined);\n }\n};\n\nconst getMixRadioCategoryLink = (resource: MixRadioCategoryPreviewModel | null) =>\n link(ContentType.MixRadioCategory, resource, resource?.title, resource ? navigation.templates.mixRadioCategory(resource.id) : undefined);\n\nconst getLayoutPageLink = (resource: LayoutPageModel | null) => {\n if (!resource) return link(ContentType.LayoutPage, undefined, undefined, undefined);\n if (resource && resource.id === environment.apiFrontPageId) return getFrontPageLink();\n if (resource && resource.id === environment.apiRadioPageId) return getRadioPageLink();\n return link(ContentType.LayoutItem, null, resource.title, navigation.templates.layoutPage(resource.id));\n};\n\nconst getRadioPageLink = () => link(ContentType.Radio, null, translate(\"NavBarStations\"), navigation.templates.radio());\n\nconst getFrontPageLink = () => link(ContentType.FrontPage, null, translate(\"NavBarFrontPage\"), navigation.templates.frontPage());\nconst getSettingsPageLink = () => link(ContentType.SettingsPage, null, translate(\"SettingsTitle\"), navigation.templates.settingsPage());\nconst getProfilesPageLink = () => link(ContentType.UserHistory, null, translate(\"ManageProfiles\"), navigation.templates.profilesPage());\n\nconst getPlaylistLink = (resource: PlaylistModel | null) =>\n link(ContentType.Playlist, resource, resource?.title, resource ? navigation.templates.playlist(resource.id) : undefined);\n\nconst getPlaylistCategoryLink = (resource: PlaylistCategoryModel | null) =>\n link(ContentType.PlaylistCategory, resource, resource?.title, resource ? navigation.templates.playlistCategory(resource.id) : undefined);\n\nconst getQueueTrackPlayableLink = (resource: QueueTrackModel | null) =>\n link(ContentType.QueueTrack, resource, resource?.track.title, resource ? navigation.templates.track(resource.track.id) : undefined);\n\nconst getSearchTrackLink = (resource: SearchTrackResultModel | null) =>\n link(ContentType.SearchResultTrack, resource, resource?.track?.title, resource?.track ? navigation.templates.track(resource.track.id) : undefined);\n\nconst getTrackPlayableLink = (resource: TrackPlayableModel | null) =>\n link(ContentType.TrackPlayable, resource, resource?.track.title, resource ? navigation.templates.track(resource.track.id) : undefined);\n\nconst getLiveRadioTrackLink = (resource: LiveRadioTrackModel | null) =>\n link(ContentType.LiveRadioTrack, resource, resource?.track.title, resource ? navigation.templates.track(resource.track.id) : undefined);\n\nconst getMyMusicAlbumsLink = () => link(ContentType.MyMusicAlbums, null, translate(\"MyMusicAlbumsTitle\"), navigation.templates.myMusicAlbums());\n\nconst getMyMusicArtistsLink = () => link(ContentType.MyMusicArtists, null, translate(\"MyMusicArtistTitle\"), navigation.templates.myMusicArtists());\n\nconst getMyMusicPlaylistsLink = () => link(ContentType.MyMusicPlaylists, null, translate(\"MyMusicPlaylistsTitle\"), navigation.templates.myMusicPlaylists());\n\nconst getMyMusicTracksLink = () => link(ContentType.MyMusicTracks, null, translate(\"MyMusicTracksTitle\"), navigation.templates.myMusicTracks());\n\nconst getLayoutPageItemLink = (resource: LayoutItemModel | null) =>\n link(ContentType.LayoutItem, resource, resource?.name ?? undefined, resource ? navigation.templates.layoutPageItem(resource.pageId, resource.id) : undefined);\n\nconst getMixedContentLink = (resource: MixedContentPreviewModel | null): LinkModel => {\n if (resource == null) return text(undefined);\n\n const type = resource.mixedContentType;\n const id = resource.mixedContentId;\n let title = resource.title;\n\n switch (type) {\n case ContentType.MyMusicTracks:\n title = translate(\"MyMusicTitle\");\n return link(ContentType.MyMusicTracks, resource, title, navigation.templates.myMusicTracks());\n case ContentType.UserRecommendations:\n return link(ContentType.Recommendation, resource, title, navigation.templates.userRecommendations());\n case ContentType.UserHistory:\n return link(ContentType.UserHistory, resource, title, navigation.templates.userHistory());\n case ContentType.YourMixesPage:\n return link(ContentType.TrackRecommendation, resource, title, navigation.templates.yourMixes());\n }\n\n if (id == null) {\n log.error({ code: \"web-210216-1051\", msg: \"id is null\", data: { contentType: resource.contentType } });\n return text(title);\n }\n\n switch (type) {\n case ContentType.Album:\n return link(ContentType.Album, resource, title, navigation.templates.album(id));\n case ContentType.Artist:\n return link(ContentType.Artist, resource, title, navigation.templates.artist(id));\n case ContentType.ArtistRadio:\n return link(ContentType.ArtistRadio, resource, title, navigation.templates.artistRadio(id));\n case ContentType.Playlist:\n return link(ContentType.Playlist, resource, title, navigation.templates.playlist(id));\n case ContentType.MixRadio:\n return link(ContentType.MixRadio, resource, title, navigation.templates.mixRadiosMixRadio(id));\n case ContentType.TrackPlayable:\n return link(ContentType.TrackPlayable, resource, title, navigation.templates.track(id));\n case ContentType.TrackChart:\n return link(ContentType.TrackChart, resource, title, navigation.templates.chart(id));\n case ContentType.TrackRadio:\n return link(ContentType.TrackRadio, resource, title, navigation.templates.trackRadio(id));\n case ContentType.LiveRadio:\n return link(ContentType.LiveRadio, resource, title, navigation.templates.liveRadio(id));\n case ContentType.LiveRadioCategory:\n return link(ContentType.LiveRadioCategory, resource, title, navigation.templates.liveRadioCategory(id));\n }\n type;\n};\n\nconst getMixedContentTrackLink = (resource: MixedContentTrackModel | null) =>\n link(ContentType.MixedContentTrack, resource, resource?.track?.title, resource?.track ? navigation.templates.track(resource.track.id) : undefined);\n\nconst getRecommendationLink = (resource: RecommendationModel | null) => {\n const url = (() => {\n switch (resource?.owner) {\n case ContentType.UserHistory:\n return navigation.templates.userHistoryRecommendation(resource.id);\n case ContentType.UserRecommendations:\n return navigation.templates.userRecommendationsRecommendation(resource.id);\n case undefined:\n return undefined;\n }\n })();\n return link(resource?.contentType ?? ContentType.Recommendation, resource, resource?.title, url);\n};\n\nconst getRecommendationsLink = () => link(ContentType.UserRecommendations, null, translate(\"GlobalUserRecommendationsTitle\"), navigation.templates.userRecommendations());\n\nconst getYourHistoryLink = () => link(ContentType.UserHistory, null, translate(\"GlobalUserHistoryTitle\"), navigation.templates.userHistory());\n\nconst getSearchLink = () => link(ContentType.Search, null, translate(\"SearchExploreTitle\"), navigation.templates.search());\n\nconst getSearchAlbumResultsLink = (resource: SearchAlbumResultsModel | null) =>\n link(ContentType.SearchAlbumResults, resource, translate(\"Albums\"), resource ? navigation.templates.searchAlbumResults(resource.criterion) : undefined);\n\nconst getSearchArtistResultsLink = (resource: SearchArtistResultsModel | null) =>\n link(ContentType.SearchArtistResults, resource, translate(\"Artists\"), resource ? navigation.templates.searchArtistResults(resource.criterion) : undefined);\n\nconst getSearchPlaylistResultsLink = (resource: SearchPlaylistResultsModel | null) =>\n link(ContentType.SearchPlaylistResults, resource, translate(\"Playlists\"), resource ? navigation.templates.searchPlaylistResults(resource.criterion) : undefined);\n\nconst getSearchTrackResultsLink = (resource: SearchTrackResultsModel | null) =>\n link(ContentType.SearchTrackResults, resource, translate(\"Tracks\"), resource ? navigation.templates.searchTrackResults(resource.criterion) : undefined);\n\nconst getTrackRadioLink = (resource: TrackRadioModel | null) =>\n link(ContentType.TrackRadio, resource, resource ? getTrackRadioTitle(resource) : undefined, resource ? navigation.templates.trackRadio(resource.id) : undefined);\n\nfunction linkContext(link: LinkModel, preview?: PreviewContextModel): LinkContextModel {\n return preview ? { ...link, preview } : link;\n}\n\nfunction link(type: LocationContentType, resource: ResourceModel | null | undefined, text: string | undefined, url: string | undefined): LinkModel {\n return { type, resource: resource ?? undefined, text, url };\n}\n\nfunction text(text: string | undefined): LinkModel {\n return { text };\n}\n\nexport function getLinkFromResource(resource: ResourceModel | null, section?: SectionContextModel) {\n if (!resource) return null;\n return getLink(resource.contentType, resource, section);\n}\n\nexport function getLinkFromContext(context: PreviewContextModel | SectionContextModel | PageContextModel) {\n return getLink(context.type, context.resource, \"section\" in context ? context.section : undefined);\n}\n\nexport function getLink(type: LocationContentType, resource: ResourceModel | null | undefined, section?: SectionContextModel): LinkModel | null {\n if (!resource) resource = null;\n\n if (resource?.type) type = resource.contentType;\n\n switch (type) {\n case ContentType.Album:\n if (resource != null && resource.contentType !== ContentType.Album) throw Error();\n return getAlbumLink(resource);\n case ContentType.AlbumArtistAlbums:\n if (resource != null && resource.contentType !== ContentType.AlbumArtistAlbums) throw Error();\n return getAlbumArtistAlbumsLink(resource);\n case ContentType.Artist:\n if (resource != null && resource.contentType !== ContentType.Artist) throw Error();\n return getArtistLink(resource);\n case ContentType.ArtistAppearsOn:\n if (resource != null && resource.contentType !== ContentType.ArtistAppearsOn) throw Error();\n return getArtistAlbumsAppearsOnLink(resource);\n case ContentType.ArtistAlbums:\n if (resource != null && resource.contentType !== ContentType.ArtistAlbums) throw Error();\n return getArtistAlbumsLink(resource);\n case ContentType.ArtistSimilarArtists:\n if (resource != null && resource.contentType !== ContentType.ArtistSimilarArtists) throw Error();\n return getArtistSimilarArtistsLink(resource);\n case ContentType.ArtistSingles:\n if (resource != null && resource.contentType !== ContentType.ArtistSingles) throw Error();\n return getArtistSinglesLink(resource);\n case ContentType.ArtistTracks:\n if (resource != null && resource.contentType !== ContentType.ArtistTracks) throw Error();\n return getArtistTracksLink(resource, section);\n case ContentType.ArtistRadio:\n if (resource != null && resource.contentType !== ContentType.ArtistRadio) throw Error();\n return getArtistRadioLink(resource);\n case ContentType.ExternalLink:\n if (resource != null && resource.contentType !== ContentType.ExternalLink) throw Error();\n return { url: resource?.externalLink, target: resource?.target };\n case ContentType.Chart:\n case ContentType.AlbumChart:\n case ContentType.TrackChart:\n if (resource != null && resource.contentType !== ContentType.AlbumChart && resource.contentType !== ContentType.TrackChart) throw Error();\n return getChartLink(resource);\n case ContentType.TrackRadio:\n if (resource != null && resource.contentType !== ContentType.TrackRadio) throw Error();\n return getTrackRadioLink(resource);\n case ContentType.LiveRadio: {\n if (resource != null && resource.contentType !== ContentType.LiveRadio) throw Error();\n return getLiveRadioLink(resource);\n }\n case ContentType.LiveRadioCategory:\n if (resource != null && resource.contentType !== ContentType.LiveRadioCategory) throw Error();\n return getLiveRadioCategoryLink(resource);\n case ContentType.LiveRadioTrack:\n if (resource != null && resource.contentType !== ContentType.LiveRadioTrack) throw Error();\n return getLiveRadioTrackLink(resource);\n case ContentType.LiveRadioPlayable:\n if (resource != null && resource.contentType !== ContentType.LiveRadioPlayable) throw Error();\n return getLiveRadioPlayableLink(resource);\n case ContentType.MixRadio:\n if (resource != null && resource.contentType !== ContentType.MixRadio) throw Error();\n return getMixRadioLink(resource);\n case ContentType.MixRadios:\n if (resource != null && resource.contentType !== ContentType.MixRadios) throw Error();\n return getMixRadiosLink(resource?.title ?? null);\n case ContentType.MixRadioCategory:\n if (resource != null && resource.contentType !== ContentType.MixRadioCategory) throw Error();\n return getMixRadioCategoryLink(resource);\n case ContentType.TrackSelection:\n return text((resource as MultiselectionTracksPlayModel).title);\n case ContentType.Playlist:\n if (resource != null && resource.contentType !== ContentType.Playlist) throw Error();\n return getPlaylistLink(resource);\n case ContentType.PlaylistCategory:\n if (resource != null && resource.contentType !== ContentType.PlaylistCategory) throw Error();\n return getPlaylistCategoryLink(resource);\n case ContentType.TrackPlayable:\n if (resource != null && resource.contentType !== ContentType.TrackPlayable) throw Error();\n return getTrackPlayableLink(resource);\n case ContentType.QueueTrack:\n if (resource != null && resource.contentType !== ContentType.QueueTrack) throw Error();\n return getQueueTrackPlayableLink(resource);\n case ContentType.SearchResultTrack:\n if (resource != null && resource.contentType !== ContentType.SearchResultTrack) throw Error();\n return getSearchTrackLink(resource);\n case ContentType.MixedContentTrack:\n if (resource != null && resource.contentType !== ContentType.MixedContentTrack) throw Error();\n return getMixedContentTrackLink(resource);\n case ContentType.MyMusicPlaylists:\n return getMyMusicPlaylistsLink();\n case ContentType.MyMusicAlbums:\n return getMyMusicAlbumsLink();\n case ContentType.MyMusicArtists:\n return getMyMusicArtistsLink();\n case ContentType.MyMusicTracks:\n return getMyMusicTracksLink();\n case ContentType.Notification: {\n if (resource != null && resource.contentType !== ContentType.Notification) throw Error();\n if (resource?.playable) {\n const link = getLink(resource.playable.contentType, resource.playable, section);\n if (!link) return null;\n //link.text = resource.title;\n return link;\n }\n return text(resource?.title);\n }\n case ContentType.AlbumRecommendation:\n case ContentType.PlaylistRecommendation:\n case ContentType.TrackRecommendation:\n case ContentType.Recommendation:\n if (\n resource != null &&\n resource.contentType !== ContentType.AlbumRecommendation &&\n resource.contentType !== ContentType.PlaylistRecommendation &&\n resource.contentType !== ContentType.TrackRecommendation\n )\n throw Error();\n return getRecommendationLink(resource);\n case ContentType.UserRecommendations:\n return getRecommendationsLink();\n case ContentType.UserHistory:\n return getYourHistoryLink();\n case ContentType.PlaylistCategories:\n case ContentType.Search:\n return getSearchLink();\n\n case ContentType.MixedContent: {\n if (resource != null && resource.contentType !== ContentType.MixedContent) throw Error();\n return getMixedContentLink(resource);\n }\n case ContentType.LayoutItem: {\n if (resource != null && resource.contentType !== ContentType.LayoutItem) throw Error();\n\n return getLayoutPageItemLink(resource);\n }\n case ContentType.FrontPageShowAll:\n case ContentType.RadioPageShowAll:\n case ContentType.ThemePageShowAll:\n return text(undefined);\n case ContentType.SearchAlbumResults:\n if (resource != null && resource.contentType !== ContentType.SearchAlbumResults) throw Error();\n return getSearchAlbumResultsLink(resource);\n case ContentType.SearchArtistResults:\n if (resource != null && resource.contentType !== ContentType.SearchArtistResults) throw Error();\n return getSearchArtistResultsLink(resource);\n case ContentType.SearchPlaylistResults:\n if (resource != null && resource.contentType !== ContentType.SearchPlaylistResults) throw Error();\n return getSearchPlaylistResultsLink(resource);\n case ContentType.SearchTrackResults:\n if (resource != null && resource.contentType !== ContentType.SearchTrackResults) throw Error();\n return getSearchTrackResultsLink(resource);\n case ContentType.LayoutPage:\n if (resource != null && resource.contentType !== ContentType.LayoutPage) throw Error();\n return getLayoutPageLink(resource);\n case ContentType.Radio:\n return getRadioPageLink();\n case ContentType.FrontPage:\n return getFrontPageLink();\n case ContentType.ProfilesPage:\n return getProfilesPageLink();\n case ContentType.SettingsPage:\n return getSettingsPageLink();\n case ContentType.SideBar:\n return text(\"Side Bar\");\n case ContentType.SearchMixedResults:\n return text(translate(\"BestResults\"));\n case ContentType.SearchRecentResults:\n return text(translate(\"RecentSearches\"));\n case ContentType.EndlessPlay:\n return text(translate(\"SettingsEndlessPlayTitle\"));\n case ContentType.Skeleton:\n case ContentType.Player:\n case ContentType.PageLoadError:\n case ContentType.NotFound:\n case ContentType.NavBar:\n return text(undefined);\n case ContentType.NotificationFeed:\n return text(translate(\"NotificationFeedTitle\"));\n case ContentType.InstallPWA:\n case ContentType.Queue:\n case ContentType.SearchResult: {\n log.error({ code: \"web-210510-1818\", msg: DefaultLogMessage.NotImplemented, data: { type } });\n return null;\n }\n case ContentType.BannerLayoutItemContent:\n if ((resource as BannerPreviewModel).target) {\n return getLink(type, (resource as BannerPreviewModel).target, section);\n }\n return text(undefined);\n case ContentType.Lyrics:\n return text(undefined);\n case ContentType.YourMixesPage:\n return link(ContentType.TrackRecommendation, resource, undefined, navigation.templates.yourMixes());\n }\n type;\n}\n\nexport interface LinkModel {\n text?: string;\n url?: string;\n resource?: ResourceModel;\n type?: LocationContentType;\n target?: string;\n}\n\nexport function createLinkContexts(\n type: LocationContentType,\n resource: ContextResourceModel | null,\n context?: PreviewContextModel,\n displayType?: PreviewDisplayType\n): LinkContextModel[][] {\n const links = getLinks(type, resource, context?.section, displayType);\n const contexts = links.map((group) => group.map((link) => linkContext(link, context)));\n return contexts;\n}\n\nexport function getLinks(type: LocationContentType, resource: ContextResourceModel | null, context?: SectionContextModel, displayType?: PreviewDisplayType): LinkModel[][] {\n const sectionType = context?.type ?? null;\n const pageType = context?.page?.type ?? null;\n\n type = resource?.contentType ?? type;\n\n switch (type) {\n case ContentType.Album: {\n if (resource != null && resource.contentType !== ContentType.Album) throw Error();\n\n const available = resource?.availableInSubscription ?? true;\n\n if (displayType === PreviewDisplayType.Row || displayType === PreviewDisplayType.Square) {\n if (pageType == ContentType.Search) return [[getAlbumLink(resource)], [text(translate(\"Album\")), getArtistLink(resource?.artist)]];\n switch (sectionType) {\n case ContentType.MyMusicAlbums:\n case ContentType.AlbumArtistAlbums:\n case ContentType.ArtistSingles:\n case ContentType.ArtistAppearsOn:\n case ContentType.ArtistAlbums:\n if (available)\n return [\n [getAlbumLink(resource)],\n [getArtistLink(resource?.artist)],\n [getReleaseYearText(resource?.releaseDate), getTrackCountText(resource?.trackCount)]\n ];\n else return [[getAlbumLink(resource)], [getArtistLink(resource?.artist)], [getNotInSubscriptionText()]];\n }\n }\n\n if (available) return [[getAlbumLink(resource)], [getArtistLink(resource?.artist)]];\n else return [[getAlbumLink(resource)], [getArtistLink(resource?.artist)], [getNotInSubscriptionText()]];\n }\n case ContentType.Artist: {\n if (resource != null && resource.contentType !== ContentType.Artist) throw Error();\n\n if (pageType === ContentType.Search) return [[getArtistLink(resource)], [text(translate(\"Artist\"))]];\n else return [[getArtistLink(resource)]];\n }\n case ContentType.ArtistRadio: {\n if (resource != null && resource.contentType !== ContentType.ArtistRadio) throw Error();\n\n if (displayType === PreviewDisplayType.Single) return [[getArtistRadioLink(resource)], [getArtistRadioDescriptionText(resource)]];\n else return [[getArtistRadioLink(resource)]];\n }\n case ContentType.Chart:\n case ContentType.AlbumChart:\n case ContentType.TrackChart: {\n if (resource != null && resource.contentType !== ContentType.AlbumChart && resource.contentType !== ContentType.TrackChart) throw Error();\n return [[getChartLink(resource)]];\n }\n case ContentType.LiveRadioCategory: {\n if (resource != null && resource.contentType !== ContentType.LiveRadioCategory) throw Error();\n return [[getLiveRadioCategoryLink(resource)], [text(resource?.description)]];\n }\n case ContentType.LiveRadioTrack:\n if (resource != null && resource.contentType !== ContentType.LiveRadioTrack) throw Error();\n return [[getLiveRadioTrackLink(resource)], [getArtistLink(resource?.track.artist)]];\n case ContentType.LiveRadio: {\n if (resource != null && resource.contentType !== ContentType.LiveRadio) throw Error();\n\n const title = resource?.title;\n const description = resource?.description ?? \"Live radio\";\n\n if (displayType === PreviewDisplayType.Headline) return [[text(title)]];\n if (sectionType === ContentType.Queue) {\n if (resource?.tracks?.nowPlaying?.track) {\n return [[getLiveRadioTrackLink(resource.tracks.nowPlaying)], [getArtistLink(resource.tracks.nowPlaying?.track.artist)]];\n }\n return [[text(title)], [text(description)]];\n }\n if (sectionType === ContentType.Player) {\n if (resource?.tracks?.nowPlaying?.track) {\n return [[text(title)], [getLiveRadioTrackLink(resource.tracks.nowPlaying), getArtistLink(resource.tracks.nowPlaying?.track.artist)]];\n }\n return [[text(title)], [text(description)]];\n }\n\n return [[text(title)], [text(description)]];\n }\n case ContentType.LiveRadioPlayable: {\n if (resource != null && resource.contentType !== ContentType.LiveRadioPlayable) throw Error();\n\n return getLinks(ContentType.LiveRadio, resource?.liveRadio ?? null, context, displayType);\n\n // return [[text(resource?.liveRadio.title)], [text(resource?.liveRadio.description ?? undefined)]];\n }\n case ContentType.MixRadio: {\n if (resource != null && resource.contentType !== ContentType.MixRadio) throw Error();\n return [[text(resource?.title)]];\n }\n case ContentType.MixRadioCategory: {\n if (resource != null && resource.contentType !== ContentType.MixRadioCategory) throw Error();\n return [[getMixRadioCategoryLink(resource)]];\n }\n case ContentType.MixRadios:\n if (resource != null && resource.contentType !== ContentType.MixRadios) throw Error();\n return [[getMixRadiosLink(null)]];\n case ContentType.PlaylistCategory: {\n if (resource != null && resource.contentType !== ContentType.PlaylistCategory) throw Error();\n switch (displayType) {\n case PreviewDisplayType.Square: {\n const noTitle = pageType === ContentType.PlaylistCategories || pageType === ContentType.Search;\n if (noTitle) return [];\n else return [[getPlaylistCategoryLink(resource)]];\n }\n default:\n return [[getPlaylistCategoryLink(resource)]];\n }\n }\n\n case ContentType.Playlist: {\n if (resource != null && resource.contentType !== ContentType.Playlist) throw Error();\n\n if (resource?.owner)\n return [\n [getPlaylistLink(resource)],\n !resource ? [] : [getTrackCountText(resource?.trackCount), getDurationLongTimeSpanText(resource?.duration ?? undefined)],\n [text(resource?.owner ? translate(\"PlaylistCreatedByMe\") : \"\")]\n ];\n\n if (pageType === ContentType.Search) return [[getPlaylistLink(resource)], [text(translate(\"GlobalPlaylistName\"))]];\n\n if (sectionType === ContentType.Playlist) return [[getPlaylistLink(resource)]];\n if (pageType === ContentType.FrontPage) return [[getPlaylistLink(resource)]];\n return [[getPlaylistLink(resource)], [getTrackCountText(resource?.trackCount), getDurationLongTimeSpanText(resource?.duration ?? undefined)]];\n }\n case ContentType.TrackPlayable: {\n if (resource != null && resource.contentType !== ContentType.TrackPlayable) throw Error();\n\n if (pageType === ContentType.Search)\n return [\n [getTrackPlayableLink(resource)],\n [text(translate(\"GlobalTrackName\")), ...getArtistAndFeaturedArtistsLinks(resource?.track?.artist, resource?.track?.featuredArtists)]\n ];\n\n switch (sectionType) {\n case ContentType.Album:\n switch (displayType) {\n case PreviewDisplayType.Row:\n return [\n [text(resource?.track.title)],\n getArtistAndFeaturedArtistsLinks(resource?.track?.artist, resource?.track?.featuredArtists),\n [getDurationShortTimeSpanText(resource?.track?.duration)]\n ];\n default:\n return [[getTrackPlayableLink(resource)], [getArtistLink(resource?.track?.artist)]];\n }\n case ContentType.Queue: // temporary until featuring artist render correctly in queue\n switch (displayType) {\n case PreviewDisplayType.Row:\n return [\n [getTrackPlayableLink(resource)],\n [getArtistLink(resource?.track?.artist)],\n [getAlbumLink(resource?.track?.album)],\n [getDurationShortTimeSpanText(resource?.track?.duration)]\n ];\n default:\n return [[getTrackPlayableLink(resource)], [getArtistLink(resource?.track?.artist)]];\n }\n default:\n switch (displayType) {\n case PreviewDisplayType.Row:\n return [\n [getTrackPlayableLink(resource)],\n getArtistAndFeaturedArtistsLinks(resource?.track?.artist, resource?.track?.featuredArtists),\n [getAlbumLink(resource?.track?.album)],\n [getDurationShortTimeSpanText(resource?.track?.duration)]\n ];\n default:\n return [[getTrackPlayableLink(resource)], [getArtistLink(resource?.track?.artist)]];\n }\n }\n }\n case ContentType.MyMusicAlbums: {\n return [[getMyMusicAlbumsLink()]];\n }\n case ContentType.MyMusicArtists: {\n return [[getMyMusicArtistsLink()]];\n }\n case ContentType.MyMusicPlaylists: {\n return [[getMyMusicPlaylistsLink()]];\n }\n case ContentType.MyMusicTracks: {\n return [[getMyMusicTracksLink()]];\n }\n case ContentType.Recommendation:\n case ContentType.AlbumRecommendation:\n case ContentType.PlaylistRecommendation:\n case ContentType.TrackRecommendation: {\n if (\n resource != null &&\n resource.contentType !== ContentType.AlbumRecommendation &&\n resource.contentType !== ContentType.PlaylistRecommendation &&\n resource.contentType !== ContentType.TrackRecommendation\n )\n throw Error();\n return [[getRecommendationLink(resource)], [getRecommendationSubtitleText(resource)]];\n }\n case ContentType.TrackRadio: {\n if (resource != null && resource.contentType !== ContentType.TrackRadio) throw Error();\n return [[getTrackRadioLink(resource)]];\n }\n case ContentType.Search: {\n return [[getSearchLink()]];\n }\n case ContentType.MixedContent: {\n if (resource != null && resource.contentType !== ContentType.MixedContent) throw Error();\n return [[getMixedContentLink(resource)], [getMixedContentSubtitleText(resource)]];\n }\n case ContentType.Skeleton: {\n if (resource == null) {\n log.error({ code: \"web-211103-2233\", msg: DefaultLogMessage.UnexpectedNull, data: { type } });\n return [];\n }\n if (resource.contentType !== ContentType.Skeleton) throw Error();\n return getLinks(resource.estimatedType, null, context, displayType);\n }\n case ContentType.Notification: {\n if (resource != null && resource.contentType !== ContentType.Notification) throw Error();\n\n const link = getLink(type, resource, context);\n if (!link) return [];\n\n link.text = resource?.title ?? link.text;\n\n const showSubtitle = !!link && !!resource?.subtitle && resource.subtitle != resource.title && resource.notificationType !== NotificationType.PlaylistUpdated;\n return showSubtitle\n ? [[link], [text(resource.subtitle)], [getTimeAgoTimeSpanText(resource.availableBegin)]]\n : [[text(resource?.title)], [getTimeAgoTimeSpanText(resource?.availableBegin)]];\n }\n default: {\n const link = getLink(type, resource, context);\n if (link) return [[link]];\n log.error({ code: \"web-210510-1819\", msg: DefaultLogMessage.NotImplemented, data: { type } });\n return [];\n }\n }\n type;\n}\n\nexport function getShowRowNumber(resourceType: LocationContentType, context: PreviewContextModel): boolean {\n const pageContext = context.section.page;\n\n if (resourceType === ContentType.TrackPlayable) {\n if (pageContext?.type === ContentType.Album) return true;\n if (pageContext?.type === ContentType.Artist) return true;\n if (pageContext?.type === ContentType.ArtistTracks) return false;\n if (pageContext?.type === ContentType.Chart) return true;\n if (pageContext?.type === ContentType.TrackChart) return true;\n }\n if (resourceType === ContentType.Album) {\n if (pageContext?.type === ContentType.AlbumChart) return true;\n if (pageContext?.type === ContentType.Chart) return true;\n }\n return false;\n}\n\nexport function getShowRowCover(preview: PreviewContextModel): boolean {\n if (preview.type === ContentType.TrackPlayable && preview.section?.page?.type === ContentType.Album) return false;\n return true;\n}\n\nexport function getArtistRadioTitle(artistRadio: ArtistRadioModel): string {\n return translateWithReplacement(\"ArtistRadioTitle\", \"ArtistName\", artistRadio.title);\n}\n\nexport function getArtistRadioSubtitle(artistRadio: ArtistRadioModel): string {\n return translateWithReplacement(\"ArtistRadioSubTitle\", \"ArtistName\", artistRadio.title);\n}\n\nexport function getTrackRadioTitle(trackRadio: TrackRadioModel): string {\n return translateWithReplacement(\"TrackRadioTitle\", \"TrackName\", trackRadio.title);\n}\n\nexport function getMoreFromTitle(artistName: string | null | undefined): string {\n if (artistName == null) return \"\";\n return translateWithReplacement(\"MoreBy\", \"ArtistName\", artistName);\n}\n\nexport function getProductPageTexts(productPageType: ProductPageType, resource: ResourcePageModel | null): LinkModel[][] {\n switch (productPageType) {\n case ContentType.Album: {\n const album = resource as AlbumPageModel | undefined;\n return [[getYearText(album?.releaseDate?.getFullYear()), getDurationLongTimeSpanText(album?.duration ?? undefined)]];\n }\n case ContentType.Artist: {\n return [];\n }\n case ContentType.Playlist: {\n const playlist = resource as PlaylistPageModel | undefined;\n return !playlist\n ? []\n : [[getTrackCountText(playlist?.trackCount), getDurationLongTimeSpanText(playlist?.duration ?? undefined)], [getFollowersText(playlist?.followersCount)]];\n }\n case ContentType.Recommendation:\n case ContentType.AlbumRecommendation:\n case ContentType.PlaylistRecommendation:\n case ContentType.TrackRecommendation: {\n return [];\n }\n case ContentType.Chart:\n case ContentType.AlbumChart:\n case ContentType.TrackChart: {\n const chart = resource as ChartPageModel | undefined;\n return [[text(chart?.description ?? undefined)]];\n }\n case ContentType.ArtistRadio:\n case ContentType.TrackRadio: {\n const radio = resource as ArtistRadioPageModel | TrackRadioPageModel | undefined;\n return [[getTrackCountText(radio?.trackCount), getDurationLongTimeSpanText(radio?.duration)]];\n }\n }\n}\n","import { isTracksEmptyOrNotAvailableInSubscription } from \"services/playable\";\nimport type { AlbumPageModel, PlaylistPageModel, RecommendationPageModel, ArtistPageModel, ArtistRadioPageModel, TrackPreviewModel } from \"models/domain\";\nimport type { ChartPageModel } from \"models/domain/ChartModel\";\nimport type { TrackRadioPageModel } from \"models/domain/TrackRadioModel\";\nimport { ContentType } from \"models/ModelType\";\n\nexport type ProductPageModel = AlbumPageModel | PlaylistPageModel | ArtistPageModel | RecommendationPageModel | ChartPageModel | TrackRadioPageModel | ArtistRadioPageModel;\nexport type ProductPageType = ProductPageModel[\"contentType\"] | ContentType.Chart | ContentType.Recommendation;\n\nexport function getCanPlay(product: ProductPageModel | null) {\n if (!product) return true;\n\n const getTracks = (): TrackPreviewModel[] | null => {\n switch (product.contentType) {\n case ContentType.AlbumRecommendation:\n case ContentType.AlbumChart:\n case ContentType.PlaylistRecommendation:\n return null;\n }\n\n if (product.contentType == ContentType.Artist) return product.tracksSection?.tracks?.items ?? null;\n else return product.tracks?.items ?? null;\n };\n\n const tracks = getTracks();\n if (!tracks) return false;\n\n const empty = isTracksEmptyOrNotAvailableInSubscription(tracks);\n if (empty) return false;\n\n return true;\n}\n","import { createLinkContexts } from \".\";\nimport { log, DefaultLogMessage } from \"services/logger/initLoggerService\";\nimport { isLiveRadioParent, isTrackParent } from \"services/playable\";\nimport type { LinkContextModel, PreviewContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourceContentType, ResourceModel, ResourcePageModel, ResourcePreviewModel, TrackPreviewModel, LocationContentType, LiveRadioPreviewModel } from \"models/domain\";\nimport {\n createLiveRadioPreviewModelFromMixedContent,\n getComparableTrackPlayableId,\n ResourceDisplayType,\n getComparableTrackId,\n createTrackPlayablePreview,\n createMixRadioPreviewModelFromMixedContent\n} from \"models/domain\";\nimport { createLiveRadioPlayablePreview } from \"models/domain/LiveRadioPlayableModel\";\nimport type { MixedContentDomainType } from \"models/domain/MixedContentModel\";\nimport type { NotificationContentModel, NotificationPreviewModel } from \"models/domain/NotificationModel\";\nimport { ContentType, DomainModelType } from \"models/ModelType\";\nimport { IconName } from \"components/atoms/icon\";\nimport { PreviewAction } from \"components/molecules/preview\";\n\nexport function getTitles(resourceType: LocationContentType, resource: ResourcePreviewModel | ResourcePageModel | null, context?: PreviewContextModel) {\n const links = createLinkContexts(resourceType, resource, context);\n const groupText = (link: LinkContextModel[] | null) => link?.map((group) => group.text).join(\"·\") ?? undefined;\n\n return { title: groupText(links[0]) ?? \"\", subtitle: groupText(links[1]) };\n}\n\nexport function getAltText(resource: ResourceModel): string | null {\n return \"\"; // todo\n}\n\nexport function getToolTip(resource: ResourceModel): string | null {\n return \"\"; // todo\n}\n\nexport function getResourceCoverTemplate(preview: PreviewContextModel): string | null {\n const resource = preview.resource;\n const sectionType = preview.section.type;\n if (resource?.contentType === ContentType.LiveRadio && resource.type === DomainModelType.Play && sectionType === ContentType.Queue) {\n return resource.tracks?.nowPlaying?.cover ?? resource.cover;\n }\n return resource?.cover ?? null;\n}\n\nexport function getIcon(type: LocationContentType): IconName | null {\n switch (type) {\n case ContentType.Album:\n case ContentType.ArtistAppearsOn:\n case ContentType.MyMusicAlbums:\n return IconName.Albums;\n\n case ContentType.Artist:\n case ContentType.MyMusicArtists:\n return IconName.Artist;\n\n case ContentType.ArtistRadio:\n case ContentType.LiveRadioPlayable:\n case ContentType.Radio:\n case ContentType.TrackRadio:\n return IconName.Radio;\n\n case ContentType.MyMusicTracks:\n case ContentType.SearchResultTrack:\n case ContentType.TrackPlayable:\n return IconName.Songs;\n\n case ContentType.MyMusicPlaylists:\n case ContentType.Playlist:\n return IconName.Playlist;\n\n case ContentType.FrontPage:\n return IconName.Home;\n\n case ContentType.Search:\n return IconName.Search;\n\n default:\n log.error({ code: \"web-210519-1148\", msg: DefaultLogMessage.NotImplemented, data: { type } });\n return null;\n }\n}\n\nexport function getResourceDisplayCount(displayType: ResourceDisplayType): number {\n switch (displayType) {\n case ResourceDisplayType.Grid:\n return 4;\n case ResourceDisplayType.List:\n case ResourceDisplayType.ListMedium:\n case ResourceDisplayType.ListLarge:\n return 5;\n case ResourceDisplayType.Scroller:\n case ResourceDisplayType.LargeScroller:\n return 20;\n case ResourceDisplayType.Single:\n case ResourceDisplayType.LargeSingle:\n case ResourceDisplayType.PromoSingle:\n case ResourceDisplayType.Top:\n return 1;\n case ResourceDisplayType.Deeplink:\n case ResourceDisplayType.Unknown:\n log.error({ code: \"web-210301-1449\", msg: DefaultLogMessage.NotImplemented, data: { displayType } });\n return 0;\n }\n}\n\nexport function getHasContextMenu(type: LocationContentType, resource: ResourceModel | null): boolean {\n const hasMenu = (type: LocationContentType | MixedContentDomainType | undefined): boolean => {\n switch (type) {\n case ContentType.Album:\n case ContentType.Artist:\n case ContentType.LiveRadio:\n case ContentType.LiveRadioPlayable:\n case ContentType.LiveRadioTrack:\n case ContentType.MixRadio:\n case ContentType.Playlist:\n case ContentType.TrackChart:\n case ContentType.TrackPlayable:\n case ContentType.TrackRecommendation:\n return true;\n default:\n return false;\n }\n };\n\n if (hasMenu(type)) return true;\n if (resource?.contentType === ContentType.MixedContent && hasMenu(resource.mixedContentType)) return true;\n if (resource?.contentType === ContentType.Notification && hasMenu(resource?.playable?.contentType)) return true;\n\n return false;\n}\n\nexport type ExpandResourceModel = NotificationPreviewModel & { content: NotificationContentModel };\nexport function getIsExpandResource(resource: ResourceModel): resource is ExpandResourceModel {\n if (resource.contentType === ContentType.Notification && resource.content) return true;\n return false;\n}\n\nexport function getIsCoverRounded(type: LocationContentType, resource: ResourceModel | null): boolean {\n const isRounded = (type: ContentType) => {\n if (type === ContentType.Artist || type === ContentType.ArtistRadio) return true;\n return false;\n };\n\n if (isRounded(type)) return true;\n if (resource?.contentType === ContentType.MixedContent && isRounded(resource.mixedContentType)) return true;\n return false;\n}\n\nexport function getComparableId(resource: ResourceModel | TrackPreviewModel): string {\n switch (resource.contentType) {\n case ContentType.Track:\n return getComparableTrackId(resource);\n case ContentType.TrackPlayable:\n return getComparableTrackPlayableId(resource.track, resource.parent);\n }\n return `${resource.contentType}_${resource.id}`;\n}\n\nfunction normalizePlayable(playable: TrackPreviewModel | LiveRadioPreviewModel | ResourcePreviewModel): ResourcePreviewModel | TrackPreviewModel | null {\n if (playable.contentType === ContentType.MixedContent) {\n if (playable.mixedContentType === ContentType.MixRadio) {\n const mixRadio = createMixRadioPreviewModelFromMixedContent(playable);\n if (mixRadio == null) {\n log.error({ code: \"web-211027-1855\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n playable = mixRadio;\n } else if (playable.mixedContentType === ContentType.LiveRadio) {\n const liveRadio = createLiveRadioPreviewModelFromMixedContent(playable);\n if (liveRadio == null) {\n log.error({ code: \"web-211027-1855\", msg: DefaultLogMessage.UnexpectedNull });\n return null;\n }\n playable = liveRadio;\n }\n }\n return playable;\n}\n\nexport function getNormalizedResourceFromUnion(model: TrackPreviewModel | LiveRadioPreviewModel | ResourcePreviewModel, parent: ResourceModel): ResourcePreviewModel | null {\n const normalized = normalizePlayable(model);\n if (!normalized) return null;\n\n const resource = getResourceFromUnion(normalized, parent);\n if (!resource) return null;\n\n return resource;\n}\n\nexport function getResourceFromUnion(model: TrackPreviewModel | LiveRadioPreviewModel | ResourcePreviewModel, parent: ResourceModel): ResourcePreviewModel | null {\n if (model.contentType === ContentType.Track) {\n if (!isTrackParent(parent)) {\n log.error({ code: \"web-210313-1506\", msg: DefaultLogMessage.UnexpectedValue });\n return null;\n }\n return createTrackPlayablePreview(model, parent);\n } else if (model.contentType === ContentType.LiveRadio) {\n if (!isLiveRadioParent(parent)) {\n log.error({ code: \"web-210929-2228\", msg: DefaultLogMessage.UnexpectedValue });\n return null;\n }\n return createLiveRadioPlayablePreview(model, parent);\n }\n return model;\n}\n\nexport function getResourcesFromUnions(\n playableOrTracks: (TrackPreviewModel | LiveRadioPreviewModel | ResourcePreviewModel)[] | null,\n parent: ResourceModel | null\n): ResourcePreviewModel[] | null {\n if (!playableOrTracks || !parent) return null;\n\n const playables: ResourcePreviewModel[] = [];\n playableOrTracks.forEach((value) => {\n const playable = getNormalizedResourceFromUnion(value, parent);\n if (playable) playables.push(playable);\n });\n return playables;\n}\n\nexport function isResourceEqual(a: ResourceModel | TrackPreviewModel, b: ResourceModel | TrackPreviewModel): boolean {\n if (getComparableId(a) !== getComparableId(b)) return false;\n return true;\n}\n\nexport function getResourceMainAction(contentType: ResourceContentType, resource: ResourcePreviewModel | null): PreviewAction {\n const isExpand = resource && getIsExpandResource(resource);\n if (isExpand) return PreviewAction.Expand;\n\n const isPlay =\n contentType === ContentType.LiveRadio ||\n contentType === ContentType.LiveRadioPlayable ||\n contentType === ContentType.LiveRadioTrack ||\n contentType === ContentType.MixRadio ||\n contentType === ContentType.TrackPlayable;\n\n if (!isPlay) return PreviewAction.Navigate;\n\n const avaialable = getResourceAvailableInSubscription(resource);\n if (!avaialable) return PreviewAction.None;\n\n return PreviewAction.Play;\n}\n\nexport const getCoverSrc = (template: string | null, size: number): string | null => {\n if (template == null) return null;\n const { success, src } = getCoverSrcFromTemplate(template, size, size);\n if (!success) return null;\n return src;\n};\nexport function getCoverSrcFromTemplate(template: string, width: number, height: number): { success: boolean; src: string } {\n const src = template.replace(\"{scheme}\", \"https\").replace(\"{width}\", `${width}`).replace(\"{height}\", `${height}`);\n return { success: src !== template, src };\n}\n\nexport function getResourceAvailableInSubscription(resource: ResourcePreviewModel | null): boolean {\n switch (resource?.contentType) {\n case ContentType.Album:\n return resource.availableInSubscription;\n case ContentType.TrackPlayable:\n return resource.track.availableInSubscription;\n }\n return true;\n}\n\nexport function getResourceEditable(resource: ResourcePageModel | null): boolean {\n switch (resource?.contentType) {\n case ContentType.Playlist:\n return resource.owner;\n case ContentType.MyMusicTracks:\n return true;\n case ContentType.MyMusicAlbums:\n return true;\n }\n return false;\n}\n","export * from \"./searchService\";\nexport * from \"./searchViewService\";\n","import { SearchResultModel } from \"models/domain/SearchResultModel\";\n\nexport function encodeUrlSearchString(criterion: string): string {\n return encodeURIComponent(criterion);\n}\n\nexport function decodeUrlSearchString(criterion: string | null): string | null {\n if (criterion == null) return null;\n return decodeURIComponent(criterion);\n}\n\nexport function isEmptyResult(result: SearchResultModel) {\n if (result?.mixedResults?.mixedResults?.items.length ?? 0 > 0) return false;\n if (result?.tracks?.tracks?.items.length ?? 0 > 0) return false;\n if (result?.albums?.albums?.items.length ?? 0 > 0) return false;\n if (result?.artists?.artists?.items.length ?? 0 > 0) return false;\n if (result?.playlists?.playlists?.items.length ?? 0 > 0) return false;\n\n return true;\n}\n","import { isEmptyResult } from \"./searchService\";\nimport type { SearchResultModel } from \"models/domain/SearchResultModel\";\nimport { SearchState } from \"models/view\";\n\nexport enum SearchViewState {\n Searching,\n NoResults,\n Results,\n Failed,\n History,\n None\n}\n\nexport function getSearchViewState(search: SearchResultModel | null, state: SearchState, hasHistory: boolean): SearchViewState {\n const isEmpty = search != null ? isEmptyResult(search) : false;\n\n switch (state) {\n case SearchState.None:\n return hasHistory ? SearchViewState.History : SearchViewState.None;\n case SearchState.Fetching:\n return SearchViewState.Searching;\n case SearchState.Failed:\n return SearchViewState.Failed;\n case SearchState.Success:\n return isEmpty ? SearchViewState.NoResults : SearchViewState.Results;\n }\n}\n","export * from \"./multiselect\";\n","import type { StateUpdater } from \"preact/hooks\";\nimport { useEffect, useState } from \"preact/hooks\";\nimport { Feature, isFeatureEnabled, translate } from \"global/config\";\nimport { distinct } from \"services/arrayHelper\";\nimport type { PageContextModel } from \"models/app/resourceContextModel\";\nimport type { ResourceModel, TrackPreviewModel } from \"models/domain\";\nimport { createMultiselectionTracksPlayModel } from \"models/domain/MultiselectionTracksModel\";\nimport type { ContentType } from \"models/ModelType\";\n\nexport type MultiselectItem = TrackPreviewModel | ResourceModel;\n\nexport type MultiselectState = {\n context: PageContextModel | null;\n productType: ContentType;\n selectedItems: MultiselectItem[];\n activeItem: MultiselectItem | null;\n playables: MultiselectItem[] | null;\n};\n\nexport type Multiselect = {\n state: MultiselectState;\n update: StateUpdater<MultiselectState>;\n}\n\nexport function useMultiselect(playables: MultiselectItem[] | null, productType: ContentType, context: PageContextModel | null = null): Multiselect | undefined {\n const [state, update] = useState<MultiselectState>({\n selectedItems: [],\n activeItem: null,\n playables,\n productType,\n context\n });\n useEffect(() => {\n let missing = false;\n if (state.selectedItems.length > 0) {\n if (!playables || !state.playables) {\n // clear the selection if the collection was emptied\n missing = true;\n }\n else {\n // verify that all the items are still there, otherwise clear the selection\n for (let i = 0; i < state.selectedItems.length && !missing; i++) {\n const item = state.selectedItems[i];\n const index = _hackNormalizedIndex(state.playables, item);\n missing = index === -1 || playables.length <= index || playables[index].id !== item.id;\n }\n }\n }\n const selectedItems = missing ? [] : state.selectedItems;\n const activeItem = missing ? null : state.activeItem;\n\n if (state.selectedItems !== selectedItems || state.activeItem !== activeItem || state.playables !== playables || state.productType !== productType || state.context !== context) {\n // slightly unintuitive update-logic in order to only update the selection if it changed relative to the version in the closure\n // (to handle the multiple sequential updates when a collection loads multiple pages during pageload)\n // this could also have been handled by having different useState() for each field in MultiselectState.\n update(prevState => ({\n selectedItems: selectedItems === state.selectedItems ? prevState.selectedItems : selectedItems,\n activeItem: activeItem === state.activeItem ? prevState.activeItem : activeItem,\n playables,\n productType,\n context\n }));\n }\n }, [state, playables, productType, context])\n return isFeatureEnabled(Feature.Multiselect) ? { state, update } : undefined;\n}\n\nexport function isSelected(multiselect: Multiselect | undefined, item: MultiselectItem) {\n // item = _hackNormalizeItem(multiselect, item);\n // return !multiselect ? false : -1 !== multiselect.state.selectedItems.indexOf(item);\n\n return !multiselect ? false : -1 !== _hackNormalizedIndex(multiselect.state.selectedItems, item);\n}\n\nfunction toggleSelection(multiselect: Multiselect, item: MultiselectItem) {\n const selectedItems = isSelected(multiselect, item)\n ? multiselect.state.selectedItems.filter(n => n != item)\n : [...multiselect.state.selectedItems, item];\n\n setTimeout(() => {\n multiselect.update({\n selectedItems,\n activeItem: item,\n playables: multiselect.state.playables,\n productType: multiselect.state.productType,\n context: multiselect.state.context\n });\n });\n}\n\nfunction setSelection(multiselect: Multiselect, item: MultiselectItem | null) {\n multiselect.update({\n selectedItems: item ? [item] : [],\n activeItem: item,\n playables: multiselect.state.playables,\n productType: multiselect.state.productType,\n context: multiselect.state.context\n });\n}\n\nexport function clearSelection(multiselect: Multiselect) {\n setSelection(multiselect, null);\n}\n\nexport function unSelect(multiselect: Multiselect, items: MultiselectItem[]) {\n const selectedItems = multiselect.state.selectedItems.filter(n => -1 === items.indexOf(n)); // todo\n const activeItem = (multiselect.state.activeItem == null || -1 == selectedItems.indexOf(multiselect.state.activeItem)) ? null : multiselect.state.activeItem;\n multiselect.update({\n selectedItems,\n activeItem,\n playables: multiselect.state.playables,\n productType: multiselect.state.productType,\n context: multiselect.state.context\n });\n}\n\nfunction selectRange(multiselect: Multiselect, fromItem: MultiselectItem | null, toItem: MultiselectItem, append = false) {\n if (!multiselect.state.playables) return;\n\n const fromIndex = fromItem ? _hackNormalizedIndex(multiselect.state.playables, fromItem) : -1;\n const toIndex = _hackNormalizedIndex(multiselect.state.playables, toItem);\n\n if (fromIndex !== -1 && toIndex !== -1) {\n const rangeItems = multiselect.state.playables.slice(fromIndex <= toIndex ? fromIndex : toIndex, (fromIndex <= toIndex ? toIndex : fromIndex) + 1);\n const selectedItems = append ? distinct([...multiselect.state.selectedItems, ...rangeItems]) : rangeItems;\n multiselect.update({\n selectedItems,\n activeItem: multiselect.state.activeItem,\n playables: multiselect.state.playables,\n productType: multiselect.state.productType,\n context: multiselect.state.context\n });\n } else {\n // todo: log warning\n }\n}\n\nexport function updateSelection(multiselect: Multiselect, item: MultiselectItem, ctrlKey: boolean, shiftKey: boolean) {\n item = _hackNormalizeItem(item);\n if (shiftKey && multiselect.state.activeItem) {\n selectRange(multiselect, multiselect.state.activeItem, item, ctrlKey);\n } else if (ctrlKey) {\n toggleSelection(multiselect, item);\n }\n else {\n setSelection(multiselect, item);\n }\n}\n\nexport function getMultiselectPlayModel(multiselect: Multiselect) {\n const tracks = multiselect.state.selectedItems.map(item => _hackNormalizeItem(item));\n const title = translate(\"Tracks\"); // todo: get from multiselect.state.context\n const playable = createMultiselectionTracksPlayModel(tracks, title);\n return playable;\n}\n\nfunction _hackNormalizedIndex(collection: MultiselectItem[], item: MultiselectItem) {\n const _item = _hackNormalizeItem(item);\n return collection.findIndex(n => _hackNormalizeItem(n) == _item);\n}\n\nfunction _hackNormalizeItem(item: MultiselectItem): TrackPreviewModel {\n // todo: favoritetracks has a track collection but calls with individual items that are TrackPlayable... revisit this during/after the type refactoring.\n // that should be resolved and then this method can go away. \n return (item.contentType === \"TrackPlayable\")\n ? item.track\n : item as TrackPreviewModel;\n}","import type { AppVersionModel } from \"shared/services\";\nimport { appReloadServiceConfig, getCurrentAppVersion, serviceWorkerConfig } from \"shared/services\";\nimport type { PostMessage } from \"shared/services/postMessage\";\nimport { PostMessageName } from \"shared/services/postMessage\";\nimport { AppVersionCompare, appVersionCompare } from \"services/appVersion\";\nimport { log } from \"services/logger/initLoggerService\";\n\nconst pageLoadMs = new Date().getTime();\n\nexport function listenToAppReloadMessages(serviceWorker: ServiceWorkerContainer) {\n if (!appReloadServiceConfig.enableAutoReload) return;\n\n serviceWorker.addEventListener(\"message\", (event) => {\n const message = event.data as PostMessage | undefined;\n\n if (message?.type === PostMessageName.SwVersion) {\n reloadIfVersionChanged(message.version, message.reloadDelayMs);\n }\n });\n}\n\nexport function pollForServiceWorkerUpdates(registration: ServiceWorkerRegistration) {\n if (!appReloadServiceConfig.enableAutoReload || !appReloadServiceConfig.pollUpdateEnabled) return;\n\n window.setInterval(() => {\n log.info({ code: \"web-220223-1948\", msg: \"client: call serviceWorker update\" });\n registration.update();\n }, appReloadServiceConfig.pollUpdateIntervalMs);\n}\n\nfunction reloadIfVersionChanged(newVersion: AppVersionModel, reloadTimeoutMs: number) {\n const currentVersion = getCurrentAppVersion();\n const change = appVersionCompare(newVersion, currentVersion);\n\n log.info({\n code: \"web-220223-1949\",\n msg: \"client: reloadIfVersionChanged\",\n data: {\n currentVersion,\n newVersion,\n reloadTimeoutMs,\n change\n }\n });\n\n switch (change) {\n case AppVersionCompare.Same:\n resetReloadTimeout();\n return;\n case AppVersionCompare.Higher:\n startReloadTimeout(reloadTimeoutMs);\n return;\n case AppVersionCompare.Lower:\n window.location.reload();\n return;\n }\n}\n\nfunction resetReloadTimeout() {\n if (reloadTimeout == null && reloadTimeoutBegin == null) return;\n\n log.warn({ code: \"web-220223-1955\", msg: \"client: reset reload timeout\" });\n\n reloadTimeoutBegin = null;\n if (reloadTimeout != null) clearTimeout(reloadTimeout);\n}\n\nlet reloadTimeout: number | null = null;\nlet reloadTimeoutBegin: Date | null = null;\n\nfunction startReloadTimeout(reloadTimeoutMs: number) {\n if (serviceWorkerConfig.enableInstallationCacheFirst) {\n const pageJustLoaded = new Date().getTime() - pageLoadMs <= 10 * 1000;\n if (pageJustLoaded) {\n log.warn({ code: \"web-220223-1956\", msg: \"client: instant update reload\" });\n\n window.location.reload();\n return;\n }\n }\n\n if (reloadTimeout == null || reloadTimeoutBegin == null) {\n reloadTimeoutBegin = new Date();\n setReloadTimeout(reloadTimeoutMs);\n } else {\n log.warn({ code: \"web-220223-1956\", msg: \"client: update reload timeout\" });\n\n const passed = new Date().getTime() - reloadTimeoutBegin.getTime();\n reloadTimeoutMs -= passed;\n setReloadTimeout(reloadTimeoutMs);\n }\n}\n\nfunction setReloadTimeout(reloadTimeoutMs: number) {\n log.info({ code: \"web-220223-1950\", msg: \"client: set reload timout\", data: { reloadTimeoutMs } });\n\n if (reloadTimeoutMs <= 0) {\n log.info({ code: \"web-220223-1951\", msg: \"client: reload now...\" });\n\n window.location.reload();\n } else {\n reloadTimeout = window.setTimeout(() => {\n log.info({ code: \"web-220223-1952\", msg: \"client: reload from timeout\" });\n\n window.location.reload();\n }, reloadTimeoutMs);\n }\n}\n","import { listenToAppReloadMessages, pollForServiceWorkerUpdates } from \"./appReloadService\";\nimport { serviceWorkerConfig } from \"shared/services/serviceWorkerConfig\";\nimport { log } from \"services/logger/initLoggerService\";\n\nexport let serviceWorkerRegistered = false;\nexport async function initServiceWorker() {\n try {\n if (!(\"serviceWorker\" in navigator)) {\n log.error({ code: \"web-210414-1220\", msg: \"client: no serviceWorker in navigator\" });\n return;\n }\n\n if (!serviceWorkerConfig.enabled) {\n const registrations = await navigator.serviceWorker.getRegistrations();\n registrations.forEach((registration) => registration.unregister());\n return;\n }\n\n listenToAppReloadMessages(navigator.serviceWorker);\n\n let registration: ServiceWorkerRegistration;\n try {\n registration = await navigator.serviceWorker.register(`/serviceWorker.js`);\n } catch {\n log.error({ code: \"web-220223-1947\", msg: \"client: serviceWorker registration failed\" });\n return;\n }\n\n serviceWorkerRegistered = true;\n\n navigator.serviceWorker.addEventListener(\"controllerchange\", () => {\n // if (process.env.NODE_ENV === \"development\") return;\n log.info({ code: \"web-211101-1835\", msg: \"client: serviceWorker controller change\" });\n });\n\n pollForServiceWorkerUpdates(registration);\n } catch (e) {\n log.error({ code: \"web-220221-1320\", msg: \"error when initiating serviceWorker service\" });\n }\n}\n","import { WebAppBrand } from \"shared/models\";\nimport { environment } from \"services/environment\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { getLink } from \"services/resource\";\nimport type { ContextResourceModel } from \"models/app/resourceContextModel\";\nimport { ContentType } from \"models/ModelType\";\nimport { openToast } from \"components/organisms/toast\";\nimport { ShareUrlCopySuccessToast, ShareUrlCopyFailedToast } from \"components/organisms/toast/toasts\";\n\nexport async function copySharingLinkToClipboard(resource: ContextResourceModel) {\n const link = getShareUrlWithFallback(resource);\n if (!link) {\n log.error({ code: \"web-220224-1322\", msg: \"no share url\", data: { resource } });\n return;\n }\n\n try {\n await navigator.clipboard.writeText(link);\n openToast(ShareUrlCopySuccessToast());\n } catch (e) {\n log.error({ code: \"web-220224-1423\", msg: \"link could not be copied\", data: { resource }, error: e });\n openToast(ShareUrlCopyFailedToast());\n }\n}\n\nexport function getShareOrigin(): string {\n switch (environment.webAppBrand) {\n case WebAppBrand.YouSee:\n return window.location.origin; // \"https://musik.yousee.dk\";\n case WebAppBrand.Telmore:\n return window.location.origin; // \"https://musik.telmore.dk\";\n }\n}\n\nexport function getShareUrlWithFallback(resource: ContextResourceModel): string | null {\n let shareUrl = getShareUrl(resource);\n if (shareUrl != null) return shareUrl;\n\n shareUrl = getLink(resource.contentType, resource)?.url ?? null;\n if (shareUrl != null) return getShareOrigin() + shareUrl;\n\n return null;\n}\n\nexport function getShareUrl(resource: ContextResourceModel): string | null {\n const type = resource.contentType;\n switch (type) {\n case ContentType.Album:\n return resource.sharingUrl;\n case ContentType.Artist:\n return resource.sharingUrl;\n case ContentType.LiveRadioPlayable:\n return resource.liveRadio.sharingUrl;\n case ContentType.MixRadio:\n return resource.sharingUrl;\n case ContentType.Playlist:\n return resource.sharingUrl;\n case ContentType.TrackPlayable:\n return resource.track.sharingUrl;\n default:\n log.error({ code: \"web-220224-1332\", msg: DefaultLogMessage.NotImplemented, data: { type } });\n return null;\n }\n type;\n}\n","export enum KeyCode {\n KeyM = \"KeyM\",\n Space = \"Space\",\n KeyQ = \"KeyQ\"\n}\nexport function handleKeyPress(keyCodes: KeyCode[], callback: (keyCode: KeyCode) => void): void {\n function isActiveElementInput() {\n const activeElement = document.activeElement;\n const inputs = [\"input\", \"textarea\"];\n\n if (!activeElement) return false;\n return inputs.indexOf(activeElement.tagName.toLowerCase()) !== -1;\n }\n\n const handler = (e: KeyboardEvent) => {\n if (isActiveElementInput()) return;\n const code = e.code as KeyCode;\n if (e.metaKey || e.shiftKey || e.ctrlKey || e.altKey) return;\n if (keyCodes.includes(code)) {\n e.preventDefault();\n callback(code);\n }\n };\n\n window.addEventListener(\"keydown\", handler);\n}\n","export * from \"./shortcutService_\";","import { handleKeyPress, KeyCode } from \"./handleKeyPress\";\nimport { dispatch } from \"global\";\nimport { PLAYER_SET_MUTE, PLAYER_TOGGLE_PLAY, TOGGLE_MAXIPLAYER_QUEUE_OPEN } from \"global/actions\";\nimport { toggleDesktopPlayQueue } from \"services/player/inputs/inputs/playQueue/actions/toggleQueueView\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { getAppMediaSize, MediaSize } from \"components/shared/hooks\";\n\nexport function initShortcutService() {\n handleKeyPress([KeyCode.Space, KeyCode.KeyQ, KeyCode.KeyM], (keyCode: KeyCode) => {\n switch (keyCode) {\n case KeyCode.Space: {\n dispatch({ type: PLAYER_TOGGLE_PLAY, payload: { context: { action: AudioContextAction.UserKeybordKeySpace, trace: null } } });\n return;\n }\n case KeyCode.KeyM: {\n dispatch({ type: PLAYER_SET_MUTE, payload: {} });\n return;\n }\n case KeyCode.KeyQ: {\n const media = getAppMediaSize();\n\n if (media === MediaSize.Desktop) toggleDesktopPlayQueue();\n else dispatch({ type: TOGGLE_MAXIPLAYER_QUEUE_OPEN });\n\n return;\n }\n }\n });\n}\n","import { translate } from \"global/config\";\nimport { SortOption } from \"models/app/SortOption\";\n\nexport function getSortOptionName(sort: SortOption): string {\n switch (sort) {\n case SortOption.Name:\n return translate(\"SortByNameTitle\");\n case SortOption.Popularity:\n return translate(\"SortByPopularity\");\n case SortOption.ReleaseDate:\n return translate(\"SortByReleaseYear\");\n case SortOption.UserDefined:\n return translate(\"SortByUserDefined\");\n case SortOption.ArtistName:\n return translate(\"SortByArtist\");\n case SortOption.LatestAdded:\n return translate(\"SortByLastAdded\");\n }\n}\n","import { locale } from \"global/constants\";\nimport { DefaultLogMessage, log } from \"services/logger\";\nimport { AlbumsSorting, PlaylistTracksSorting, TracksSorting } from \"generated/graphql-types\";\nimport { SortOption } from \"models/app/SortOption\";\nimport type { AlbumPreviewModel } from \"models/domain\";\nimport type { AlbumArtistAlbumsPageModel } from \"models/domain/AlbumArtistAlbums\";\nimport type { ArtistAlbumsPageModel } from \"models/domain/ArtistAlbums\";\nimport { ContentType } from \"models/ModelType\";\n\nexport interface ResourceSortOptions {\n options: SortOption[];\n initial: SortOption;\n}\n\nconst albumSortOptions = {\n options: [SortOption.ReleaseDate, SortOption.Popularity, SortOption.Name],\n initial: SortOption.ReleaseDate\n};\nconst albumArtistAlbumSortOptions = {\n options: [SortOption.ReleaseDate, SortOption.Popularity, SortOption.Name],\n initial: SortOption.Popularity\n};\nconst albumSortOptionsFallback = [SortOption.Name, SortOption.ReleaseDate, SortOption.Popularity];\nconst playlistTracksSortOptions = {\n options: [SortOption.UserDefined, SortOption.LatestAdded, SortOption.Name, SortOption.ArtistName],\n initial: SortOption.UserDefined\n};\nconst artistAllTracksSortOptions = {\n options: [SortOption.Popularity, SortOption.Name, SortOption.ReleaseDate],\n initial: SortOption.Popularity\n};\nconst artistAppearsOnSortOptions = {\n options: [SortOption.Popularity, SortOption.Name, SortOption.ReleaseDate],\n initial: SortOption.Popularity\n};\n\nexport function convertToTracksSortOption(option: SortOption): TracksSorting {\n switch (option) {\n case SortOption.ArtistName:\n case SortOption.LatestAdded:\n case SortOption.Name:\n case SortOption.UserDefined:\n return TracksSorting.Alphabetically;\n case SortOption.Popularity:\n return TracksSorting.Popularity;\n case SortOption.ReleaseDate:\n return TracksSorting.Newest;\n }\n}\nexport function convertToAlbumSortOption(option: SortOption): AlbumsSorting {\n switch (option) {\n case SortOption.ArtistName:\n case SortOption.LatestAdded:\n case SortOption.Name:\n case SortOption.UserDefined:\n return AlbumsSorting.Alphabetically;\n case SortOption.Popularity:\n return AlbumsSorting.Popularity;\n case SortOption.ReleaseDate:\n return AlbumsSorting.Newest;\n }\n}\n\nexport function convertToPlaylistTracksSortOption(option: SortOption): PlaylistTracksSorting {\n switch (option) {\n case SortOption.Popularity:\n case SortOption.ReleaseDate:\n case SortOption.UserDefined:\n return PlaylistTracksSorting.TrackPosition;\n case SortOption.ArtistName:\n return PlaylistTracksSorting.ArtistTitle;\n case SortOption.Name:\n return PlaylistTracksSorting.TrackTitle;\n case SortOption.LatestAdded:\n return PlaylistTracksSorting.LatestAddedDesc;\n }\n}\n\nexport function getSortOptions(\n context: ContentType.ArtistAlbums | ContentType.ArtistAppearsOn | ContentType.ArtistSingles | ContentType.AlbumArtistAlbums | ContentType.Playlist | ContentType.ArtistTracks\n): ResourceSortOptions {\n switch (context) {\n case ContentType.ArtistAppearsOn:\n return artistAppearsOnSortOptions;\n case ContentType.ArtistAlbums:\n case ContentType.ArtistSingles:\n return albumSortOptions;\n case ContentType.AlbumArtistAlbums:\n return albumArtistAlbumSortOptions;\n case ContentType.Playlist:\n return playlistTracksSortOptions;\n case ContentType.ArtistTracks:\n return artistAllTracksSortOptions;\n }\n}\n\nexport function sortArtistAlbumsPageModel(model: ArtistAlbumsPageModel, option: SortOption): ArtistAlbumsPageModel {\n if (!model.albums) return model;\n const albumItems = sortArrayByOptions(model.albums.items, mixOptions(option, albumSortOptionsFallback), sortAlbumByOption);\n return {\n ...model,\n albums: { ...model.albums, items: albumItems }\n };\n}\n\nexport function sortAlbumArtistAlbumsPageModel(model: AlbumArtistAlbumsPageModel, option: SortOption): AlbumArtistAlbumsPageModel {\n if (!model.albums) return model;\n const albumItems = sortArrayByOptions(model.albums.items, mixOptions(option, albumSortOptionsFallback), sortAlbumByOption);\n return {\n ...model,\n albums: { ...model.albums, items: albumItems }\n };\n}\n\nfunction sortAlbumByOption(a: AlbumPreviewModel, b: AlbumPreviewModel, option: SortOption): number {\n switch (option) {\n case SortOption.Name:\n return compareString(a, b, (model) => model.title);\n // case SortOption.Popularity:\n // return -1 * compareString(a, b, (model) => model.title); // todo not implemented\n case SortOption.ReleaseDate:\n return -1 * compareDate(a, b, (model) => model.releaseDate);\n }\n\n log.error({ code: \"web-210210-2007\", msg: DefaultLogMessage.NotImplemented });\n return 0;\n}\n\nfunction mixOptions<T>(option: T, fallback: T[]) {\n if (fallback.indexOf(option) === -1) {\n log.error({ code: \"web-210210-2000\", msg: DefaultLogMessage.NotImplemented });\n }\n\n const options = [option, ...fallback];\n return [...new Set(options)];\n}\n\nfunction sortArrayByOptions<T>(array: T[], options: SortOption[], fn: (a: T, b: T, option: SortOption) => number) {\n return [...array].sort((a, b) => {\n for (let i = 0; i < options.length; i++) {\n const s = fn(a, b, options[i]);\n if (s !== 0) return s;\n }\n return 0;\n });\n}\n\nfunction compareString<T>(a: T, b: T, predicate: (model: T) => string | null): number {\n return (predicate(a) ?? \"\").localeCompare(predicate(b) ?? \"\", locale);\n}\n\nfunction compareDate<T>(a: T, b: T, predicate: (model: T) => Date | null): number {\n return (predicate(a)?.getTime() ?? 0) - (predicate(b)?.getTime() ?? 0);\n}\n","export function isNullOrEmpty(value: string | undefined | null) {\n if (value == null) return true;\n if (value.trim() == \"\") return true;\n\n return false;\n}\n","import { dispatch } from \"global\";\nimport { TAB_FOCUS_CHANGE } from \"global/actions\";\n\nexport function initTabActiveService() {\n function onVisibilityChange() {\n dispatch({ type: TAB_FOCUS_CHANGE, payload: { focus: document.visibilityState === \"visible\" } });\n }\n window.addEventListener(\"visibilitychange\", onVisibilityChange, { passive: true });\n}\n","export interface ScrollingTextItem {\n stopTimeoutId: number | null;\n running: Date | false;\n start: () => Date;\n stop: () => void;\n}\n\ninterface ScrollingTextGroup {\n startTimeoutId: number | null;\n waitTimeoutId: number | null;\n items: ScrollingTextItem[];\n add: (entry: ScrollingTextItem) => void;\n remove: (entry: ScrollingTextItem) => void;\n}\n\nconst createScrollingTextGroup: () => ScrollingTextGroup = () => {\n const entries: ScrollingTextItem[] = [];\n\n const add = (item: ScrollingTextItem) => {\n entries.push(item);\n update();\n };\n\n const remove = (item: ScrollingTextItem) => {\n if (entries.indexOf(item) !== -1) entries.splice(entries.indexOf(item), 1);\n item.stop();\n update();\n };\n\n const stop = (item: ScrollingTextItem) => {\n if (item.stopTimeoutId != null) {\n clearTimeout(item.stopTimeoutId);\n item.stopTimeoutId = null;\n }\n item.running = false;\n item.stop();\n };\n\n const group: ScrollingTextGroup = {\n items: [],\n add,\n remove,\n waitTimeoutId: null,\n startTimeoutId: null\n };\n\n const tryReset = (): boolean => {\n if (entries.length == 0) {\n if (group.startTimeoutId != null) {\n clearTimeout(group.startTimeoutId);\n group.startTimeoutId = null;\n }\n return true;\n }\n return false;\n };\n\n const tryWait = (): boolean => {\n if (group.waitTimeoutId != null) {\n clearTimeout(group.waitTimeoutId);\n group.waitTimeoutId = null;\n }\n const next = entries.filter((entry) => entry.running).sort((a, b) => (b.running as Date).getTime() - (a.running as Date).getTime())[0]?.running ?? false;\n if (next != false) {\n const timeout = next.getTime() - new Date().getTime();\n if (timeout > 0) {\n group.waitTimeoutId = window.setTimeout(update, timeout);\n return true;\n }\n }\n return false;\n };\n\n const tryStart = (): boolean => {\n if (group.startTimeoutId != null) return false;\n group.startTimeoutId = window.setTimeout(() => {\n group.startTimeoutId = null;\n entries.forEach((entry) => {\n entry.running = entry.start();\n const timeout = entry.running.getTime() - new Date().getTime();\n entry.stopTimeoutId = window.setTimeout(() => {\n stop(entry);\n }, timeout);\n });\n update();\n }, 4000);\n\n entries.forEach((entry) => {\n stop(entry);\n });\n return true;\n };\n\n const update = () => {\n if (tryReset()) return;\n if (tryWait()) return;\n tryStart();\n };\n return group;\n};\nexport const scrollingTextGroup = createScrollingTextGroup();\n","export function addQueryParameterToUrl(url: string, name: string, value: string): string {\n const hasQuery = url.indexOf(\"?\") !== -1;\n !hasQuery ? (url += \"?\") : (url += \"&\");\n\n const paramKeyValue = `${name}=${encodeURIComponent(value)}`;\n url += paramKeyValue;\n\n return url;\n}\n","import { getTokensNow, saveTokensNow, setTokenRefreshLockTrueForDebug } from \"services/appSession/operations/sessionTokens\";\n\nexport function initUserDebug() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).userDebug = {\n simulateInvalidAccessToken: () => simulateInvalidAccessToken(),\n simulateInvalidRefreshAndAccessToken: () => simulateInvalidRefreshAndAccessToken(),\n simulateRefreshBlockAndInvalidAccessToken: () => simulateRefreshBlockAndInvalidAccessToken(),\n simulateInvalidAccessTokenOnPageload: () => simulateInvalidAccessTokenOnPageload(),\n simulateInvalidRefreshAndAccessTokenOnPageload: () => simulateInvalidRefreshAndAccessTokenOnPageload(),\n simulateTemporaryTokenRefreshError: () => simulateTemporaryTokenRefreshError()\n };\n}\n\nconst invalidRefreshToken = \"invalid refreshToken (web test)\";\nconst invalidAccessToken = \"invalid accessToken (web test)\";\n\nfunction simulateInvalidAccessToken() {\n const { refreshToken } = getTokensNow();\n saveTokensNow(refreshToken, invalidAccessToken, false);\n}\n\nfunction simulateInvalidRefreshAndAccessToken() {\n saveTokensNow(invalidRefreshToken, invalidAccessToken, false);\n}\n\nfunction simulateRefreshBlockAndInvalidAccessToken() {\n setTokenRefreshLockTrueForDebug();\n const { refreshToken } = getTokensNow();\n saveTokensNow(refreshToken, invalidAccessToken, false);\n}\n\nfunction simulateInvalidAccessTokenOnPageload() {\n const { refreshToken } = getTokensNow();\n saveTokensNow(refreshToken, invalidAccessToken, false);\n window.location.reload();\n}\n\nfunction simulateInvalidRefreshAndAccessTokenOnPageload() {\n saveTokensNow(invalidRefreshToken, invalidAccessToken, false);\n window.location.reload();\n}\n\nlet temporary: number | undefined;\nexport function getSimulateTemporaryTokenRefreshError(): boolean {\n if (!temporary) return false;\n\n const now = new Date().getTime();\n return now < temporary;\n}\n\nfunction simulateTemporaryTokenRefreshError() {\n const { refreshToken } = getTokensNow();\n saveTokensNow(refreshToken, invalidAccessToken, false);\n\n const now = new Date().getTime();\n temporary = now + 1000 * 10;\n}\n","export * from \"./user\";\n","import { useSelector } from \"react-redux\";\nimport { getSimulateTemporaryTokenRefreshError } from \"./debug\";\nimport { dispatch, messageBus, store, waitForState } from \"global\";\nimport { headerNames, getAppVersionString } from \"shared/services\";\nimport { NOTIFICATION_BANNER_TOGGLE, USER_CHANGED, USER_HAS_BAD_TOKENS, USER_LOGGED_IN, USER_LOGGED_OUT, USER_LOGGING_OUT, USER_PROFILES_CHANGED } from \"global/actions\";\nimport { getInstallationId } from \"services/app\";\nimport { ensureOwnTokenSession } from \"services/appSession\";\nimport { getTokensNow, getTokens, removeTokens, setTokenRefreshLock, saveTokens } from \"services/appSession/operations/sessionTokens\";\nimport { getSharedTokens, removeSharedTokens } from \"services/appSession/operations/sharedTokens\";\nimport type { UserIdModel } from \"services/backend\";\nimport { getUser, getBackendBaseUrl, apiTokenPath, getUserProfiles } from \"services/backend\";\nimport { addEnvironmentVariablesToUrl } from \"services/environment\";\nimport { log, LogTag, trySendPlaybackReports } from \"services/logger\";\nimport { LogoutTrigger } from \"services/logger/analytics/properties/event\";\nimport { tryStopPlayAll } from \"services/player/inputs/service/actions\";\nimport { ConcurrentEntryGuard, getUrlParameter } from \"services/utils\";\nimport { BannerWarning, RootModel } from \"models/app\";\nimport { LoginState } from \"models/app\";\nimport { AudioContextAction } from \"models/app/player/AudioContext\";\nimport { showErrorModal2, showLoginErrorModal, showYourYearModal } from \"components/organisms/modal/modals\";\nimport equal from \"fast-deep-equal\";\nimport { addQueryParameterToUrl } from \"services/urlHelper\";\nimport { Feature, isFeatureEnabled, translate } from \"global/config\";\nimport { openToast } from \"components/organisms/toast\";\nimport { ProfileChangedToast } from \"components/organisms/toast/toasts\";\nimport { INVITE_NEEDED_MODAL_PROMPTED, showInviteFlowModal } from \"components/organisms/modal/modals/PokeSentryCutoffModal\";\nimport { deleteCookie } from \"services/cookies\";\n\nconst entryGuardForRefreshToken = new ConcurrentEntryGuard<RefreshTokenResult>();\n\n//#region Helpers\n\nexport function getUserIdFromState(): string | null {\n return store.getState().user.id;\n}\n\nexport async function getIsLoggedInFromState(): Promise<boolean> {\n await waitForState((store) => store.getState().user.state !== LoginState.Unknown);\n return store.getState().user.state === LoginState.LoggedIn;\n}\n\nexport function getIsLoggedInFromStateImmediate(): boolean {\n return store.getState().user.state === LoginState.LoggedIn;\n}\n\nexport const shouldDisplayAsLoggedIn = (state: LoginState): boolean => {\n switch (state) {\n case LoginState.LoggedIn:\n case LoginState.Unknown:\n case LoginState.TemporaryError:\n return true;\n case LoginState.LoggingOut:\n case LoginState.LoggedOut:\n return false;\n }\n};\n\nexport function useLoginState() {\n return useSelector((root: RootModel) => root.user.state);\n}\n\nexport function useDisplayLoggedIn() {\n const loggedIn = useSelector((root: RootModel) => root.user.state);\n return shouldDisplayAsLoggedIn(loggedIn);\n}\n\nexport function getPermissionsFromToken() {\n const { accessToken } = getTokensNow();\n if (accessToken) {\n const perm = getUrlParameter(\"perm\", accessToken);\n if (perm) {\n return perm.split(\";\");\n }\n }\n return [];\n}\n\nexport function hasPermissionFromToken(perm: \"cd\" | \"prof\") {\n return getPermissionsFromToken().includes(perm);\n}\n\nexport function getCurrentProfile() {\n return store.getState().user.profiles?.find((n) => n.current) ?? null;\n}\n\nexport function getCurrentProfileId() {\n return store.getState().user.profiles?.find((n) => n.current)?.id ?? null;\n}\n\n//#endregion\n\nenum TokenStatusCode {\n Ok = 0,\n CantGetUrl = 1,\n CantExchangeCode = 2,\n NoPlayRights = 3,\n FatalError = 4,\n TemporaryError = 5\n}\n\ninterface RefreshTokenResult {\n ok: boolean;\n accessToken: string | null;\n}\n\ntype FetchRefreshTokenResult = {\n tokenResult?: {\n access_token: string;\n refresh_token: string;\n expires_in?: number;\n };\n status: TokenStatusCode;\n};\n\ntype FetchRefreshTokenResultExt = FetchRefreshTokenResult & {\n correlationId: string | null;\n};\n\nasync function reestablishSessionOnPageload() {\n const user = store.getState().user;\n const tokens = await getTokens();\n\n let userResult: UserIdModel | null = null;\n\n // we dont have tokens, so go to logged-out state\n if (!tokens.refreshToken) {\n if (user.id) {\n // if we had a user, but something maliciously deleted the tokens, we log out fully\n log.error({ code: \"web-220801-0830\", msg: \"no tokens on pageload\" });\n logout(LogoutTrigger.Automatic);\n } else {\n // otherwise we just note that we aren't logged in\n dispatch({ type: USER_LOGGED_OUT });\n }\n return;\n }\n\n // we have tokens so lets validate them\n if (tokens.accessToken) {\n userResult = (await getUser()).model;\n if (userResult?.needInvite) {\n showInviteFlowModal();\n } else {\n deleteCookie(INVITE_NEEDED_MODAL_PROMPTED);\n dispatch({ type: NOTIFICATION_BANNER_TOGGLE, payload: { warning: BannerWarning.SentryCutoff, show: false } });\n }\n if (userResult) {\n setUserStateIfChanged(userResult);\n return;\n }\n }\n\n await tryRefreshToken();\n}\n\nexport async function establishSessionFromLogin(refreshToken: string, accessToken: string) {\n ensureOwnTokenSession();\n saveTokens(refreshToken, accessToken, \"login\");\n\n const userResult = (await getUser()).model;\n if (!userResult?.id) {\n logout(LogoutTrigger.Automatic);\n return;\n }\n\n dispatch({\n type: USER_LOGGED_IN,\n payload: {\n id: userResult.id, // todo: followup and make graphql give these as nonnull\n trackingId: userResult.trackingId ?? \"\",\n username: userResult.username ?? null,\n profiles: userResult.profiles,\n profileDefaultColors: userResult.profileDefaultColors,\n profilesNumberLimit: userResult.profilesNumberLimit,\n isNewUser: true\n }\n });\n}\n\nexport async function onGqlUnauthenticated(): Promise<{ ok: boolean; accessToken: string | null }> {\n const tokens = await getTokens();\n const hasUserId = !!getUserIdFromState();\n\n if (!tokens.refreshToken) {\n log.error({ code: \"web-220731-2001\", msg: \"user has no refreshToken but requesting private resources\" });\n logout(LogoutTrigger.Automatic);\n return { ok: false, accessToken: null };\n }\n\n if (!hasUserId) {\n log.error({ code: \"web-220731-1959\", msg: \"user not logged in but requesting private resources\" });\n }\n\n return await tryRefreshToken();\n}\n\nexport function tryRefreshToken(forceValidate = false): Promise<RefreshTokenResult> {\n return entryGuardForRefreshToken.call(async () => {\n let result = await getRefreshTokenResultFromOtherSession();\n if (!result) result = await getRefreshTokenResultFromBackend();\n const handleOK = await handleTokenResult(result, forceValidate);\n\n return handleOK ?? { ok: false, accessToken: null };\n });\n}\n\nasync function handleTokenResult(result: FetchRefreshTokenResultExt, forceValidate = false): Promise<RefreshTokenResult | null> {\n try {\n const oldTokens = getTokensNow();\n const { status, tokenResult, correlationId } = result;\n const user = store.getState().user;\n const oldProfileId = getCurrentProfileId();\n const validateProfile = hasPermissionFromToken(\"prof\") && isFeatureEnabled(Feature.Profiles) && oldProfileId;\n\n switch (result.status) {\n case TokenStatusCode.Ok: {\n const accessToken = tokenResult?.access_token;\n if (!accessToken) {\n log.error({ code: \"web-220819-1419\", msg: \"no access token user after successful refresh\" });\n break;\n }\n\n const tokenUserId = getUrlParameter(\"user_id\", accessToken);\n const userChanged = tokenUserId !== user.id;\n\n if (userChanged || forceValidate || !user.id) {\n const userResult = (await getUser()).model;\n if (!userResult) {\n log.error({ code: \"web-220819-1455\", msg: \"no user after successful refresh\" });\n break;\n }\n await setUserStateIfChanged(userResult);\n } else {\n await dispatch({\n type: USER_LOGGED_IN,\n payload: {\n id: user.id,\n username: user.username ?? null,\n trackingId: user.trackingId ?? \"\",\n profiles: user.profiles,\n profileDefaultColors: user.profileDefaultColors,\n profilesNumberLimit: user.profilesNumberLimit,\n isNewUser: false\n }\n });\n }\n\n const currentProfile = getCurrentProfile();\n if (validateProfile && currentProfile && oldProfileId != currentProfile?.id) {\n openToast(ProfileChangedToast(currentProfile.title));\n }\n\n log.info({ code: \"web-220819-1455\", msg: \"successful refresh of token\" });\n return { ok: true, accessToken };\n }\n case TokenStatusCode.TemporaryError: {\n log.info({ code: \"web-030711-1258\", msg: \"temporary error while trying to refresh token\" });\n dispatch({ type: USER_HAS_BAD_TOKENS });\n break;\n }\n case TokenStatusCode.FatalError: {\n logoutNow(LogoutTrigger.Automatic);\n break;\n }\n case TokenStatusCode.NoPlayRights: {\n // todo: show a \"your subscription has ended\" modal\n logoutNow(LogoutTrigger.NoMusicRights);\n break;\n }\n default: {\n // our tokens are permanently bad, i.e. we'll never log in with them\n log.info({ code: \"web-030711-1259\", msg: \"fatal error while trying to refresh of token\" });\n logoutNow(LogoutTrigger.Automatic);\n break;\n }\n }\n\n log.error({\n code: \"web-220112-1230\",\n msg: \"unable to refresh token\",\n\n data: {\n refreshToken: oldTokens.refreshToken ?? \"\",\n accessToken: oldTokens.accessToken ?? \"\",\n status: status && TokenStatusCode[status]\n },\n\n correlationId: correlationId ?? undefined\n });\n } catch (e) {\n log.error({ code: \"web-220819-1515\", msg: \"error in _tryRefreshToken\", error: e });\n }\n\n return { ok: false, accessToken: null };\n}\n\nasync function getRefreshTokenResultFromOtherSession(): Promise<FetchRefreshTokenResultExt | null> {\n const { accessToken: oldAccessToken } = getTokensNow();\n const { refreshToken: newRefreshToken, accessToken: newAccessToken } = await getTokens();\n\n if (newAccessToken && newRefreshToken && oldAccessToken !== newAccessToken) {\n log.info({ code: \"web-220824-1122\", msg: \"other tab refreshed tokens succesfully\" });\n return {\n tokenResult: {\n access_token: newAccessToken,\n refresh_token: newRefreshToken\n },\n correlationId: null,\n status: TokenStatusCode.Ok\n };\n }\n return null;\n}\n\nasync function getRefreshTokenResultFromBackend(profileId?: string): Promise<FetchRefreshTokenResultExt> {\n const tokens = await getTokens();\n if (!tokens.refreshToken) {\n log.error({ code: \"web-220819-1455\", msg: \"no refresh token before fething tokens from backend\" });\n return { status: TokenStatusCode.TemporaryError, correlationId: null };\n }\n\n setTokenRefreshLock(true);\n const result = await fetchRefreshedTokenFromBackend(profileId ?? getUserIdFromState() ?? undefined);\n if (result.status === TokenStatusCode.Ok) {\n const tokenResult = result.tokenResult;\n if (tokenResult) {\n saveTokens(tokenResult.refresh_token, tokenResult.access_token, \"refresh\");\n } else {\n log.error({ code: \"web-220819-1455\", msg: \"recieved no tokens after successful refresh\" });\n result.status = TokenStatusCode.TemporaryError;\n }\n }\n\n setTokenRefreshLock(false);\n return result;\n}\n\nasync function fetchRefreshedTokenFromBackend(profileId?: string): Promise<FetchRefreshTokenResultExt> {\n if (getSimulateTemporaryTokenRefreshError()) return { status: TokenStatusCode.TemporaryError, correlationId: null };\n\n const { refreshToken } = getTokensNow();\n let correlationId: string | null = null;\n\n let url = addEnvironmentVariablesToUrl(getBackendBaseUrl(apiTokenPath));\n if (profileId && hasPermissionFromToken(\"prof\") && isFeatureEnabled(Feature.Profiles)) {\n url = addQueryParameterToUrl(url, \"profileId\", profileId);\n }\n\n try {\n const res = await fetch(url, {\n method: \"POST\",\n mode: \"cors\",\n headers: {\n [headerNames.contentType]: \"application/json\",\n [headerNames.appVersion]: getAppVersionString(),\n [headerNames.installationId]: getInstallationId()\n },\n body: JSON.stringify({\n refresh_token: refreshToken\n })\n });\n\n correlationId = res.headers.get(\"Correlation-Id\") ?? null; // todo: why isnt this x-correlation-id? its what backend sends though\n\n if (res.ok) {\n const data = (await res.json()) as FetchRefreshTokenResult;\n return {\n ...data,\n correlationId\n };\n }\n } catch (error) {\n log.error({ code: \"web-220819-1524\", msg: \"error when fetching refresh token from backend\", error });\n }\n\n return {\n correlationId,\n status: TokenStatusCode.TemporaryError\n };\n}\n\nexport function logout(trigger: LogoutTrigger) {\n const user = store.getState().user;\n if (user.state === LoginState.LoggingOut || user.state === LoginState.LoggedOut) {\n log.error({ code: \"web-220825-1251\", msg: \"already logged out\" });\n return;\n }\n\n log.info({ code: \"web-220825-1452\", msg: \"log out\" });\n\n const { refreshTokenDate } = getTokensNow();\n\n dispatch({\n type: USER_LOGGING_OUT,\n payload: {\n id: user.id ?? \"\",\n trackingId: user.trackingId ?? \"\",\n trigger,\n refreshTokenDate\n }\n });\n\n dispatch({ type: NOTIFICATION_BANNER_TOGGLE, payload: { warning: BannerWarning.SentryCutoff, show: false } });\n}\n\nexport function logoutNow(trigger: LogoutTrigger) {\n ensureOwnTokenSession();\n removeTokens();\n logout(trigger);\n}\n\nasync function setUserStateIfChanged(userResult: UserIdModel | null) {\n const user = store.getState().user;\n\n const newId = userResult?.id;\n const oldId = user.id;\n const oldState = user.state;\n\n if (!newId && (oldId || oldState !== LoginState.LoggedOut)) {\n logout(LogoutTrigger.Automatic);\n return;\n }\n\n if (newId && (newId !== oldId || userResult.username !== user.username || oldState !== LoginState.LoggedIn)) {\n await dispatch({\n type: USER_LOGGED_IN,\n payload: {\n id: newId,\n trackingId: userResult.trackingId ?? \"\",\n username: userResult.username ?? null,\n profiles: userResult.profiles,\n profileDefaultColors: userResult.profileDefaultColors,\n profilesNumberLimit: userResult.profilesNumberLimit,\n isNewUser: userResult.id !== getUserIdFromState()\n }\n });\n } else if (newId && !equal(user.profiles, userResult.profiles)) {\n await dispatch({\n type: USER_PROFILES_CHANGED,\n payload: {\n profiles: userResult.profiles,\n profileDefaultColors: userResult.profileDefaultColors,\n profilesNumberLimit: userResult.profilesNumberLimit,\n currentProfileChanged: user.profiles.find((n) => n.current)?.id !== userResult.profiles.find((n) => n.current)?.id\n }\n });\n }\n}\n\nexport async function changeUserProfile(profileId: string) {\n // todo: implement locking and multi-session handling etc\n\n const user = store.getState().user;\n const res = await getRefreshTokenResultFromBackend(profileId);\n const ok = !!res?.tokenResult?.access_token;\n if (ok) {\n const result = await getUser();\n const activeProfile = result.model?.profiles?.find((n) => n.current);\n\n if (result.success && result.model?.id && activeProfile) {\n if (activeProfile.id === profileId) {\n openToast(ProfileChangedToast(activeProfile.title));\n } else {\n console.log(result.model);\n const profiles = await getUserProfiles();\n const exists = profiles.model?.profiles.some((n) => n.id == profileId);\n if (exists) {\n showErrorModal2(translate(\"SwitchProfileFailsTitle\"), translate(\"SwitchProfileFailsSubtitle\"));\n } else {\n showErrorModal2(translate(\"SwitchProfileFailsTitle\"), translate(\"SwitchProfileDeletedSubtitle\"));\n }\n }\n\n if (result.model.id !== user.id) {\n dispatch({\n type: USER_LOGGED_IN,\n payload: {\n id: result.model.id,\n trackingId: result.model.trackingId ?? \"\",\n username: result.model.username ?? null,\n profiles: result.model.profiles,\n profileDefaultColors: result.model.profileDefaultColors,\n profilesNumberLimit: result.model.profilesNumberLimit,\n isNewUser: true\n }\n });\n } else {\n await dispatch({\n type: USER_PROFILES_CHANGED,\n payload: {\n profiles: result.model.profiles,\n profileDefaultColors: result.model.profileDefaultColors,\n profilesNumberLimit: result.model.profilesNumberLimit,\n currentProfileChanged: user.profiles.find((n) => n.current)?.id !== result.model.profiles.find((n) => n.current)?.id\n }\n });\n }\n return true;\n }\n }\n\n showErrorModal2(translate(\"SwitchProfileFailsTitle\"), translate(\"SwitchProfileFailsSubtitle\"));\n return false;\n}\n\nexport async function reloadProfiles() {\n const user = store.getState().user;\n const result = await getUser();\n if (result.success && result.model) {\n await dispatch({\n type: USER_PROFILES_CHANGED,\n payload: {\n profiles: result.model.profiles,\n profileDefaultColors: result.model.profileDefaultColors,\n profilesNumberLimit: result.model.profilesNumberLimit,\n currentProfileChanged: user.profiles.find((n) => n.current)?.id !== result.model.profiles.find((n) => n.current)?.id\n }\n });\n }\n}\n\nexport const initUserService = async () => {\n try {\n messageBus.subscribeEvery(USER_LOGGING_OUT, async () => {\n tryStopPlayAll({ action: AudioContextAction.UserLogOut, trace: null });\n await trySendPlaybackReports();\n log.info({ code: \"web-220927-0958\", msg: \"--- logging out\", tags: [LogTag.User] });\n setTimeout(() => {\n // todo: technical debt.\n // the reason this is in a timeout is because analytics for logout has some async stuff that isnt easily synchronized with this.\n // lets find a clean way to make one wait for the other; ideally by awaiting some dispatch and having this sync on the messagebus,\n // but it could so be having the analytics fetch some of its data in two steps,\n // or a mechanism so we can register promises after USER_LOGGING_OUT that have to resolve before this USER_LOGGING_OUT handler continues\n ensureOwnTokenSession();\n removeTokens();\n dispatch({ type: USER_LOGGED_OUT });\n }, 500);\n });\n } catch (e) {\n log.error({ code: \"web-220222-1322\", msg: \"error in initiating user service\", error: e });\n }\n\n await reestablishSessionOnPageload();\n setupUserChangedEvent();\n\n const loginErrorEode = getUrlParameter(\"loginerrorcode\");\n const hasBeenPoked = getUrlParameter(\"hasBeenPoked\");\n if (loginErrorEode) {\n // wait until the rest of the page has had time to initialize\n setTimeout(() => {\n showLoginErrorModal(parseInt(loginErrorEode, 10), hasBeenPoked === \"true\");\n }, 500);\n }\n};\n\n// Executed early to retrieve tokens that were given to us on the querystring or in shared localstorage during login.\nexport async function initLoginFromPageLoad() {\n const initLoginFromQueryString = async () => {\n const refresh = getUrlParameter(\"refresh\");\n const access = getUrlParameter(\"access\");\n if (refresh && access) {\n await establishSessionFromLogin(refresh, access);\n document.location.href = \"/\";\n }\n };\n\n const initLoginFromSharedLocalStorage = async () => {\n const { refreshToken, accessToken } = getSharedTokens();\n if (refreshToken && accessToken) await establishSessionFromLogin(refreshToken, accessToken);\n removeSharedTokens();\n };\n\n try {\n await initLoginFromQueryString();\n await initLoginFromSharedLocalStorage();\n } catch (e) {\n log.error({ code: \"web-220218-1425\", msg: \"init login from page load\", error: e });\n }\n}\n\n// Convenience event for when the user changes. This will not be raised when the application is reloaded and the user already is logged in.\nconst setupUserChangedEvent = async () => {\n await waitForState((store) => store.getState().user.state !== LoginState.Unknown);\n lastLoginState = store.getState().user.state;\n lastUserId = store.getState().user.id;\n\n messageBus.subscribeEvery(USER_LOGGED_IN, async (msg) => {\n if (lastLoginState !== LoginState.Unknown && msg.payload.id !== lastUserId) {\n dispatch({\n type: USER_CHANGED,\n payload: {\n isLoggedIn: true,\n wasLoggedIn: lastLoginState === LoginState.LoggedIn,\n newId: msg.payload.id,\n oldId: lastUserId\n }\n });\n }\n lastLoginState = LoginState.LoggedIn;\n lastUserId = msg.payload.id;\n });\n\n messageBus.subscribeEvery(USER_LOGGED_OUT, async () => {\n if (lastLoginState !== LoginState.LoggedOut && lastLoginState !== LoginState.LoggingOut) {\n dispatch({\n type: USER_CHANGED,\n payload: {\n isLoggedIn: false,\n wasLoggedIn: true,\n newId: null,\n oldId: lastUserId\n }\n });\n lastLoginState = LoginState.LoggedOut;\n lastUserId = null;\n }\n });\n};\n\nlet lastLoginState: LoginState = \"unknown\" as LoginState;\nlet lastUserId: string | null = null;\n","export function getNextUUID(): string {\n return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toFixed(); // todo\n}\n\nexport function getRandomUUID(): string {\n return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toFixed();\n}\nexport function lerp(from: number, to: number, fraction: number) {\n return fraction * (to - from) + from;\n}\n\nexport function getUrlParameter(name: string, source: string = location.search) {\n name = name.replace(/[[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n const regex = new RegExp(`[\\\\?&]${name}=([^&#]*)`);\n const results = regex.exec(source);\n return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function cloneWithDefaultValues(currentValues: any, defaultValues: any) {\n if (!currentValues) return defaultValues;\n const result = { ...currentValues };\n for (const key in defaultValues) {\n const isCurrentObject = typeof result[key] === \"object\" && !!result[key] && !Array.isArray(result[key]);\n const isDefaultObject = typeof defaultValues[key] === \"object\" && !!defaultValues[key] && !Array.isArray(defaultValues[key]);\n if ((isCurrentObject !== isDefaultObject && !!defaultValues[key]) || result[key] === undefined) {\n result[key] = defaultValues[key];\n } else if (isDefaultObject) {\n result[key] = cloneWithDefaultValues(result[key], defaultValues[key]);\n }\n }\n return result;\n}\n\nexport class ConcurrentEntryGuard<T> {\n promise: Promise<T> | null = null;\n call = async (callback: () => Promise<T>) => {\n if (this.promise) return await this.promise;\n this.promise = callback();\n try {\n return await this.promise;\n } finally {\n this.promise = null;\n }\n };\n}\n\nexport function getUnique<T>(items: T[], getKey: (item: T) => string): T[] {\n return items.reduce(\n (state, item) => {\n const key = getKey(item);\n if (!state.lookup[key]) {\n state.lookup[key] = true;\n state.items.push(item);\n }\n return state;\n },\n {\n lookup: {} as { [index: string]: boolean },\n items: [] as T[]\n }\n ).items;\n}\n\nexport async function flattenArrayOfPromisesOrData<T>(arr: (T | Promise<T>)[]): Promise<T[]> {\n const result: T[] = [];\n for (let i = 0; i < arr.length; i++) {\n const elem = arr[i];\n const resolved = elem ? (await Promise.resolve(elem)) : (elem as T);\n result.push(resolved);\n }\n return result;\n}","export * from \"./inputValidation\";","export enum InputEmailValidation {\n Empty = \"Empty\",\n Invalid = \"Invalid\",\n OK = \"OK\"\n}\n\nexport function validateEmail(email: string): InputEmailValidation {\n if (email.length === 0) return InputEmailValidation.Empty;\n if (email.length > 320) return InputEmailValidation.Invalid;\n if (!/^\\w+([\\\\.-]?\\w+)*@\\w+([\\\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(email)) return InputEmailValidation.Invalid;\n\n return InputEmailValidation.OK;\n}\n\nexport enum FeedbackTextValidation {\n Empty,\n OK,\n TooLong,\n TooShort\n}\n\nexport function validateFeedbackText(text: string, min: number, max: number): FeedbackTextValidation {\n if (text.length === 0) return FeedbackTextValidation.Empty;\n if (text.length < min) return FeedbackTextValidation.TooShort;\n if (text.length > max) return FeedbackTextValidation.TooLong;\n\n return FeedbackTextValidation.OK;\n}\n\nexport function formatInputText(text: string): string {\n return text.trim();\n}\n","export enum WebAppBrand {\n YouSee = \"YouSee\",\n Telmore = \"Telmore\"\n}\n\nexport enum WebAppEnvironment {\n Development = \"development\",\n Production = \"production\"\n}\n","export * from \"./app\";\n","import { appSettingsShared } from \"./\";\nimport { parseIntAsNormalPositiveNumberOrNull } from \"./formatters\";\n\nexport interface AppVersionModel {\n major: number;\n minor: number;\n release: number;\n build: number;\n}\n\nlet appVersion: AppVersionModel | null = null;\n\nexport function getCurrentAppVersion(): AppVersionModel {\n if (appVersion == null) appVersion = readAppVersionOrDefault();\n return appVersion;\n}\n\nfunction readAppVersionOrDefault(): AppVersionModel {\n let version = readAppVersion();\n if (version == null) version = { major: 0, minor: 0, release: 0, build: 0 };\n return version;\n}\n\ndeclare const WEBPACK_BUILDVERSION: string;\n\nfunction readAppVersion(): AppVersionModel | null {\n let buildVersion = WEBPACK_BUILDVERSION;\n\n if (buildVersion == null || typeof buildVersion !== \"string\") {\n console.error(\"no build version\");\n return null;\n }\n\n const regs = /[^.]+$/.exec(buildVersion);\n\n if (!regs) {\n console.error(\"wrong build version format\");\n return null;\n }\n\n buildVersion = regs[0];\n\n let appVersion = appSettingsShared.AppVersion;\n\n if (appVersion.indexOf(\"{build}\") === -1) {\n console.error(\"wrong format in app version\");\n return null;\n }\n\n appVersion = appVersion.replace(\"{build}\", buildVersion);\n\n const versions = appVersion.split(\".\");\n if (versions.length != 4) {\n console.error(\"wrong format in app version\");\n return null;\n }\n\n const major = parseIntAsNormalPositiveNumberOrNull(versions[0]);\n const minor = parseIntAsNormalPositiveNumberOrNull(versions[1]);\n const release = parseIntAsNormalPositiveNumberOrNull(versions[2]);\n const build_ = parseIntAsNormalPositiveNumberOrNull(versions[3]);\n\n if (major == null || minor == null || release == null || build_ == null) {\n console.error(\"wrong format in app version\");\n return null;\n }\n\n return {\n major,\n minor,\n release,\n build: build_\n };\n}\n\nlet appVersionString: string | null;\nexport function getAppVersionString() {\n if (appVersionString != null) return appVersionString;\n const version = getCurrentAppVersion();\n appVersionString = `${version.major}.${version.minor}.${version.release}.${version.build}`;\n return appVersionString;\n}\n\nlet appVersionNumber: number | null;\nexport function getAppVersionNumber() {\n if (appVersionNumber != null) return appVersionNumber;\n const version = getCurrentAppVersion();\n appVersionNumber = Number(`${version.major}${version.minor.toString().padEnd(2, \"0\")}${version.release.toString().padEnd(2, \"0\")}`);\n return appVersionNumber;\n}\n","export * from \"./numberHelpers\";\n","export function parseIntAsNormalPositiveNumberOrNull(value: string): number | null {\n if (!/\\d+/.test(value)) return null;\n\n const num = Number(value);\n\n if (isNaN(num)) return null;\n if (num == null) return null;\n if (num === Infinity) return null;\n\n return num;\n}\n","export * from \"./appSettings\";\nexport * from \"./serviceWorkerConfig\";\nimport appSettingsShared from \"../../../appSettingsShared.json\";\nexport { appSettingsShared };\n","import type { AppVersionModel } from \"./appSettings\";\n\nexport enum PostMessageName {\n SwVersion = \"SwVersion\"\n}\n\nexport interface SwVersion {\n type: PostMessageName.SwVersion;\n version: AppVersionModel;\n reloadDelayMs: number;\n}\n\nexport type PostMessage = SwVersion;\n","export enum CacheType {\n GraphQL = \"GraphQL\",\n Hls = \"Hls\",\n Navigate = \"Navigate\",\n External = \"External\",\n DevTool = \"DevTool\",\n Default = \"Default\",\n DelegatedLogin = \"DelegatedLogin\",\n GraphQLTrackStream = \"GraphQLTrackStream\"\n}\n\nexport const serviceWorkerConfig = {\n enabled: true,\n cacheNameGraphql: \"graphql-v9\",\n cacheNameHls: \"hls-v9\",\n cacheNameInstallation: \"installation-v9\",\n cacheNameNavigate: \"navigate-v9\",\n maxCacheEntriesDefault: 1000,\n maxCacheEntriesGraphql: 1000,\n maxCacheEntriesHls: 100 * 60, // 100 songs x 240 sex / 4 secs per hls fragment\n maxCacheEntriesNavigate: 1000,\n enableInstallationCacheFirst: false\n};\n\nexport const headerNames = {\n acceptLanguage: \"Accept-Language\",\n appVersion: \"X-App-Version\", // consider renaming to X-Client-Version, to match X-Client-Id\n authorization: \"authorization\",\n cacheType: \"X-Cache-Type\",\n contentType: \"Content-Type\",\n correlationId: \"X-Correlation-Id\",\n hlsCaller: \"X-Hls-Caller\",\n installationId: \"X-Client-Id\",\n onlyForCache: \"X-Only-For-Cache\",\n operationName: \"X-Operation-Name\",\n operationType: \"X-Operation-Type\",\n platform: \"X-Platform\",\n requestTime: \"X-Request-Time\",\n user: \"X-User\",\n userAgent: \"User-Agent\"\n};\n\nexport const cacheNames = [\n serviceWorkerConfig.cacheNameGraphql,\n serviceWorkerConfig.cacheNameHls,\n serviceWorkerConfig.cacheNameInstallation,\n serviceWorkerConfig.cacheNameNavigate\n];\n\nexport const appReloadServiceConfig = {\n pollUpdateIntervalMs: 5 * 60 * 1000, // 5 minutes\n reloadDelayMs: 24 * 60 * 60 * 1000, // 24 hours\n pollUpdateEnabled: true,\n enableAutoReload: true\n};\n","import { WebAppBrand } from \"shared/models\";\nimport \"theme.scss\";\nimport { appInit } from \"global/config\";\nimport type { BuildEnvironment } from \"services/environment\";\nimport { getEnvironmentConfigTelmoreDefault } from \"services/environment\";\nimport * as Danish from \"generated/localization-da-telmore.json\";\nimport * as English from \"generated/localization-en-telmore.json\";\n\nconst environment: BuildEnvironment = {\n environment: { ...getEnvironmentConfigTelmoreDefault(), webAppBrand: WebAppBrand.Telmore },\n translations: { Danish, English }\n};\n\nappInit(environment);\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","import { ApolloLink } from \"./ApolloLink.js\";\nexport var execute = ApolloLink.execute;\n//# sourceMappingURL=execute.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport var serializeFetchParameter = function (p, label) {\n var serialized;\n try {\n serialized = JSON.stringify(p);\n }\n catch (e) {\n var parseError = __DEV__ ? new InvariantError(\"Network request failed. \".concat(label, \" is not serializable: \").concat(e.message)) : new InvariantError(24);\n parseError.parseError = e;\n throw parseError;\n }\n return serialized;\n};\n//# sourceMappingURL=serializeFetchParameter.js.map","export var selectURI = function (operation, fallbackURI) {\n var context = operation.getContext();\n var contextURI = context.uri;\n if (contextURI) {\n return contextURI;\n }\n else if (typeof fallbackURI === 'function') {\n return fallbackURI(operation);\n }\n else {\n return fallbackURI || '/graphql';\n }\n};\n//# sourceMappingURL=selectURI.js.map","import { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function readerIterator(reader) {\n var iterator = {\n next: function () {\n return reader.read();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=reader.js.map","import { isAsyncIterableIterator, isBlob, isNodeResponse, isNodeReadableStream, isReadableStream, isStreamableBlob, } from \"../../utilities/common/responseIterator.js\";\nimport asyncIterator from \"./iterators/async.js\";\nimport nodeStreamIterator from \"./iterators/nodeStream.js\";\nimport promiseIterator from \"./iterators/promise.js\";\nimport readerIterator from \"./iterators/reader.js\";\nexport function responseIterator(response) {\n var body = response;\n if (isNodeResponse(response))\n body = response.body;\n if (isAsyncIterableIterator(body))\n return asyncIterator(body);\n if (isReadableStream(body))\n return readerIterator(body.getReader());\n if (isStreamableBlob(body)) {\n return readerIterator(body.stream().getReader());\n }\n if (isBlob(body))\n return promiseIterator(body.arrayBuffer());\n if (isNodeReadableStream(body))\n return nodeStreamIterator(body);\n throw new Error(\"Unknown body type for responseIterator. Please pass a streamable response.\");\n}\n//# sourceMappingURL=responseIterator.js.map","import { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function promiseIterator(promise) {\n var resolved = false;\n var iterator = {\n next: function () {\n if (resolved)\n return Promise.resolve({\n value: undefined,\n done: true,\n });\n resolved = true;\n return new Promise(function (resolve, reject) {\n promise\n .then(function (value) {\n resolve({ value: value, done: false });\n })\n .catch(reject);\n });\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=promise.js.map","import { canUseAsyncIteratorSymbol } from \"./canUse.js\";\nexport function isNodeResponse(value) {\n return !!value.body;\n}\nexport function isReadableStream(value) {\n return !!value.getReader;\n}\nexport function isAsyncIterableIterator(value) {\n return !!(canUseAsyncIteratorSymbol &&\n value[Symbol.asyncIterator]);\n}\nexport function isStreamableBlob(value) {\n return !!value.stream;\n}\nexport function isBlob(value) {\n return !!value.arrayBuffer;\n}\nexport function isNodeReadableStream(value) {\n return !!value.pipe;\n}\n//# sourceMappingURL=responseIterator.js.map","export default function asyncIterator(source) {\n var _a;\n var iterator = source[Symbol.asyncIterator]();\n return _a = {\n next: function () {\n return iterator.next();\n }\n },\n _a[Symbol.asyncIterator] = function () {\n return this;\n },\n _a;\n}\n//# sourceMappingURL=async.js.map","import { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function nodeStreamIterator(stream) {\n var cleanup = null;\n var error = null;\n var done = false;\n var data = [];\n var waiting = [];\n function onData(chunk) {\n if (error)\n return;\n if (waiting.length) {\n var shiftedArr = waiting.shift();\n if (Array.isArray(shiftedArr) && shiftedArr[0]) {\n return shiftedArr[0]({ value: chunk, done: false });\n }\n }\n data.push(chunk);\n }\n function onError(err) {\n error = err;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n cleanup = function () {\n cleanup = null;\n stream.removeListener(\"data\", onData);\n stream.removeListener(\"error\", onError);\n stream.removeListener(\"end\", onEnd);\n stream.removeListener(\"finish\", onEnd);\n stream.removeListener(\"close\", onEnd);\n };\n stream.on(\"data\", onData);\n stream.on(\"error\", onError);\n stream.on(\"end\", onEnd);\n stream.on(\"finish\", onEnd);\n stream.on(\"close\", onEnd);\n function getNext() {\n return new Promise(function (resolve, reject) {\n if (error)\n return reject(error);\n if (data.length)\n return resolve({ value: data.shift(), done: false });\n if (done)\n return resolve({ value: undefined, done: true });\n waiting.push([resolve, reject]);\n });\n }\n var iterator = {\n next: function () {\n return getNext();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=nodeStream.js.map","export var throwServerError = function (response, result, message) {\n var error = new Error(message);\n error.name = 'ServerError';\n error.response = response;\n error.statusCode = response.status;\n error.result = result;\n throw error;\n};\n//# sourceMappingURL=throwServerError.js.map","import { __extends, __spreadArray } from \"tslib\";\nimport \"../utilities/globals/index.js\";\nimport { isNonNullObject } from \"../utilities/index.js\";\nexport var PROTOCOL_ERRORS_SYMBOL = Symbol();\nexport function graphQLResultHasProtocolErrors(result) {\n if (result.extensions) {\n return Array.isArray(result.extensions[PROTOCOL_ERRORS_SYMBOL]);\n }\n return false;\n}\nexport function isApolloError(err) {\n return err.hasOwnProperty('graphQLErrors');\n}\nvar generateErrorMessage = function (err) {\n var errors = __spreadArray(__spreadArray(__spreadArray([], err.graphQLErrors, true), err.clientErrors, true), err.protocolErrors, true);\n if (err.networkError)\n errors.push(err.networkError);\n return errors\n .map(function (err) { return isNonNullObject(err) && err.message || 'Error message not found.'; })\n .join('\\n');\n};\nvar ApolloError = (function (_super) {\n __extends(ApolloError, _super);\n function ApolloError(_a) {\n var graphQLErrors = _a.graphQLErrors, protocolErrors = _a.protocolErrors, clientErrors = _a.clientErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;\n var _this = _super.call(this, errorMessage) || this;\n _this.name = 'ApolloError';\n _this.graphQLErrors = graphQLErrors || [];\n _this.protocolErrors = protocolErrors || [];\n _this.clientErrors = clientErrors || [];\n _this.networkError = networkError || null;\n _this.message = errorMessage || generateErrorMessage(_this);\n _this.extraInfo = extraInfo;\n _this.__proto__ = ApolloError.prototype;\n return _this;\n }\n return ApolloError;\n}(Error));\nexport { ApolloError };\n//# sourceMappingURL=index.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { responseIterator } from \"./responseIterator.js\";\nimport { throwServerError } from \"../utils/index.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../../errors/index.js\";\nimport { isApolloPayloadResult } from \"../../utilities/common/incrementalResult.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function readMultipartBody(response, observer) {\n var _a, _b, _c, _d, _e;\n return __awaiter(this, void 0, void 0, function () {\n var decoder, contentType, delimiter, boundaryVal, boundary, buffer, iterator, running, _f, value, done, chunk, searchFrom, bi, message, i, headers, contentType_1, body, result, next;\n var _g, _h;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n if (TextDecoder === undefined) {\n throw new Error(\"TextDecoder must be defined in the environment: please import a polyfill.\");\n }\n decoder = new TextDecoder(\"utf-8\");\n contentType = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get(\"content-type\");\n delimiter = \"boundary=\";\n boundaryVal = (contentType === null || contentType === void 0 ? void 0 : contentType.includes(delimiter))\n ? contentType === null || contentType === void 0 ? void 0 : contentType.substring((contentType === null || contentType === void 0 ? void 0 : contentType.indexOf(delimiter)) + delimiter.length).replace(/['\"]/g, \"\").replace(/\\;(.*)/gm, \"\").trim()\n : \"-\";\n boundary = \"\\r\\n--\".concat(boundaryVal);\n buffer = \"\";\n iterator = responseIterator(response);\n running = true;\n _j.label = 1;\n case 1:\n if (!running) return [3, 3];\n return [4, iterator.next()];\n case 2:\n _f = _j.sent(), value = _f.value, done = _f.done;\n chunk = typeof value === \"string\" ? value : decoder.decode(value);\n searchFrom = buffer.length - boundary.length + 1;\n running = !done;\n buffer += chunk;\n bi = buffer.indexOf(boundary, searchFrom);\n while (bi > -1) {\n message = void 0;\n _g = [\n buffer.slice(0, bi),\n buffer.slice(bi + boundary.length),\n ], message = _g[0], buffer = _g[1];\n i = message.indexOf(\"\\r\\n\\r\\n\");\n headers = parseHeaders(message.slice(0, i));\n contentType_1 = headers[\"content-type\"];\n if (contentType_1 &&\n contentType_1.toLowerCase().indexOf(\"application/json\") === -1) {\n throw new Error(\"Unsupported patch content type: application/json is required.\");\n }\n body = message.slice(i);\n if (body) {\n try {\n result = parseJsonBody(response, body);\n if (Object.keys(result).length > 1 ||\n \"data\" in result ||\n \"incremental\" in result ||\n \"errors\" in result ||\n \"payload\" in result) {\n if (isApolloPayloadResult(result)) {\n next = {};\n if (\"payload\" in result) {\n next = __assign({}, result.payload);\n }\n if (\"errors\" in result) {\n next = __assign(__assign({}, next), { extensions: __assign(__assign({}, (\"extensions\" in next ? next.extensions : null)), (_h = {}, _h[PROTOCOL_ERRORS_SYMBOL] = result.errors, _h)) });\n }\n (_b = observer.next) === null || _b === void 0 ? void 0 : _b.call(observer, next);\n }\n else {\n (_c = observer.next) === null || _c === void 0 ? void 0 : _c.call(observer, result);\n }\n }\n else if (Object.keys(result).length === 1 &&\n \"hasNext\" in result &&\n !result.hasNext) {\n (_d = observer.complete) === null || _d === void 0 ? void 0 : _d.call(observer);\n }\n }\n catch (err) {\n handleError(err, observer);\n }\n }\n bi = buffer.indexOf(boundary);\n }\n return [3, 1];\n case 3:\n (_e = observer.complete) === null || _e === void 0 ? void 0 : _e.call(observer);\n return [2];\n }\n });\n });\n}\nexport function parseHeaders(headerText) {\n var headersInit = {};\n headerText.split(\"\\n\").forEach(function (line) {\n var i = line.indexOf(\":\");\n if (i > -1) {\n var name_1 = line.slice(0, i).trim().toLowerCase();\n var value = line.slice(i + 1).trim();\n headersInit[name_1] = value;\n }\n });\n return headersInit;\n}\nexport function parseJsonBody(response, bodyText) {\n if (response.status >= 300) {\n var getResult = function () {\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n return bodyText;\n }\n };\n throwServerError(response, getResult(), \"Response not successful: Received status code \".concat(response.status));\n }\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n var parseError = err;\n parseError.name = \"ServerParseError\";\n parseError.response = response;\n parseError.statusCode = response.status;\n parseError.bodyText = bodyText;\n throw parseError;\n }\n}\nexport function handleError(err, observer) {\n var _a, _b;\n if (err.name === \"AbortError\")\n return;\n if (err.result && err.result.errors && err.result.data) {\n (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, err.result);\n }\n (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, err);\n}\nexport function readJsonBody(response, operation, observer) {\n parseAndCheckHttpResponse(operation)(response)\n .then(function (result) {\n var _a, _b;\n (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, result);\n (_b = observer.complete) === null || _b === void 0 ? void 0 : _b.call(observer);\n })\n .catch(function (err) { return handleError(err, observer); });\n}\nexport function parseAndCheckHttpResponse(operations) {\n return function (response) {\n return response\n .text()\n .then(function (bodyText) { return parseJsonBody(response, bodyText); })\n .then(function (result) {\n if (response.status >= 300) {\n throwServerError(response, result, \"Response not successful: Received status code \".concat(response.status));\n }\n if (!Array.isArray(result) &&\n !hasOwnProperty.call(result, \"data\") &&\n !hasOwnProperty.call(result, \"errors\")) {\n throwServerError(response, result, \"Server response was missing for query '\".concat(Array.isArray(operations)\n ? operations.map(function (op) { return op.operationName; })\n : operations.operationName, \"'.\"));\n }\n return result;\n });\n };\n}\n//# sourceMappingURL=parseAndCheckHttpResponse.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport var checkFetcher = function (fetcher) {\n if (!fetcher && typeof fetch === 'undefined') {\n throw __DEV__ ? new InvariantError(\"\\n\\\"fetch\\\" has not been found globally and no fetcher has been configured. To fix this, install a fetch package (like https://www.npmjs.com/package/cross-fetch), instantiate the fetcher, and pass it into your HttpLink constructor. For example:\\n\\nimport fetch from 'cross-fetch';\\nimport { ApolloClient, HttpLink } from '@apollo/client';\\nconst client = new ApolloClient({\\n link: new HttpLink({ uri: '/graphql', fetch })\\n});\\n \") : new InvariantError(23);\n }\n};\n//# sourceMappingURL=checkFetcher.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { print } from 'graphql';\n;\nvar defaultHttpOptions = {\n includeQuery: true,\n includeExtensions: false,\n preserveHeaderCase: false,\n};\nvar defaultHeaders = {\n accept: '*/*',\n 'content-type': 'application/json',\n};\nvar defaultOptions = {\n method: 'POST',\n};\nexport var fallbackHttpConfig = {\n http: defaultHttpOptions,\n headers: defaultHeaders,\n options: defaultOptions,\n};\nexport var defaultPrinter = function (ast, printer) { return printer(ast); };\nexport function selectHttpOptionsAndBody(operation, fallbackConfig) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n configs.unshift(fallbackConfig);\n return selectHttpOptionsAndBodyInternal.apply(void 0, __spreadArray([operation,\n defaultPrinter], configs, false));\n}\nexport function selectHttpOptionsAndBodyInternal(operation, printer) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n var options = {};\n var http = {};\n configs.forEach(function (config) {\n options = __assign(__assign(__assign({}, options), config.options), { headers: __assign(__assign({}, options.headers), config.headers) });\n if (config.credentials) {\n options.credentials = config.credentials;\n }\n http = __assign(__assign({}, http), config.http);\n });\n if (options.headers) {\n options.headers = removeDuplicateHeaders(options.headers, http.preserveHeaderCase);\n }\n var operationName = operation.operationName, extensions = operation.extensions, variables = operation.variables, query = operation.query;\n var body = { operationName: operationName, variables: variables };\n if (http.includeExtensions)\n body.extensions = extensions;\n if (http.includeQuery)\n body.query = printer(query, print);\n return {\n options: options,\n body: body,\n };\n}\n;\nfunction removeDuplicateHeaders(headers, preserveHeaderCase) {\n if (!preserveHeaderCase) {\n var normalizedHeaders_1 = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n normalizedHeaders_1[name.toLowerCase()] = headers[name];\n });\n return normalizedHeaders_1;\n }\n var headerData = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n headerData[name.toLowerCase()] = { originalName: name, value: headers[name] };\n });\n var normalizedHeaders = Object.create(null);\n Object.keys(headerData).forEach(function (name) {\n normalizedHeaders[headerData[name].originalName] = headerData[name].value;\n });\n return normalizedHeaders;\n}\n//# sourceMappingURL=selectHttpOptionsAndBody.js.map","export var createSignalIfSupported = function () {\n if (typeof AbortController === 'undefined')\n return { controller: false, signal: false };\n var controller = new AbortController();\n var signal = controller.signal;\n return { controller: controller, signal: signal };\n};\n//# sourceMappingURL=createSignalIfSupported.js.map","import { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nexport function rewriteURIForGET(chosenURI, body) {\n var queryParams = [];\n var addQueryParam = function (key, value) {\n queryParams.push(\"\".concat(key, \"=\").concat(encodeURIComponent(value)));\n };\n if ('query' in body) {\n addQueryParam('query', body.query);\n }\n if (body.operationName) {\n addQueryParam('operationName', body.operationName);\n }\n if (body.variables) {\n var serializedVariables = void 0;\n try {\n serializedVariables = serializeFetchParameter(body.variables, 'Variables map');\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam('variables', serializedVariables);\n }\n if (body.extensions) {\n var serializedExtensions = void 0;\n try {\n serializedExtensions = serializeFetchParameter(body.extensions, 'Extensions map');\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam('extensions', serializedExtensions);\n }\n var fragment = '', preFragment = chosenURI;\n var fragmentStart = chosenURI.indexOf('#');\n if (fragmentStart !== -1) {\n fragment = chosenURI.substr(fragmentStart);\n preFragment = chosenURI.substr(0, fragmentStart);\n }\n var queryParamsPrefix = preFragment.indexOf('?') === -1 ? '?' : '&';\n var newURI = preFragment + queryParamsPrefix + queryParams.join('&') + fragment;\n return { newURI: newURI };\n}\n//# sourceMappingURL=rewriteURIForGET.js.map","import { Observable } from \"../../utilities/index.js\";\nexport function fromError(errorValue) {\n return new Observable(function (observer) {\n observer.error(errorValue);\n });\n}\n//# sourceMappingURL=fromError.js.map","import { __assign, __rest } from \"tslib\";\nimport \"../../utilities/globals/index.js\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { visit } from 'graphql';\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable, hasDirectives } from \"../../utilities/index.js\";\nimport { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nimport { selectURI } from \"./selectURI.js\";\nimport { handleError, readMultipartBody, readJsonBody } from \"./parseAndCheckHttpResponse.js\";\nimport { checkFetcher } from \"./checkFetcher.js\";\nimport { selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig } from \"./selectHttpOptionsAndBody.js\";\nimport { createSignalIfSupported } from \"./createSignalIfSupported.js\";\nimport { rewriteURIForGET } from \"./rewriteURIForGET.js\";\nimport { fromError } from \"../utils/index.js\";\nimport { maybe, getMainDefinition } from \"../../utilities/index.js\";\nvar backupFetch = maybe(function () { return fetch; });\nexport var createHttpLink = function (linkOptions) {\n if (linkOptions === void 0) { linkOptions = {}; }\n var _a = linkOptions.uri, uri = _a === void 0 ? '/graphql' : _a, preferredFetch = linkOptions.fetch, _b = linkOptions.print, print = _b === void 0 ? defaultPrinter : _b, includeExtensions = linkOptions.includeExtensions, preserveHeaderCase = linkOptions.preserveHeaderCase, useGETForQueries = linkOptions.useGETForQueries, _c = linkOptions.includeUnusedVariables, includeUnusedVariables = _c === void 0 ? false : _c, requestOptions = __rest(linkOptions, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"preserveHeaderCase\", \"useGETForQueries\", \"includeUnusedVariables\"]);\n if (__DEV__) {\n checkFetcher(preferredFetch || backupFetch);\n }\n var linkConfig = {\n http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n return new ApolloLink(function (operation) {\n var chosenURI = selectURI(operation, uri);\n var context = operation.getContext();\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n if (name_1) {\n clientAwarenessHeaders['apollographql-client-name'] = name_1;\n }\n if (version) {\n clientAwarenessHeaders['apollographql-client-version'] = version;\n }\n }\n var contextHeaders = __assign(__assign({}, clientAwarenessHeaders), context.headers);\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n var _b = selectHttpOptionsAndBodyInternal(operation, print, fallbackHttpConfig, linkConfig, contextConfig), options = _b.options, body = _b.body;\n if (body.variables && !includeUnusedVariables) {\n var unusedNames_1 = new Set(Object.keys(body.variables));\n visit(operation.query, {\n Variable: function (node, _key, parent) {\n if (parent && parent.kind !== 'VariableDefinition') {\n unusedNames_1.delete(node.name.value);\n }\n },\n });\n if (unusedNames_1.size) {\n body.variables = __assign({}, body.variables);\n unusedNames_1.forEach(function (name) {\n delete body.variables[name];\n });\n }\n }\n var controller;\n if (!options.signal) {\n var _c = createSignalIfSupported(), _controller = _c.controller, signal = _c.signal;\n controller = _controller;\n if (controller)\n options.signal = signal;\n }\n var definitionIsMutation = function (d) {\n return d.kind === 'OperationDefinition' && d.operation === 'mutation';\n };\n var definitionIsSubscription = function (d) {\n return d.kind === 'OperationDefinition' && d.operation === 'subscription';\n };\n var isSubscription = definitionIsSubscription(getMainDefinition(operation.query));\n var hasDefer = hasDirectives(['defer'], operation.query);\n if (useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)) {\n options.method = 'GET';\n }\n if (hasDefer || isSubscription) {\n options.headers = options.headers || {};\n var acceptHeader = \"multipart/mixed;\";\n if (isSubscription && hasDefer) {\n __DEV__ && invariant.warn(\"Multipart-subscriptions do not support @defer\");\n }\n if (isSubscription) {\n acceptHeader += 'boundary=graphql;subscriptionSpec=1.0,application/json';\n }\n else if (hasDefer) {\n acceptHeader += 'deferSpec=20220824,application/json';\n }\n options.headers.accept = acceptHeader;\n }\n if (options.method === 'GET') {\n var _d = rewriteURIForGET(chosenURI, body), newURI = _d.newURI, parseError = _d.parseError;\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n }\n else {\n try {\n options.body = serializeFetchParameter(body, 'Payload');\n }\n catch (parseError) {\n return fromError(parseError);\n }\n }\n return new Observable(function (observer) {\n var currentFetch = preferredFetch || maybe(function () { return fetch; }) || backupFetch;\n currentFetch(chosenURI, options)\n .then(function (response) {\n var _a;\n operation.setContext({ response: response });\n var ctype = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get('content-type');\n if (ctype !== null && /^multipart\\/mixed/i.test(ctype)) {\n return readMultipartBody(response, observer);\n }\n else {\n return readJsonBody(response, operation, observer);\n }\n })\n .catch(function (err) { return handleError(err, observer); });\n return function () {\n if (controller)\n controller.abort();\n };\n });\n });\n};\n//# sourceMappingURL=createHttpLink.js.map","import { __extends } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { createHttpLink } from \"./createHttpLink.js\";\nvar HttpLink = (function (_super) {\n __extends(HttpLink, _super);\n function HttpLink(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, createHttpLink(options).request) || this;\n _this.options = options;\n return _this;\n }\n return HttpLink;\n}(ApolloLink));\nexport { HttpLink };\n//# sourceMappingURL=HttpLink.js.map","const { toString, hasOwnProperty } = Object.prototype;\nconst fnToStr = Function.prototype.toString;\nconst previousComparisons = new Map();\n/**\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\n */\nexport function equal(a, b) {\n try {\n return check(a, b);\n }\n finally {\n previousComparisons.clear();\n }\n}\n// Allow default imports as well.\nexport default equal;\nfunction check(a, b) {\n // If the two values are strictly equal, our job is easy.\n if (a === b) {\n return true;\n }\n // Object.prototype.toString returns a representation of the runtime type of\n // the given value that is considerably more precise than typeof.\n const aTag = toString.call(a);\n const bTag = toString.call(b);\n // If the runtime types of a and b are different, they could maybe be equal\n // under some interpretation of equality, but for simplicity and performance\n // we just return false instead.\n if (aTag !== bTag) {\n return false;\n }\n switch (aTag) {\n case '[object Array]':\n // Arrays are a lot like other objects, but we can cheaply compare their\n // lengths as a short-cut before comparing their elements.\n if (a.length !== b.length)\n return false;\n // Fall through to object case...\n case '[object Object]': {\n if (previouslyCompared(a, b))\n return true;\n const aKeys = definedKeys(a);\n const bKeys = definedKeys(b);\n // If `a` and `b` have a different number of enumerable keys, they\n // must be different.\n const keyCount = aKeys.length;\n if (keyCount !== bKeys.length)\n return false;\n // Now make sure they have the same keys.\n for (let k = 0; k < keyCount; ++k) {\n if (!hasOwnProperty.call(b, aKeys[k])) {\n return false;\n }\n }\n // Finally, check deep equality of all child properties.\n for (let k = 0; k < keyCount; ++k) {\n const key = aKeys[k];\n if (!check(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n case '[object Error]':\n return a.name === b.name && a.message === b.message;\n case '[object Number]':\n // Handle NaN, which is !== itself.\n if (a !== a)\n return b !== b;\n // Fall through to shared +a === +b case...\n case '[object Boolean]':\n case '[object Date]':\n return +a === +b;\n case '[object RegExp]':\n case '[object String]':\n return a == `${b}`;\n case '[object Map]':\n case '[object Set]': {\n if (a.size !== b.size)\n return false;\n if (previouslyCompared(a, b))\n return true;\n const aIterator = a.entries();\n const isMap = aTag === '[object Map]';\n while (true) {\n const info = aIterator.next();\n if (info.done)\n break;\n // If a instanceof Set, aValue === aKey.\n const [aKey, aValue] = info.value;\n // So this works the same way for both Set and Map.\n if (!b.has(aKey)) {\n return false;\n }\n // However, we care about deep equality of values only when dealing\n // with Map structures.\n if (isMap && !check(aValue, b.get(aKey))) {\n return false;\n }\n }\n return true;\n }\n case '[object Uint16Array]':\n case '[object Uint8Array]': // Buffer, in Node.js.\n case '[object Uint32Array]':\n case '[object Int32Array]':\n case '[object Int8Array]':\n case '[object Int16Array]':\n case '[object ArrayBuffer]':\n // DataView doesn't need these conversions, but the equality check is\n // otherwise the same.\n a = new Uint8Array(a);\n b = new Uint8Array(b);\n // Fall through...\n case '[object DataView]': {\n let len = a.byteLength;\n if (len === b.byteLength) {\n while (len-- && a[len] === b[len]) {\n // Keep looping as long as the bytes are equal.\n }\n }\n return len === -1;\n }\n case '[object AsyncFunction]':\n case '[object GeneratorFunction]':\n case '[object AsyncGeneratorFunction]':\n case '[object Function]': {\n const aCode = fnToStr.call(a);\n if (aCode !== fnToStr.call(b)) {\n return false;\n }\n // We consider non-native functions equal if they have the same code\n // (native functions require === because their code is censored).\n // Note that this behavior is not entirely sound, since !== function\n // objects with the same code can behave differently depending on\n // their closure scope. However, any function can behave differently\n // depending on the values of its input arguments (including this)\n // and its calling context (including its closure scope), even\n // though the function object is === to itself; and it is entirely\n // possible for functions that are not === to behave exactly the\n // same under all conceivable circumstances. Because none of these\n // factors are statically decidable in JavaScript, JS function\n // equality is not well-defined. This ambiguity allows us to\n // consider the best possible heuristic among various imperfect\n // options, and equating non-native functions that have the same\n // code has enormous practical benefits, such as when comparing\n // functions that are repeatedly passed as fresh function\n // expressions within objects that are otherwise deeply equal. Since\n // any function created from the same syntactic expression (in the\n // same code location) will always stringify to the same code\n // according to fnToStr.call, we can reasonably expect these\n // repeatedly passed function expressions to have the same code, and\n // thus behave \"the same\" (with all the caveats mentioned above),\n // even though the runtime function objects are !== to one another.\n return !endsWith(aCode, nativeCodeSuffix);\n }\n }\n // Otherwise the values are not equal.\n return false;\n}\nfunction definedKeys(obj) {\n // Remember that the second argument to Array.prototype.filter will be\n // used as `this` within the callback function.\n return Object.keys(obj).filter(isDefinedKey, obj);\n}\nfunction isDefinedKey(key) {\n return this[key] !== void 0;\n}\nconst nativeCodeSuffix = \"{ [native code] }\";\nfunction endsWith(full, suffix) {\n const fromIndex = full.length - suffix.length;\n return fromIndex >= 0 &&\n full.indexOf(suffix, fromIndex) === fromIndex;\n}\nfunction previouslyCompared(a, b) {\n // Though cyclic references can make an object graph appear infinite from the\n // perspective of a depth-first traversal, the graph still contains a finite\n // number of distinct object references. We use the previousComparisons cache\n // to avoid comparing the same pair of object references more than once, which\n // guarantees termination (even if we end up comparing every object in one\n // graph to every object in the other graph, which is extremely unlikely),\n // while still allowing weird isomorphic structures (like rings with different\n // lengths) a chance to pass the equality test.\n let bSet = previousComparisons.get(a);\n if (bSet) {\n // Return true here because we can be sure false will be returned somewhere\n // else if the objects are not equivalent.\n if (bSet.has(b))\n return true;\n }\n else {\n previousComparisons.set(a, bSet = new Set);\n }\n bSet.add(b);\n return false;\n}\n//# sourceMappingURL=index.js.map","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nconst defaultMakeData = () => Object.create(null);\n// Useful for processing arguments objects as well as arrays.\nconst { forEach, slice } = Array.prototype;\nconst { hasOwnProperty } = Object.prototype;\nexport class Trie {\n constructor(weakness = true, makeData = defaultMakeData) {\n this.weakness = weakness;\n this.makeData = makeData;\n }\n lookup(...array) {\n return this.lookupArray(array);\n }\n lookupArray(array) {\n let node = this;\n forEach.call(array, key => node = node.getChildTrie(key));\n return hasOwnProperty.call(node, \"data\")\n ? node.data\n : node.data = this.makeData(slice.call(array));\n }\n peek(...array) {\n return this.peekArray(array);\n }\n peekArray(array) {\n let node = this;\n for (let i = 0, len = array.length; node && i < len; ++i) {\n const map = this.weakness && isObjRef(array[i]) ? node.weak : node.strong;\n node = map && map.get(array[i]);\n }\n return node && node.data;\n }\n getChildTrie(key) {\n const map = this.weakness && isObjRef(key)\n ? this.weak || (this.weak = new WeakMap())\n : this.strong || (this.strong = new Map());\n let child = map.get(key);\n if (!child)\n map.set(key, child = new Trie(this.weakness, this.makeData));\n return child;\n }\n}\nfunction isObjRef(value) {\n switch (typeof value) {\n case \"object\":\n if (value === null)\n break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport \"../../utilities/globals/index.js\";\nimport { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet, isNonNullObject as isObjectOrArray, } from \"../../utilities/index.js\";\nimport { isArray } from \"./helpers.js\";\nfunction shallowCopy(value) {\n if (isObjectOrArray(value)) {\n return isArray(value)\n ? value.slice(0)\n : __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n return value;\n}\nvar ObjectCanon = (function () {\n function ObjectCanon() {\n this.known = new (canUseWeakSet ? WeakSet : Set)();\n this.pool = new Trie(canUseWeakMap);\n this.passes = new WeakMap();\n this.keysByJSON = new Map();\n this.empty = this.admit({});\n }\n ObjectCanon.prototype.isKnown = function (value) {\n return isObjectOrArray(value) && this.known.has(value);\n };\n ObjectCanon.prototype.pass = function (value) {\n if (isObjectOrArray(value)) {\n var copy = shallowCopy(value);\n this.passes.set(copy, value);\n return copy;\n }\n return value;\n };\n ObjectCanon.prototype.admit = function (value) {\n var _this = this;\n if (isObjectOrArray(value)) {\n var original = this.passes.get(value);\n if (original)\n return original;\n var proto = Object.getPrototypeOf(value);\n switch (proto) {\n case Array.prototype: {\n if (this.known.has(value))\n return value;\n var array = value.map(this.admit, this);\n var node = this.pool.lookupArray(array);\n if (!node.array) {\n this.known.add(node.array = array);\n if (__DEV__) {\n Object.freeze(array);\n }\n }\n return node.array;\n }\n case null:\n case Object.prototype: {\n if (this.known.has(value))\n return value;\n var proto_1 = Object.getPrototypeOf(value);\n var array_1 = [proto_1];\n var keys = this.sortedKeys(value);\n array_1.push(keys.json);\n var firstValueIndex_1 = array_1.length;\n keys.sorted.forEach(function (key) {\n array_1.push(_this.admit(value[key]));\n });\n var node = this.pool.lookupArray(array_1);\n if (!node.object) {\n var obj_1 = node.object = Object.create(proto_1);\n this.known.add(obj_1);\n keys.sorted.forEach(function (key, i) {\n obj_1[key] = array_1[firstValueIndex_1 + i];\n });\n if (__DEV__) {\n Object.freeze(obj_1);\n }\n }\n return node.object;\n }\n }\n }\n return value;\n };\n ObjectCanon.prototype.sortedKeys = function (obj) {\n var keys = Object.keys(obj);\n var node = this.pool.lookupArray(keys);\n if (!node.keys) {\n keys.sort();\n var json = JSON.stringify(keys);\n if (!(node.keys = this.keysByJSON.get(json))) {\n this.keysByJSON.set(json, node.keys = { sorted: keys, json: json });\n }\n }\n return node.keys;\n };\n return ObjectCanon;\n}());\nexport { ObjectCanon };\nexport var canonicalStringify = Object.assign(function (value) {\n if (isObjectOrArray(value)) {\n if (stringifyCanon === void 0) {\n resetCanonicalStringify();\n }\n var canonical = stringifyCanon.admit(value);\n var json = stringifyCache.get(canonical);\n if (json === void 0) {\n stringifyCache.set(canonical, json = JSON.stringify(canonical));\n }\n return json;\n }\n return JSON.stringify(value);\n}, {\n reset: resetCanonicalStringify,\n});\nvar stringifyCanon;\nvar stringifyCache;\nfunction resetCanonicalStringify() {\n stringifyCanon = new ObjectCanon;\n stringifyCache = new (canUseWeakMap ? WeakMap : Map)();\n}\n//# sourceMappingURL=object-canon.js.map","export var NetworkStatus;\n(function (NetworkStatus) {\n NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\nexport function isNetworkRequestInFlight(networkStatus) {\n return networkStatus ? networkStatus < 7 : false;\n}\n//# sourceMappingURL=networkStatus.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { cloneDeep, compact, getOperationDefinition, Observable, iterateObserversSafely, isNonEmptyArray, fixObservableSubclass, getQueryDefinition, } from \"../utilities/index.js\";\nvar assign = Object.assign, hasOwnProperty = Object.hasOwnProperty;\nvar ObservableQuery = (function (_super) {\n __extends(ObservableQuery, _super);\n function ObservableQuery(_a) {\n var queryManager = _a.queryManager, queryInfo = _a.queryInfo, options = _a.options;\n var _this = _super.call(this, function (observer) {\n try {\n var subObserver = observer._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n }\n catch (_a) { }\n var first = !_this.observers.size;\n _this.observers.add(observer);\n var last = _this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n }\n else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n if (first) {\n _this.reobserve().catch(function () { });\n }\n return function () {\n if (_this.observers.delete(observer) && !_this.observers.size) {\n _this.tearDownQuery();\n }\n };\n }) || this;\n _this.observers = new Set();\n _this.subscriptions = new Set();\n _this.queryInfo = queryInfo;\n _this.queryManager = queryManager;\n _this.isTornDown = false;\n var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? \"cache-first\" : _d;\n var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, _f = options.initialFetchPolicy, initialFetchPolicy = _f === void 0 ? (fetchPolicy === \"standby\" ? defaultFetchPolicy : fetchPolicy) : _f;\n _this.options = __assign(__assign({}, options), { initialFetchPolicy: initialFetchPolicy, fetchPolicy: fetchPolicy });\n _this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n var opDef = getOperationDefinition(_this.query);\n _this.queryName = opDef && opDef.name && opDef.name.value;\n return _this;\n }\n Object.defineProperty(ObservableQuery.prototype, \"query\", {\n get: function () {\n return this.queryManager.transform(this.options.query).document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ObservableQuery.prototype, \"variables\", {\n get: function () {\n return this.options.variables;\n },\n enumerable: false,\n configurable: true\n });\n ObservableQuery.prototype.result = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var observer = {\n next: function (result) {\n resolve(result);\n _this.observers.delete(observer);\n if (!_this.observers.size) {\n _this.queryManager.removeQuery(_this.queryId);\n }\n setTimeout(function () {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n var subscription = _this.subscribe(observer);\n });\n };\n ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {\n if (saveAsLastResult === void 0) { saveAsLastResult = true; }\n var lastResult = this.getLastResult(true);\n var networkStatus = this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n var result = __assign(__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });\n var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a;\n if (fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache' ||\n fetchPolicy === 'standby' ||\n this.queryManager.transform(this.options.query).hasForcedResolvers) {\n }\n else {\n var diff = this.queryInfo.getDiff();\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n if (equal(result.data, {})) {\n result.data = void 0;\n }\n if (diff.complete) {\n delete result.partial;\n if (diff.complete &&\n result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === 'cache-first' ||\n fetchPolicy === 'cache-only')) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n }\n else {\n result.partial = true;\n }\n if (__DEV__ &&\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error) {\n logMissingFieldErrors(diff.missing);\n }\n }\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n return result;\n };\n ObservableQuery.prototype.isDifferentFromLastResult = function (newResult, variables) {\n return (!this.last ||\n !equal(this.last.result, newResult) ||\n (variables && !equal(this.last.variables, variables)));\n };\n ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {\n var last = this.last;\n if (last &&\n last[key] &&\n (!variablesMustMatch || equal(last.variables, this.variables))) {\n return last[key];\n }\n };\n ObservableQuery.prototype.getLastResult = function (variablesMustMatch) {\n return this.getLast(\"result\", variablesMustMatch);\n };\n ObservableQuery.prototype.getLastError = function (variablesMustMatch) {\n return this.getLast(\"error\", variablesMustMatch);\n };\n ObservableQuery.prototype.resetLastResults = function () {\n delete this.last;\n this.isTornDown = false;\n };\n ObservableQuery.prototype.resetQueryStoreErrors = function () {\n this.queryManager.resetErrors(this.queryId);\n };\n ObservableQuery.prototype.refetch = function (variables) {\n var _a;\n var reobserveOptions = {\n pollInterval: 0,\n };\n var fetchPolicy = this.options.fetchPolicy;\n if (fetchPolicy === 'cache-and-network') {\n reobserveOptions.fetchPolicy = fetchPolicy;\n }\n else if (fetchPolicy === 'no-cache') {\n reobserveOptions.fetchPolicy = 'no-cache';\n }\n else {\n reobserveOptions.fetchPolicy = 'network-only';\n }\n if (__DEV__ && variables && hasOwnProperty.call(variables, \"variables\")) {\n var queryDef = getQueryDefinition(this.query);\n var vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(function (v) { return v.variable.name.value === \"variables\"; })) {\n __DEV__ && invariant.warn(\"Called refetch(\".concat(JSON.stringify(variables), \") for query \").concat(((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || JSON.stringify(queryDef), \", which does not declare a $variables variable.\\nDid you mean to call refetch(variables) instead of refetch({ variables })?\"));\n }\n }\n if (variables && !equal(this.options.variables, variables)) {\n reobserveOptions.variables = this.options.variables = __assign(__assign({}, this.options.variables), variables);\n }\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n };\n ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n var _this = this;\n var combinedOptions = __assign(__assign({}, (fetchMoreOptions.query ? fetchMoreOptions : __assign(__assign(__assign(__assign({}, this.options), { query: this.query }), fetchMoreOptions), { variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables) }))), { fetchPolicy: \"no-cache\" });\n var qid = this.queryManager.generateQueryId();\n var queryInfo = this.queryInfo;\n var originalNetworkStatus = queryInfo.networkStatus;\n queryInfo.networkStatus = NetworkStatus.fetchMore;\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.observe();\n }\n var updatedQuerySet = new Set();\n return this.queryManager.fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore).then(function (fetchMoreResult) {\n _this.queryManager.removeQuery(qid);\n if (queryInfo.networkStatus === NetworkStatus.fetchMore) {\n queryInfo.networkStatus = originalNetworkStatus;\n }\n _this.queryManager.cache.batch({\n update: function (cache) {\n var updateQuery = fetchMoreOptions.updateQuery;\n if (updateQuery) {\n cache.updateQuery({\n query: _this.query,\n variables: _this.variables,\n returnPartialData: true,\n optimistic: false,\n }, function (previous) { return updateQuery(previous, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables,\n }); });\n }\n else {\n cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: fetchMoreResult.data,\n });\n }\n },\n onWatchUpdated: function (watch) {\n updatedQuerySet.add(watch.query);\n },\n });\n return fetchMoreResult;\n }).finally(function () {\n if (!updatedQuerySet.has(_this.query)) {\n reobserveCacheFirst(_this);\n }\n });\n };\n ObservableQuery.prototype.subscribeToMore = function (options) {\n var _this = this;\n var subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: function (subscriptionData) {\n var updateQuery = options.updateQuery;\n if (updateQuery) {\n _this.updateQuery(function (previous, _a) {\n var variables = _a.variables;\n return updateQuery(previous, {\n subscriptionData: subscriptionData,\n variables: variables,\n });\n });\n }\n },\n error: function (err) {\n if (options.onError) {\n options.onError(err);\n return;\n }\n __DEV__ && invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n this.subscriptions.add(subscription);\n return function () {\n if (_this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n };\n ObservableQuery.prototype.setOptions = function (newOptions) {\n return this.reobserve(newOptions);\n };\n ObservableQuery.prototype.setVariables = function (variables) {\n if (equal(this.variables, variables)) {\n return this.observers.size\n ? this.result()\n : Promise.resolve();\n }\n this.options.variables = variables;\n if (!this.observers.size) {\n return Promise.resolve();\n }\n return this.reobserve({\n fetchPolicy: this.options.initialFetchPolicy,\n variables: variables,\n }, NetworkStatus.setVariables);\n };\n ObservableQuery.prototype.updateQuery = function (mapFn) {\n var queryManager = this.queryManager;\n var result = queryManager.cache.diff({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n var newResult = mapFn(result, {\n variables: this.variables,\n });\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n queryManager.broadcastQueries();\n }\n };\n ObservableQuery.prototype.startPolling = function (pollInterval) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n };\n ObservableQuery.prototype.stopPolling = function () {\n this.options.pollInterval = 0;\n this.updatePolling();\n };\n ObservableQuery.prototype.applyNextFetchPolicy = function (reason, options) {\n if (options.nextFetchPolicy) {\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a, _b = options.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? fetchPolicy : _b;\n if (fetchPolicy === \"standby\") {\n }\n else if (typeof options.nextFetchPolicy === \"function\") {\n options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {\n reason: reason,\n options: options,\n observable: this,\n initialFetchPolicy: initialFetchPolicy,\n });\n }\n else if (reason === \"variables-changed\") {\n options.fetchPolicy = initialFetchPolicy;\n }\n else {\n options.fetchPolicy = options.nextFetchPolicy;\n }\n }\n return options.fetchPolicy;\n };\n ObservableQuery.prototype.fetch = function (options, newNetworkStatus) {\n this.queryManager.setObservableQuery(this);\n return this.queryManager['fetchConcastWithInfo'](this.queryId, options, newNetworkStatus);\n };\n ObservableQuery.prototype.updatePolling = function () {\n var _this = this;\n if (this.queryManager.ssrMode) {\n return;\n }\n var _a = this, pollingInfo = _a.pollingInfo, pollInterval = _a.options.pollInterval;\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n if (pollingInfo &&\n pollingInfo.interval === pollInterval) {\n return;\n }\n __DEV__ ? invariant(pollInterval, 'Attempted to start a polling query without a polling interval.') : invariant(pollInterval, 13);\n var info = pollingInfo || (this.pollingInfo = {});\n info.interval = pollInterval;\n var maybeFetch = function () {\n if (_this.pollingInfo) {\n if (!isNetworkRequestInFlight(_this.queryInfo.networkStatus)) {\n _this.reobserve({\n fetchPolicy: _this.options.initialFetchPolicy === 'no-cache' ? 'no-cache' : 'network-only',\n }, NetworkStatus.poll).then(poll, poll);\n }\n else {\n poll();\n }\n }\n ;\n };\n var poll = function () {\n var info = _this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n poll();\n };\n ObservableQuery.prototype.updateLastResult = function (newResult, variables) {\n if (variables === void 0) { variables = this.variables; }\n this.last = __assign(__assign({}, this.last), { result: this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult), variables: variables });\n if (!isNonEmptyArray(newResult.errors)) {\n delete this.last.error;\n }\n return this.last;\n };\n ObservableQuery.prototype.reobserveAsConcast = function (newOptions, newNetworkStatus) {\n var _this = this;\n this.isTornDown = false;\n var useDisposableConcast = newNetworkStatus === NetworkStatus.refetch ||\n newNetworkStatus === NetworkStatus.fetchMore ||\n newNetworkStatus === NetworkStatus.poll;\n var oldVariables = this.options.variables;\n var oldFetchPolicy = this.options.fetchPolicy;\n var mergedOptions = compact(this.options, newOptions || {});\n var options = useDisposableConcast\n ? mergedOptions\n : assign(this.options, mergedOptions);\n if (!useDisposableConcast) {\n this.updatePolling();\n if (newOptions &&\n newOptions.variables &&\n !equal(newOptions.variables, oldVariables) &&\n options.fetchPolicy !== \"standby\" &&\n options.fetchPolicy === oldFetchPolicy) {\n this.applyNextFetchPolicy(\"variables-changed\", options);\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n var variables = options.variables && __assign({}, options.variables);\n var _a = this.fetch(options, newNetworkStatus), concast = _a.concast, fromLink = _a.fromLink;\n var observer = {\n next: function (result) {\n _this.reportResult(result, variables);\n },\n error: function (error) {\n _this.reportError(error, variables);\n },\n };\n if (!useDisposableConcast && fromLink) {\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n }\n this.concast = concast;\n this.observer = observer;\n }\n concast.addObserver(observer);\n return concast;\n };\n ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {\n return this.reobserveAsConcast(newOptions, newNetworkStatus).promise;\n };\n ObservableQuery.prototype.observe = function () {\n this.reportResult(this.getCurrentResult(false), this.variables);\n };\n ObservableQuery.prototype.reportResult = function (result, variables) {\n var lastError = this.getLastError();\n if (lastError || this.isDifferentFromLastResult(result, variables)) {\n if (lastError || !result.partial || this.options.returnPartialData) {\n this.updateLastResult(result, variables);\n }\n iterateObserversSafely(this.observers, 'next', result);\n }\n };\n ObservableQuery.prototype.reportError = function (error, variables) {\n var errorResult = __assign(__assign({}, this.getLastResult()), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false });\n this.updateLastResult(errorResult, variables);\n iterateObserversSafely(this.observers, 'error', this.last.error = error);\n };\n ObservableQuery.prototype.hasObservers = function () {\n return this.observers.size > 0;\n };\n ObservableQuery.prototype.tearDownQuery = function () {\n if (this.isTornDown)\n return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n this.stopPolling();\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n };\n return ObservableQuery;\n}(Observable));\nexport { ObservableQuery };\nfixObservableSubclass(ObservableQuery);\nexport function reobserveCacheFirst(obsQuery) {\n var _a = obsQuery.options, fetchPolicy = _a.fetchPolicy, nextFetchPolicy = _a.nextFetchPolicy;\n if (fetchPolicy === \"cache-and-network\" ||\n fetchPolicy === \"network-only\") {\n return obsQuery.reobserve({\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: function () {\n this.nextFetchPolicy = nextFetchPolicy;\n if (typeof nextFetchPolicy === \"function\") {\n return nextFetchPolicy.apply(this, arguments);\n }\n return fetchPolicy;\n },\n });\n }\n return obsQuery.reobserve();\n}\nfunction defaultSubscriptionObserverErrorCallback(error) {\n __DEV__ && invariant.error('Unhandled error', error.message, error.stack);\n}\nexport function logMissingFieldErrors(missing) {\n if (__DEV__ && missing) {\n __DEV__ && invariant.debug(\"Missing cache result fields: \".concat(JSON.stringify(missing)), missing);\n }\n}\n//# sourceMappingURL=ObservableQuery.js.map","import { Kind } from './kinds.mjs';\nexport function isDefinitionNode(node) {\n return (\n isExecutableDefinitionNode(node) ||\n isTypeSystemDefinitionNode(node) ||\n isTypeSystemExtensionNode(node)\n );\n}\nexport function isExecutableDefinitionNode(node) {\n return (\n node.kind === Kind.OPERATION_DEFINITION ||\n node.kind === Kind.FRAGMENT_DEFINITION\n );\n}\nexport function isSelectionNode(node) {\n return (\n node.kind === Kind.FIELD ||\n node.kind === Kind.FRAGMENT_SPREAD ||\n node.kind === Kind.INLINE_FRAGMENT\n );\n}\nexport function isValueNode(node) {\n return (\n node.kind === Kind.VARIABLE ||\n node.kind === Kind.INT ||\n node.kind === Kind.FLOAT ||\n node.kind === Kind.STRING ||\n node.kind === Kind.BOOLEAN ||\n node.kind === Kind.NULL ||\n node.kind === Kind.ENUM ||\n node.kind === Kind.LIST ||\n node.kind === Kind.OBJECT\n );\n}\nexport function isConstValueNode(node) {\n return (\n isValueNode(node) &&\n (node.kind === Kind.LIST\n ? node.values.some(isConstValueNode)\n : node.kind === Kind.OBJECT\n ? node.fields.some((field) => isConstValueNode(field.value))\n : node.kind !== Kind.VARIABLE)\n );\n}\nexport function isTypeNode(node) {\n return (\n node.kind === Kind.NAMED_TYPE ||\n node.kind === Kind.LIST_TYPE ||\n node.kind === Kind.NON_NULL_TYPE\n );\n}\nexport function isTypeSystemDefinitionNode(node) {\n return (\n node.kind === Kind.SCHEMA_DEFINITION ||\n isTypeDefinitionNode(node) ||\n node.kind === Kind.DIRECTIVE_DEFINITION\n );\n}\nexport function isTypeDefinitionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.ENUM_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION\n );\n}\nexport function isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nexport function isTypeExtensionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_EXTENSION ||\n node.kind === Kind.OBJECT_TYPE_EXTENSION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n node.kind === Kind.UNION_TYPE_EXTENSION ||\n node.kind === Kind.ENUM_TYPE_EXTENSION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n );\n}\n","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\r\n// object keys weakly, yet can also hold non-object keys, unlike the\r\n// native `WeakMap`.\r\n// If no makeData function is supplied, the looked-up data will be an empty,\r\n// null-prototype Object.\r\nvar defaultMakeData = function () { return Object.create(null); };\r\n// Useful for processing arguments objects as well as arrays.\r\nvar _a = Array.prototype, forEach = _a.forEach, slice = _a.slice;\r\nvar Trie = /** @class */ (function () {\r\n function Trie(weakness, makeData) {\r\n if (weakness === void 0) { weakness = true; }\r\n if (makeData === void 0) { makeData = defaultMakeData; }\r\n this.weakness = weakness;\r\n this.makeData = makeData;\r\n }\r\n Trie.prototype.lookup = function () {\r\n var array = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n array[_i] = arguments[_i];\r\n }\r\n return this.lookupArray(array);\r\n };\r\n Trie.prototype.lookupArray = function (array) {\r\n var node = this;\r\n forEach.call(array, function (key) { return node = node.getChildTrie(key); });\r\n return node.data || (node.data = this.makeData(slice.call(array)));\r\n };\r\n Trie.prototype.getChildTrie = function (key) {\r\n var map = this.weakness && isObjRef(key)\r\n ? this.weak || (this.weak = new WeakMap())\r\n : this.strong || (this.strong = new Map());\r\n var child = map.get(key);\r\n if (!child)\r\n map.set(key, child = new Trie(this.weakness, this.makeData));\r\n return child;\r\n };\r\n return Trie;\r\n}());\r\nfunction isObjRef(value) {\r\n switch (typeof value) {\r\n case \"object\":\r\n if (value === null)\r\n break;\r\n // Fall through to return true...\r\n case \"function\":\r\n return true;\r\n }\r\n return false;\r\n}\n\nexport { Trie };\n//# sourceMappingURL=trie.esm.js.map\n","// This currentContext variable will only be used if the makeSlotClass\n// function is called, which happens only if this is the first copy of the\n// @wry/context package to be imported.\nlet currentContext = null;\n// This unique internal object is used to denote the absence of a value\n// for a given Slot, and is never exposed to outside code.\nconst MISSING_VALUE = {};\nlet idCounter = 1;\n// Although we can't do anything about the cost of duplicated code from\n// accidentally bundling multiple copies of the @wry/context package, we can\n// avoid creating the Slot class more than once using makeSlotClass.\nconst makeSlotClass = () => class Slot {\n constructor() {\n // If you have a Slot object, you can find out its slot.id, but you cannot\n // guess the slot.id of a Slot you don't have access to, thanks to the\n // randomized suffix.\n this.id = [\n \"slot\",\n idCounter++,\n Date.now(),\n Math.random().toString(36).slice(2),\n ].join(\":\");\n }\n hasValue() {\n for (let context = currentContext; context; context = context.parent) {\n // We use the Slot object iself as a key to its value, which means the\n // value cannot be obtained without a reference to the Slot object.\n if (this.id in context.slots) {\n const value = context.slots[this.id];\n if (value === MISSING_VALUE)\n break;\n if (context !== currentContext) {\n // Cache the value in currentContext.slots so the next lookup will\n // be faster. This caching is safe because the tree of contexts and\n // the values of the slots are logically immutable.\n currentContext.slots[this.id] = value;\n }\n return true;\n }\n }\n if (currentContext) {\n // If a value was not found for this Slot, it's never going to be found\n // no matter how many times we look it up, so we might as well cache\n // the absence of the value, too.\n currentContext.slots[this.id] = MISSING_VALUE;\n }\n return false;\n }\n getValue() {\n if (this.hasValue()) {\n return currentContext.slots[this.id];\n }\n }\n withValue(value, callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n const slots = {\n __proto__: null,\n [this.id]: value,\n };\n const parent = currentContext;\n currentContext = { parent, slots };\n try {\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = parent;\n }\n }\n // Capture the current context and wrap a callback function so that it\n // reestablishes the captured context when called.\n static bind(callback) {\n const context = currentContext;\n return function () {\n const saved = currentContext;\n try {\n currentContext = context;\n return callback.apply(this, arguments);\n }\n finally {\n currentContext = saved;\n }\n };\n }\n // Immediately run a callback function without any captured context.\n static noContext(callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n if (currentContext) {\n const saved = currentContext;\n try {\n currentContext = null;\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = saved;\n }\n }\n else {\n return callback.apply(thisArg, args);\n }\n }\n};\nfunction maybe(fn) {\n try {\n return fn();\n }\n catch (ignored) { }\n}\n// We store a single global implementation of the Slot class as a permanent\n// non-enumerable property of the globalThis object. This obfuscation does\n// nothing to prevent access to the Slot class, but at least it ensures the\n// implementation (i.e. currentContext) cannot be tampered with, and all copies\n// of the @wry/context package (hopefully just one) will share the same Slot\n// implementation. Since the first copy of the @wry/context package to be\n// imported wins, this technique imposes a steep cost for any future breaking\n// changes to the Slot class.\nconst globalKey = \"@wry/context:Slot\";\nconst host = \n// Prefer globalThis when available.\n// https://github.com/benjamn/wryware/issues/347\nmaybe(() => globalThis) ||\n // Fall back to global, which works in Node.js and may be converted by some\n // bundlers to the appropriate identifier (window, self, ...) depending on the\n // bundling target. https://github.com/endojs/endo/issues/576#issuecomment-1178515224\n maybe(() => global) ||\n // Otherwise, use a dummy host that's local to this module. We used to fall\n // back to using the Array constructor as a namespace, but that was flagged in\n // https://github.com/benjamn/wryware/issues/347, and can be avoided.\n Object.create(null);\n// Whichever globalHost we're using, make TypeScript happy about the additional\n// globalKey property.\nconst globalHost = host;\nexport const Slot = globalHost[globalKey] ||\n // Earlier versions of this package stored the globalKey property on the Array\n // constructor, so we check there as well, to prevent Slot class duplication.\n Array[globalKey] ||\n (function (Slot) {\n try {\n Object.defineProperty(globalHost, globalKey, {\n value: Slot,\n enumerable: false,\n writable: false,\n // When it was possible for globalHost to be the Array constructor (a\n // legacy Slot dedup strategy), it was important for the property to be\n // configurable:true so it could be deleted. That does not seem to be as\n // important when globalHost is the global object, but I don't want to\n // cause similar problems again, and configurable:true seems safest.\n // https://github.com/endojs/endo/issues/576#issuecomment-1178274008\n configurable: true\n });\n }\n finally {\n return Slot;\n }\n })(makeSlotClass());\n//# sourceMappingURL=slot.js.map","import { Slot } from \"./slot.js\";\nexport { Slot };\nexport const { bind, noContext } = Slot;\n// Like global.setTimeout, except the callback runs with captured context.\nexport { setTimeoutWithContext as setTimeout };\nfunction setTimeoutWithContext(callback, delay) {\n return setTimeout(bind(callback), delay);\n}\n// Turn any generator function into an async function (using yield instead\n// of await), with context automatically preserved across yields.\nexport function asyncFromGen(genFn) {\n return function () {\n const gen = genFn.apply(this, arguments);\n const boundNext = bind(gen.next);\n const boundThrow = bind(gen.throw);\n return new Promise((resolve, reject) => {\n function invoke(method, argument) {\n try {\n var result = method.call(gen, argument);\n }\n catch (error) {\n return reject(error);\n }\n const next = result.done ? resolve : invokeNext;\n if (isPromiseLike(result.value)) {\n result.value.then(next, result.done ? reject : invokeThrow);\n }\n else {\n next(result.value);\n }\n }\n const invokeNext = (value) => invoke(boundNext, value);\n const invokeThrow = (error) => invoke(boundThrow, error);\n invokeNext();\n });\n };\n}\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\n// If you use the fibers npm package to implement coroutines in Node.js,\n// you should call this function at least once to ensure context management\n// remains coherent across any yields.\nconst wrappedFibers = [];\nexport function wrapYieldingFiberMethods(Fiber) {\n // There can be only one implementation of Fiber per process, so this array\n // should never grow longer than one element.\n if (wrappedFibers.indexOf(Fiber) < 0) {\n const wrap = (obj, method) => {\n const fn = obj[method];\n obj[method] = function () {\n return noContext(fn, arguments, this);\n };\n };\n // These methods can yield, according to\n // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\n wrap(Fiber, \"yield\");\n wrap(Fiber.prototype, \"run\");\n wrap(Fiber.prototype, \"throwInto\");\n wrappedFibers.push(Fiber);\n }\n return Fiber;\n}\n//# sourceMappingURL=index.js.map","import { Trie } from '@wry/trie';\nexport { Trie as KeyTrie } from '@wry/trie';\nimport { Slot } from '@wry/context';\nexport { asyncFromGen, bind as bindContext, noContext, setTimeout } from '@wry/context';\n\nfunction defaultDispose() { }\r\nvar Cache = /** @class */ (function () {\r\n function Cache(max, dispose) {\r\n if (max === void 0) { max = Infinity; }\r\n if (dispose === void 0) { dispose = defaultDispose; }\r\n this.max = max;\r\n this.dispose = dispose;\r\n this.map = new Map();\r\n this.newest = null;\r\n this.oldest = null;\r\n }\r\n Cache.prototype.has = function (key) {\r\n return this.map.has(key);\r\n };\r\n Cache.prototype.get = function (key) {\r\n var node = this.getNode(key);\r\n return node && node.value;\r\n };\r\n Cache.prototype.getNode = function (key) {\r\n var node = this.map.get(key);\r\n if (node && node !== this.newest) {\r\n var older = node.older, newer = node.newer;\r\n if (newer) {\r\n newer.older = older;\r\n }\r\n if (older) {\r\n older.newer = newer;\r\n }\r\n node.older = this.newest;\r\n node.older.newer = node;\r\n node.newer = null;\r\n this.newest = node;\r\n if (node === this.oldest) {\r\n this.oldest = newer;\r\n }\r\n }\r\n return node;\r\n };\r\n Cache.prototype.set = function (key, value) {\r\n var node = this.getNode(key);\r\n if (node) {\r\n return node.value = value;\r\n }\r\n node = {\r\n key: key,\r\n value: value,\r\n newer: null,\r\n older: this.newest\r\n };\r\n if (this.newest) {\r\n this.newest.newer = node;\r\n }\r\n this.newest = node;\r\n this.oldest = this.oldest || node;\r\n this.map.set(key, node);\r\n return node.value;\r\n };\r\n Cache.prototype.clean = function () {\r\n while (this.oldest && this.map.size > this.max) {\r\n this.delete(this.oldest.key);\r\n }\r\n };\r\n Cache.prototype.delete = function (key) {\r\n var node = this.map.get(key);\r\n if (node) {\r\n if (node === this.newest) {\r\n this.newest = node.older;\r\n }\r\n if (node === this.oldest) {\r\n this.oldest = node.newer;\r\n }\r\n if (node.newer) {\r\n node.newer.older = node.older;\r\n }\r\n if (node.older) {\r\n node.older.newer = node.newer;\r\n }\r\n this.map.delete(key);\r\n this.dispose(node.value, key);\r\n return true;\r\n }\r\n return false;\r\n };\r\n return Cache;\r\n}());\n\nvar parentEntrySlot = new Slot();\n\nvar _a;\r\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\r\nvar \r\n// This Array.from polyfill is restricted to working with Set<any> for now,\r\n// but we can improve the polyfill and add other input types, as needed. Note\r\n// that this fallback implementation will only be used if the host environment\r\n// does not support a native Array.from function. In most modern JS runtimes,\r\n// the toArray function exported here will be === Array.from.\r\ntoArray = (_a = Array.from, _a === void 0 ? function (collection) {\r\n var array = [];\r\n collection.forEach(function (item) { return array.push(item); });\r\n return array;\r\n} : _a);\r\nfunction maybeUnsubscribe(entryOrDep) {\r\n var unsubscribe = entryOrDep.unsubscribe;\r\n if (typeof unsubscribe === \"function\") {\r\n entryOrDep.unsubscribe = void 0;\r\n unsubscribe();\r\n }\r\n}\n\nvar emptySetPool = [];\r\nvar POOL_TARGET_SIZE = 100;\r\n// Since this package might be used browsers, we should avoid using the\r\n// Node built-in assert module.\r\nfunction assert(condition, optionalMessage) {\r\n if (!condition) {\r\n throw new Error(optionalMessage || \"assertion failure\");\r\n }\r\n}\r\nfunction valueIs(a, b) {\r\n var len = a.length;\r\n return (\r\n // Unknown values are not equal to each other.\r\n len > 0 &&\r\n // Both values must be ordinary (or both exceptional) to be equal.\r\n len === b.length &&\r\n // The underlying value or exception must be the same.\r\n a[len - 1] === b[len - 1]);\r\n}\r\nfunction valueGet(value) {\r\n switch (value.length) {\r\n case 0: throw new Error(\"unknown value\");\r\n case 1: return value[0];\r\n case 2: throw value[1];\r\n }\r\n}\r\nfunction valueCopy(value) {\r\n return value.slice(0);\r\n}\r\nvar Entry = /** @class */ (function () {\r\n function Entry(fn) {\r\n this.fn = fn;\r\n this.parents = new Set();\r\n this.childValues = new Map();\r\n // When this Entry has children that are dirty, this property becomes\r\n // a Set containing other Entry objects, borrowed from emptySetPool.\r\n // When the set becomes empty, it gets recycled back to emptySetPool.\r\n this.dirtyChildren = null;\r\n this.dirty = true;\r\n this.recomputing = false;\r\n this.value = [];\r\n this.deps = null;\r\n ++Entry.count;\r\n }\r\n Entry.prototype.peek = function () {\r\n if (this.value.length === 1 && !mightBeDirty(this)) {\r\n rememberParent(this);\r\n return this.value[0];\r\n }\r\n };\r\n // This is the most important method of the Entry API, because it\r\n // determines whether the cached this.value can be returned immediately,\r\n // or must be recomputed. The overall performance of the caching system\r\n // depends on the truth of the following observations: (1) this.dirty is\r\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\r\n // (3) valueGet(this.value) is usually returned without recomputation.\r\n Entry.prototype.recompute = function (args) {\r\n assert(!this.recomputing, \"already recomputing\");\r\n rememberParent(this);\r\n return mightBeDirty(this)\r\n ? reallyRecompute(this, args)\r\n : valueGet(this.value);\r\n };\r\n Entry.prototype.setDirty = function () {\r\n if (this.dirty)\r\n return;\r\n this.dirty = true;\r\n this.value.length = 0;\r\n reportDirty(this);\r\n // We can go ahead and unsubscribe here, since any further dirty\r\n // notifications we receive will be redundant, and unsubscribing may\r\n // free up some resources, e.g. file watchers.\r\n maybeUnsubscribe(this);\r\n };\r\n Entry.prototype.dispose = function () {\r\n var _this = this;\r\n this.setDirty();\r\n // Sever any dependency relationships with our own children, so those\r\n // children don't retain this parent Entry in their child.parents sets,\r\n // thereby preventing it from being fully garbage collected.\r\n forgetChildren(this);\r\n // Because this entry has been kicked out of the cache (in index.js),\r\n // we've lost the ability to find out if/when this entry becomes dirty,\r\n // whether that happens through a subscription, because of a direct call\r\n // to entry.setDirty(), or because one of its children becomes dirty.\r\n // Because of this loss of future information, we have to assume the\r\n // worst (that this entry might have become dirty very soon), so we must\r\n // immediately mark this entry's parents as dirty. Normally we could\r\n // just call entry.setDirty() rather than calling parent.setDirty() for\r\n // each parent, but that would leave this entry in parent.childValues\r\n // and parent.dirtyChildren, which would prevent the child from being\r\n // truly forgotten.\r\n eachParent(this, function (parent, child) {\r\n parent.setDirty();\r\n forgetChild(parent, _this);\r\n });\r\n };\r\n Entry.prototype.forget = function () {\r\n // The code that creates Entry objects in index.ts will replace this method\r\n // with one that actually removes the Entry from the cache, which will also\r\n // trigger the entry.dispose method.\r\n this.dispose();\r\n };\r\n Entry.prototype.dependOn = function (dep) {\r\n dep.add(this);\r\n if (!this.deps) {\r\n this.deps = emptySetPool.pop() || new Set();\r\n }\r\n this.deps.add(dep);\r\n };\r\n Entry.prototype.forgetDeps = function () {\r\n var _this = this;\r\n if (this.deps) {\r\n toArray(this.deps).forEach(function (dep) { return dep.delete(_this); });\r\n this.deps.clear();\r\n emptySetPool.push(this.deps);\r\n this.deps = null;\r\n }\r\n };\r\n Entry.count = 0;\r\n return Entry;\r\n}());\r\nfunction rememberParent(child) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n child.parents.add(parent);\r\n if (!parent.childValues.has(child)) {\r\n parent.childValues.set(child, []);\r\n }\r\n if (mightBeDirty(child)) {\r\n reportDirtyChild(parent, child);\r\n }\r\n else {\r\n reportCleanChild(parent, child);\r\n }\r\n return parent;\r\n }\r\n}\r\nfunction reallyRecompute(entry, args) {\r\n forgetChildren(entry);\r\n // Set entry as the parent entry while calling recomputeNewValue(entry).\r\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\r\n if (maybeSubscribe(entry, args)) {\r\n // If we successfully recomputed entry.value and did not fail to\r\n // (re)subscribe, then this Entry is no longer explicitly dirty.\r\n setClean(entry);\r\n }\r\n return valueGet(entry.value);\r\n}\r\nfunction recomputeNewValue(entry, args) {\r\n entry.recomputing = true;\r\n // Set entry.value as unknown.\r\n entry.value.length = 0;\r\n try {\r\n // If entry.fn succeeds, entry.value will become a normal Value.\r\n entry.value[0] = entry.fn.apply(null, args);\r\n }\r\n catch (e) {\r\n // If entry.fn throws, entry.value will become exceptional.\r\n entry.value[1] = e;\r\n }\r\n // Either way, this line is always reached.\r\n entry.recomputing = false;\r\n}\r\nfunction mightBeDirty(entry) {\r\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\r\n}\r\nfunction setClean(entry) {\r\n entry.dirty = false;\r\n if (mightBeDirty(entry)) {\r\n // This Entry may still have dirty children, in which case we can't\r\n // let our parents know we're clean just yet.\r\n return;\r\n }\r\n reportClean(entry);\r\n}\r\nfunction reportDirty(child) {\r\n eachParent(child, reportDirtyChild);\r\n}\r\nfunction reportClean(child) {\r\n eachParent(child, reportCleanChild);\r\n}\r\nfunction eachParent(child, callback) {\r\n var parentCount = child.parents.size;\r\n if (parentCount) {\r\n var parents = toArray(child.parents);\r\n for (var i = 0; i < parentCount; ++i) {\r\n callback(parents[i], child);\r\n }\r\n }\r\n}\r\n// Let a parent Entry know that one of its children may be dirty.\r\nfunction reportDirtyChild(parent, child) {\r\n // Must have called rememberParent(child) before calling\r\n // reportDirtyChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(mightBeDirty(child));\r\n var parentWasClean = !mightBeDirty(parent);\r\n if (!parent.dirtyChildren) {\r\n parent.dirtyChildren = emptySetPool.pop() || new Set;\r\n }\r\n else if (parent.dirtyChildren.has(child)) {\r\n // If we already know this child is dirty, then we must have already\r\n // informed our own parents that we are dirty, so we can terminate\r\n // the recursion early.\r\n return;\r\n }\r\n parent.dirtyChildren.add(child);\r\n // If parent was clean before, it just became (possibly) dirty (according to\r\n // mightBeDirty), since we just added child to parent.dirtyChildren.\r\n if (parentWasClean) {\r\n reportDirty(parent);\r\n }\r\n}\r\n// Let a parent Entry know that one of its children is no longer dirty.\r\nfunction reportCleanChild(parent, child) {\r\n // Must have called rememberChild(child) before calling\r\n // reportCleanChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(!mightBeDirty(child));\r\n var childValue = parent.childValues.get(child);\r\n if (childValue.length === 0) {\r\n parent.childValues.set(child, valueCopy(child.value));\r\n }\r\n else if (!valueIs(childValue, child.value)) {\r\n parent.setDirty();\r\n }\r\n removeDirtyChild(parent, child);\r\n if (mightBeDirty(parent)) {\r\n return;\r\n }\r\n reportClean(parent);\r\n}\r\nfunction removeDirtyChild(parent, child) {\r\n var dc = parent.dirtyChildren;\r\n if (dc) {\r\n dc.delete(child);\r\n if (dc.size === 0) {\r\n if (emptySetPool.length < POOL_TARGET_SIZE) {\r\n emptySetPool.push(dc);\r\n }\r\n parent.dirtyChildren = null;\r\n }\r\n }\r\n}\r\n// Removes all children from this entry and returns an array of the\r\n// removed children.\r\nfunction forgetChildren(parent) {\r\n if (parent.childValues.size > 0) {\r\n parent.childValues.forEach(function (_value, child) {\r\n forgetChild(parent, child);\r\n });\r\n }\r\n // Remove this parent Entry from any sets to which it was added by the\r\n // addToSet method.\r\n parent.forgetDeps();\r\n // After we forget all our children, this.dirtyChildren must be empty\r\n // and therefore must have been reset to null.\r\n assert(parent.dirtyChildren === null);\r\n}\r\nfunction forgetChild(parent, child) {\r\n child.parents.delete(parent);\r\n parent.childValues.delete(child);\r\n removeDirtyChild(parent, child);\r\n}\r\nfunction maybeSubscribe(entry, args) {\r\n if (typeof entry.subscribe === \"function\") {\r\n try {\r\n maybeUnsubscribe(entry); // Prevent double subscriptions.\r\n entry.unsubscribe = entry.subscribe.apply(null, args);\r\n }\r\n catch (e) {\r\n // If this Entry has a subscribe function and it threw an exception\r\n // (or an unsubscribe function it previously returned now throws),\r\n // return false to indicate that we were not able to subscribe (or\r\n // unsubscribe), and this Entry should remain dirty.\r\n entry.setDirty();\r\n return false;\r\n }\r\n }\r\n // Returning true indicates either that there was no entry.subscribe\r\n // function or that it succeeded.\r\n return true;\r\n}\n\nvar EntryMethods = {\r\n setDirty: true,\r\n dispose: true,\r\n forget: true, // Fully remove parent Entry from LRU cache and computation graph\r\n};\r\nfunction dep(options) {\r\n var depsByKey = new Map();\r\n var subscribe = options && options.subscribe;\r\n function depend(key) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n var dep_1 = depsByKey.get(key);\r\n if (!dep_1) {\r\n depsByKey.set(key, dep_1 = new Set);\r\n }\r\n parent.dependOn(dep_1);\r\n if (typeof subscribe === \"function\") {\r\n maybeUnsubscribe(dep_1);\r\n dep_1.unsubscribe = subscribe(key);\r\n }\r\n }\r\n }\r\n depend.dirty = function dirty(key, entryMethodName) {\r\n var dep = depsByKey.get(key);\r\n if (dep) {\r\n var m_1 = (entryMethodName &&\r\n hasOwnProperty.call(EntryMethods, entryMethodName)) ? entryMethodName : \"setDirty\";\r\n // We have to use toArray(dep).forEach instead of dep.forEach, because\r\n // modifying a Set while iterating over it can cause elements in the Set\r\n // to be removed from the Set before they've been iterated over.\r\n toArray(dep).forEach(function (entry) { return entry[m_1](); });\r\n depsByKey.delete(key);\r\n maybeUnsubscribe(dep);\r\n }\r\n };\r\n return depend;\r\n}\n\nfunction makeDefaultMakeCacheKeyFunction() {\r\n var keyTrie = new Trie(typeof WeakMap === \"function\");\r\n return function () {\r\n return keyTrie.lookupArray(arguments);\r\n };\r\n}\r\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\r\n// a unique object for any shallow-identical list of arguments. If you need\r\n// to implement a custom makeCacheKey function, you may find it helpful to\r\n// delegate the final work to defaultMakeCacheKey, which is why we export it\r\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\r\n// does not support WeakMap, or you have the ability to return a string key.\r\n// In those cases, just write your own custom makeCacheKey functions.\r\nvar defaultMakeCacheKey = makeDefaultMakeCacheKeyFunction();\r\nvar caches = new Set();\r\nfunction wrap(originalFunction, options) {\r\n if (options === void 0) { options = Object.create(null); }\r\n var cache = new Cache(options.max || Math.pow(2, 16), function (entry) { return entry.dispose(); });\r\n var keyArgs = options.keyArgs;\r\n var makeCacheKey = options.makeCacheKey ||\r\n makeDefaultMakeCacheKeyFunction();\r\n var optimistic = function () {\r\n var key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\r\n if (key === void 0) {\r\n return originalFunction.apply(null, arguments);\r\n }\r\n var entry = cache.get(key);\r\n if (!entry) {\r\n cache.set(key, entry = new Entry(originalFunction));\r\n entry.subscribe = options.subscribe;\r\n // Give the Entry the ability to trigger cache.delete(key), even though\r\n // the Entry itself does not know about key or cache.\r\n entry.forget = function () { return cache.delete(key); };\r\n }\r\n var value = entry.recompute(Array.prototype.slice.call(arguments));\r\n // Move this entry to the front of the least-recently used queue,\r\n // since we just finished computing its value.\r\n cache.set(key, entry);\r\n caches.add(cache);\r\n // Clean up any excess entries in the cache, but only if there is no\r\n // active parent entry, meaning we're not in the middle of a larger\r\n // computation that might be flummoxed by the cleaning.\r\n if (!parentEntrySlot.hasValue()) {\r\n caches.forEach(function (cache) { return cache.clean(); });\r\n caches.clear();\r\n }\r\n return value;\r\n };\r\n Object.defineProperty(optimistic, \"size\", {\r\n get: function () {\r\n return cache[\"map\"].size;\r\n },\r\n configurable: false,\r\n enumerable: false,\r\n });\r\n function dirtyKey(key) {\r\n var entry = cache.get(key);\r\n if (entry) {\r\n entry.setDirty();\r\n }\r\n }\r\n optimistic.dirtyKey = dirtyKey;\r\n optimistic.dirty = function dirty() {\r\n dirtyKey(makeCacheKey.apply(null, arguments));\r\n };\r\n function peekKey(key) {\r\n var entry = cache.get(key);\r\n if (entry) {\r\n return entry.peek();\r\n }\r\n }\r\n optimistic.peekKey = peekKey;\r\n optimistic.peek = function peek() {\r\n return peekKey(makeCacheKey.apply(null, arguments));\r\n };\r\n function forgetKey(key) {\r\n return cache.delete(key);\r\n }\r\n optimistic.forgetKey = forgetKey;\r\n optimistic.forget = function forget() {\r\n return forgetKey(makeCacheKey.apply(null, arguments));\r\n };\r\n optimistic.makeCacheKey = makeCacheKey;\r\n optimistic.getKey = keyArgs ? function getKey() {\r\n return makeCacheKey.apply(null, keyArgs.apply(null, arguments));\r\n } : makeCacheKey;\r\n return Object.freeze(optimistic);\r\n}\n\nexport { defaultMakeCacheKey, dep, wrap };\n//# sourceMappingURL=bundle.esm.js.map\n","import { dep } from \"optimism\";\nimport { Slot } from \"@wry/context\";\nexport var cacheSlot = new Slot();\nvar cacheInfoMap = new WeakMap();\nfunction getCacheInfo(cache) {\n var info = cacheInfoMap.get(cache);\n if (!info) {\n cacheInfoMap.set(cache, info = {\n vars: new Set,\n dep: dep(),\n });\n }\n return info;\n}\nexport function forgetCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.forgetCache(cache); });\n}\nexport function recallCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.attachCache(cache); });\n}\nexport function makeVar(value) {\n var caches = new Set();\n var listeners = new Set();\n var rv = function (newValue) {\n if (arguments.length > 0) {\n if (value !== newValue) {\n value = newValue;\n caches.forEach(function (cache) {\n getCacheInfo(cache).dep.dirty(rv);\n broadcast(cache);\n });\n var oldListeners = Array.from(listeners);\n listeners.clear();\n oldListeners.forEach(function (listener) { return listener(value); });\n }\n }\n else {\n var cache = cacheSlot.getValue();\n if (cache) {\n attach(cache);\n getCacheInfo(cache).dep(rv);\n }\n }\n return value;\n };\n rv.onNextChange = function (listener) {\n listeners.add(listener);\n return function () {\n listeners.delete(listener);\n };\n };\n var attach = rv.attachCache = function (cache) {\n caches.add(cache);\n getCacheInfo(cache).vars.add(rv);\n return rv;\n };\n rv.forgetCache = function (cache) { return caches.delete(cache); };\n return rv;\n}\nfunction broadcast(cache) {\n if (cache.broadcastWatches) {\n cache.broadcastWatches();\n }\n}\n//# sourceMappingURL=reactiveVars.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { visit, BREAK, isSelectionNode, } from 'graphql';\nimport { argumentsObjectFromField, buildQueryFromSelectionSet, createFragmentMap, getFragmentDefinitions, getMainDefinition, hasDirectives, isField, isInlineFragment, mergeDeep, mergeDeepArray, removeClientSetsFromDocument, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\nimport { cacheSlot } from \"../cache/index.js\";\nvar LocalState = (function () {\n function LocalState(_a) {\n var cache = _a.cache, client = _a.client, resolvers = _a.resolvers, fragmentMatcher = _a.fragmentMatcher;\n this.selectionsToResolveCache = new WeakMap();\n this.cache = cache;\n if (client) {\n this.client = client;\n }\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n LocalState.prototype.addResolvers = function (resolvers) {\n var _this = this;\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(function (resolverGroup) {\n _this.resolvers = mergeDeep(_this.resolvers, resolverGroup);\n });\n }\n else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n };\n LocalState.prototype.setResolvers = function (resolvers) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n };\n LocalState.prototype.getResolvers = function () {\n return this.resolvers || {};\n };\n LocalState.prototype.runResolvers = function (_a) {\n var document = _a.document, remoteResult = _a.remoteResult, context = _a.context, variables = _a.variables, _b = _a.onlyRunForcedResolvers, onlyRunForcedResolvers = _b === void 0 ? false : _b;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n if (document) {\n return [2, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) { return (__assign(__assign({}, remoteResult), { data: localResult.result })); })];\n }\n return [2, remoteResult];\n });\n });\n };\n LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n };\n LocalState.prototype.getFragmentMatcher = function () {\n return this.fragmentMatcher;\n };\n LocalState.prototype.clientQuery = function (document) {\n if (hasDirectives(['client'], document)) {\n if (this.resolvers) {\n return document;\n }\n }\n return null;\n };\n LocalState.prototype.serverQuery = function (document) {\n return removeClientSetsFromDocument(document);\n };\n LocalState.prototype.prepareContext = function (context) {\n var cache = this.cache;\n return __assign(__assign({}, context), { cache: cache, getCacheKey: function (obj) {\n return cache.identify(obj);\n } });\n };\n LocalState.prototype.addExportedVariables = function (document, variables, context) {\n if (variables === void 0) { variables = {}; }\n if (context === void 0) { context = {}; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (document) {\n return [2, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) { return (__assign(__assign({}, variables), data.exportedVariables)); })];\n }\n return [2, __assign({}, variables)];\n });\n });\n };\n LocalState.prototype.shouldForceResolvers = function (document) {\n var forceResolvers = false;\n visit(document, {\n Directive: {\n enter: function (node) {\n if (node.name.value === 'client' && node.arguments) {\n forceResolvers = node.arguments.some(function (arg) {\n return arg.name.value === 'always' &&\n arg.value.kind === 'BooleanValue' &&\n arg.value.value === true;\n });\n if (forceResolvers) {\n return BREAK;\n }\n }\n },\n },\n });\n return forceResolvers;\n };\n LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n };\n LocalState.prototype.resolveDocument = function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n if (context === void 0) { context = {}; }\n if (variables === void 0) { variables = {}; }\n if (fragmentMatcher === void 0) { fragmentMatcher = function () { return true; }; }\n if (onlyRunForcedResolvers === void 0) { onlyRunForcedResolvers = false; }\n return __awaiter(this, void 0, void 0, function () {\n var mainDefinition, fragments, fragmentMap, selectionsToResolve, definitionOperation, defaultOperationType, _a, cache, client, execContext, isClientFieldDescendant;\n return __generator(this, function (_b) {\n mainDefinition = getMainDefinition(document);\n fragments = getFragmentDefinitions(document);\n fragmentMap = createFragmentMap(fragments);\n selectionsToResolve = this.collectSelectionsToResolve(mainDefinition, fragmentMap);\n definitionOperation = mainDefinition.operation;\n defaultOperationType = definitionOperation\n ? definitionOperation.charAt(0).toUpperCase() +\n definitionOperation.slice(1)\n : 'Query';\n _a = this, cache = _a.cache, client = _a.client;\n execContext = {\n fragmentMap: fragmentMap,\n context: __assign(__assign({}, context), { cache: cache, client: client }),\n variables: variables,\n fragmentMatcher: fragmentMatcher,\n defaultOperationType: defaultOperationType,\n exportedVariables: {},\n selectionsToResolve: selectionsToResolve,\n onlyRunForcedResolvers: onlyRunForcedResolvers,\n };\n isClientFieldDescendant = false;\n return [2, this.resolveSelectionSet(mainDefinition.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (result) { return ({\n result: result,\n exportedVariables: execContext.exportedVariables,\n }); })];\n });\n });\n };\n LocalState.prototype.resolveSelectionSet = function (selectionSet, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var fragmentMap, context, variables, resultsToMerge, execute;\n var _this = this;\n return __generator(this, function (_a) {\n fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n resultsToMerge = [rootValue];\n execute = function (selection) { return __awaiter(_this, void 0, void 0, function () {\n var fragment, typeCondition;\n return __generator(this, function (_a) {\n if (!isClientFieldDescendant && !execContext.selectionsToResolve.has(selection)) {\n return [2];\n }\n if (!shouldInclude(selection, variables)) {\n return [2];\n }\n if (isField(selection)) {\n return [2, this.resolveField(selection, isClientFieldDescendant, rootValue, execContext).then(function (fieldResult) {\n var _a;\n if (typeof fieldResult !== 'undefined') {\n resultsToMerge.push((_a = {},\n _a[resultKeyNameFromField(selection)] = fieldResult,\n _a));\n }\n })];\n }\n if (isInlineFragment(selection)) {\n fragment = selection;\n }\n else {\n fragment = fragmentMap[selection.name.value];\n __DEV__ ? invariant(fragment, \"No fragment named \".concat(selection.name.value)) : invariant(fragment, 11);\n }\n if (fragment && fragment.typeCondition) {\n typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return [2, this.resolveSelectionSet(fragment.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (fragmentResult) {\n resultsToMerge.push(fragmentResult);\n })];\n }\n }\n return [2];\n });\n }); };\n return [2, Promise.all(selectionSet.selections.map(execute)).then(function () {\n return mergeDeepArray(resultsToMerge);\n })];\n });\n });\n };\n LocalState.prototype.resolveField = function (field, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n var _this = this;\n return __generator(this, function (_a) {\n if (!rootValue) {\n return [2, null];\n }\n variables = execContext.variables;\n fieldName = field.name.value;\n aliasedFieldName = resultKeyNameFromField(field);\n aliasUsed = fieldName !== aliasedFieldName;\n defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n resultPromise = Promise.resolve(defaultResult);\n if (!execContext.onlyRunForcedResolvers ||\n this.shouldForceResolvers(field)) {\n resolverType = rootValue.__typename || execContext.defaultOperationType;\n resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(cacheSlot.withValue(this.cache, resolve, [\n rootValue,\n argumentsObjectFromField(field, variables),\n execContext.context,\n { field: field, fragmentMap: execContext.fragmentMap },\n ]));\n }\n }\n }\n return [2, resultPromise.then(function (result) {\n var _a, _b;\n if (result === void 0) { result = defaultResult; }\n if (field.directives) {\n field.directives.forEach(function (directive) {\n if (directive.name.value === 'export' && directive.arguments) {\n directive.arguments.forEach(function (arg) {\n if (arg.name.value === 'as' && arg.value.kind === 'StringValue') {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n if (!field.selectionSet) {\n return result;\n }\n if (result == null) {\n return result;\n }\n var isClientField = (_b = (_a = field.directives) === null || _a === void 0 ? void 0 : _a.some(function (d) { return d.name.value === 'client'; })) !== null && _b !== void 0 ? _b : false;\n if (Array.isArray(result)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant || isClientField, result, execContext);\n }\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant || isClientField, result, execContext);\n }\n })];\n });\n });\n };\n LocalState.prototype.resolveSubSelectedArray = function (field, isClientFieldDescendant, result, execContext) {\n var _this = this;\n return Promise.all(result.map(function (item) {\n if (item === null) {\n return null;\n }\n if (Array.isArray(item)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant, item, execContext);\n }\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant, item, execContext);\n }\n }));\n };\n LocalState.prototype.collectSelectionsToResolve = function (mainDefinition, fragmentMap) {\n var isSingleASTNode = function (node) { return !Array.isArray(node); };\n var selectionsToResolveCache = this.selectionsToResolveCache;\n function collectByDefinition(definitionNode) {\n if (!selectionsToResolveCache.has(definitionNode)) {\n var matches_1 = new Set();\n selectionsToResolveCache.set(definitionNode, matches_1);\n visit(definitionNode, {\n Directive: function (node, _, __, ___, ancestors) {\n if (node.name.value === 'client') {\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n }\n },\n FragmentSpread: function (spread, _, __, ___, ancestors) {\n var fragment = fragmentMap[spread.name.value];\n __DEV__ ? invariant(fragment, \"No fragment named \".concat(spread.name.value)) : invariant(fragment, 12);\n var fragmentSelections = collectByDefinition(fragment);\n if (fragmentSelections.size > 0) {\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n matches_1.add(spread);\n fragmentSelections.forEach(function (selection) {\n matches_1.add(selection);\n });\n }\n }\n });\n }\n return selectionsToResolveCache.get(definitionNode);\n }\n return collectByDefinition(mainDefinition);\n };\n return LocalState;\n}());\nexport { LocalState };\n//# sourceMappingURL=LocalState.js.map","import { __assign } from \"tslib\";\nimport { equal } from \"@wry/equality\";\nimport { DeepMerger } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/common/incrementalResult.js\";\nimport { reobserveCacheFirst } from \"./ObservableQuery.js\";\nimport { isNonEmptyArray, graphQLResultHasError, canUseWeakMap, } from \"../utilities/index.js\";\nimport { NetworkStatus, isNetworkRequestInFlight, } from \"./networkStatus.js\";\n;\nvar destructiveMethodCounts = new (canUseWeakMap ? WeakMap : Map)();\nfunction wrapDestructiveCacheMethod(cache, methodName) {\n var original = cache[methodName];\n if (typeof original === \"function\") {\n cache[methodName] = function () {\n destructiveMethodCounts.set(cache, (destructiveMethodCounts.get(cache) + 1) % 1e15);\n return original.apply(this, arguments);\n };\n }\n}\nfunction cancelNotifyTimeout(info) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\nvar QueryInfo = (function () {\n function QueryInfo(queryManager, queryId) {\n if (queryId === void 0) { queryId = queryManager.generateQueryId(); }\n this.queryId = queryId;\n this.listeners = new Set();\n this.document = null;\n this.lastRequestId = 1;\n this.subscriptions = new Set();\n this.stopped = false;\n this.dirty = false;\n this.observableQuery = null;\n var cache = this.cache = queryManager.cache;\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n QueryInfo.prototype.init = function (query) {\n var networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables &&\n this.networkStatus !== NetworkStatus.loading &&\n !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n if (!equal(query.variables, this.variables)) {\n this.lastDiff = void 0;\n }\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus: networkStatus,\n });\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n return this;\n };\n QueryInfo.prototype.reset = function () {\n cancelNotifyTimeout(this);\n this.dirty = false;\n };\n QueryInfo.prototype.getDiff = function (variables) {\n if (variables === void 0) { variables = this.variables; }\n var options = this.getDiffOptions(variables);\n if (this.lastDiff && equal(options, this.lastDiff.options)) {\n return this.lastDiff.diff;\n }\n this.updateWatch(this.variables = variables);\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return { complete: false };\n }\n var diff = this.cache.diff(options);\n this.updateLastDiff(diff, options);\n return diff;\n };\n QueryInfo.prototype.updateLastDiff = function (diff, options) {\n this.lastDiff = diff ? {\n diff: diff,\n options: options || this.getDiffOptions(),\n } : void 0;\n };\n QueryInfo.prototype.getDiffOptions = function (variables) {\n var _a;\n if (variables === void 0) { variables = this.variables; }\n return {\n query: this.document,\n variables: variables,\n returnPartialData: true,\n optimistic: true,\n canonizeResults: (_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.options.canonizeResults,\n };\n };\n QueryInfo.prototype.setDiff = function (diff) {\n var _this = this;\n var oldDiff = this.lastDiff && this.lastDiff.diff;\n this.updateLastDiff(diff);\n if (!this.dirty &&\n !equal(oldDiff && oldDiff.result, diff && diff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(function () { return _this.notify(); }, 0);\n }\n }\n };\n QueryInfo.prototype.setObservableQuery = function (oq) {\n var _this = this;\n if (oq === this.observableQuery)\n return;\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n this.observableQuery = oq;\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add(this.oqListener = function () {\n var diff = _this.getDiff();\n if (diff.fromOptimisticTransaction) {\n oq[\"observe\"]();\n }\n else {\n reobserveCacheFirst(oq);\n }\n });\n }\n else {\n delete this.oqListener;\n }\n };\n QueryInfo.prototype.notify = function () {\n var _this = this;\n cancelNotifyTimeout(this);\n if (this.shouldNotify()) {\n this.listeners.forEach(function (listener) { return listener(_this); });\n }\n this.dirty = false;\n };\n QueryInfo.prototype.shouldNotify = function () {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n if (isNetworkRequestInFlight(this.networkStatus) &&\n this.observableQuery) {\n var fetchPolicy = this.observableQuery.options.fetchPolicy;\n if (fetchPolicy !== \"cache-only\" &&\n fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n return true;\n };\n QueryInfo.prototype.stop = function () {\n if (!this.stopped) {\n this.stopped = true;\n this.reset();\n this.cancel();\n this.cancel = QueryInfo.prototype.cancel;\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n var oq = this.observableQuery;\n if (oq)\n oq.stopPolling();\n }\n };\n QueryInfo.prototype.cancel = function () { };\n QueryInfo.prototype.updateWatch = function (variables) {\n var _this = this;\n if (variables === void 0) { variables = this.variables; }\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n var watchOptions = __assign(__assign({}, this.getDiffOptions(variables)), { watcher: this, callback: function (diff) { return _this.setDiff(diff); } });\n if (!this.lastWatch ||\n !equal(watchOptions, this.lastWatch)) {\n this.cancel();\n this.cancel = this.cache.watch(this.lastWatch = watchOptions);\n }\n };\n QueryInfo.prototype.resetLastWrite = function () {\n this.lastWrite = void 0;\n };\n QueryInfo.prototype.shouldWrite = function (result, variables) {\n var lastWrite = this.lastWrite;\n return !(lastWrite &&\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n equal(variables, lastWrite.variables) &&\n equal(result.data, lastWrite.result.data));\n };\n QueryInfo.prototype.markResult = function (result, document, options, cacheWriteBehavior) {\n var _this = this;\n var merger = new DeepMerger();\n var graphQLErrors = isNonEmptyArray(result.errors)\n ? result.errors.slice(0)\n : [];\n this.reset();\n if ('incremental' in result && isNonEmptyArray(result.incremental)) {\n var mergedData = mergeIncrementalData(this.getDiff().result, result);\n result.data = mergedData;\n }\n else if ('hasNext' in result && result.hasNext) {\n var diff = this.getDiff();\n result.data = merger.merge(diff.result, result.data);\n }\n this.graphQLErrors = graphQLErrors;\n if (options.fetchPolicy === 'no-cache') {\n this.updateLastDiff({ result: result.data, complete: true }, this.getDiffOptions(options.variables));\n }\n else if (cacheWriteBehavior !== 0) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n this.cache.performTransaction(function (cache) {\n if (_this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: document,\n data: result.data,\n variables: options.variables,\n overwrite: cacheWriteBehavior === 1,\n });\n _this.lastWrite = {\n result: result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(_this.cache),\n };\n }\n else {\n if (_this.lastDiff &&\n _this.lastDiff.diff.complete) {\n result.data = _this.lastDiff.diff.result;\n return;\n }\n }\n var diffOptions = _this.getDiffOptions(options.variables);\n var diff = cache.diff(diffOptions);\n if (!_this.stopped) {\n _this.updateWatch(options.variables);\n }\n _this.updateLastDiff(diff, diffOptions);\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n }\n else {\n this.lastWrite = void 0;\n }\n }\n };\n QueryInfo.prototype.markReady = function () {\n this.networkError = null;\n return this.networkStatus = NetworkStatus.ready;\n };\n QueryInfo.prototype.markError = function (error) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n this.reset();\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n return error;\n };\n return QueryInfo;\n}());\nexport { QueryInfo };\nexport function shouldWriteResult(result, errorPolicy) {\n if (errorPolicy === void 0) { errorPolicy = \"none\"; }\n var ignoreErrors = errorPolicy === \"ignore\" ||\n errorPolicy === \"all\";\n var writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n//# sourceMappingURL=QueryInfo.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant, InvariantError } from \"../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { execute } from \"../link/core/index.js\";\nimport { isExecutionPatchIncrementalResult, isExecutionPatchResult, } from \"../utilities/common/incrementalResult.js\";\nimport { canonicalStringify } from \"../cache/index.js\";\nimport { getDefaultValues, getOperationDefinition, getOperationName, hasClientExports, graphQLResultHasError, getGraphQLErrorsFromResult, removeConnectionDirectiveFromDocument, canUseWeakMap, Observable, asyncMap, isNonEmptyArray, Concast, makeUniqueId, isDocumentNode, isNonNullObject, } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/common/incrementalResult.js\";\nimport { ApolloError, isApolloError, graphQLResultHasProtocolErrors } from \"../errors/index.js\";\nimport { ObservableQuery, logMissingFieldErrors } from \"./ObservableQuery.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { LocalState } from \"./LocalState.js\";\nimport { QueryInfo, shouldWriteResult, } from \"./QueryInfo.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../errors/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar QueryManager = (function () {\n function QueryManager(_a) {\n var cache = _a.cache, link = _a.link, defaultOptions = _a.defaultOptions, _b = _a.queryDeduplication, queryDeduplication = _b === void 0 ? false : _b, onBroadcast = _a.onBroadcast, _c = _a.ssrMode, ssrMode = _c === void 0 ? false : _c, _d = _a.clientAwareness, clientAwareness = _d === void 0 ? {} : _d, localState = _a.localState, assumeImmutableResults = _a.assumeImmutableResults;\n this.clientAwareness = {};\n this.queries = new Map();\n this.fetchCancelFns = new Map();\n this.transformCache = new (canUseWeakMap ? WeakMap : Map)();\n this.queryIdCounter = 1;\n this.requestIdCounter = 1;\n this.mutationIdCounter = 1;\n this.inFlightLinkObservables = new Map();\n this.cache = cache;\n this.link = link;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.queryDeduplication = queryDeduplication;\n this.clientAwareness = clientAwareness;\n this.localState = localState || new LocalState({ cache: cache });\n this.ssrMode = ssrMode;\n this.assumeImmutableResults = !!assumeImmutableResults;\n if ((this.onBroadcast = onBroadcast)) {\n this.mutationStore = Object.create(null);\n }\n }\n QueryManager.prototype.stop = function () {\n var _this = this;\n this.queries.forEach(function (_info, queryId) {\n _this.stopQueryNoBroadcast(queryId);\n });\n this.cancelPendingFetches(__DEV__ ? new InvariantError('QueryManager stopped while query was in flight') : new InvariantError(14));\n };\n QueryManager.prototype.cancelPendingFetches = function (error) {\n this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });\n this.fetchCancelFns.clear();\n };\n QueryManager.prototype.mutate = function (_a) {\n var _b, _c;\n var mutation = _a.mutation, variables = _a.variables, optimisticResponse = _a.optimisticResponse, updateQueries = _a.updateQueries, _d = _a.refetchQueries, refetchQueries = _d === void 0 ? [] : _d, _e = _a.awaitRefetchQueries, awaitRefetchQueries = _e === void 0 ? false : _e, updateWithProxyFn = _a.update, onQueryUpdated = _a.onQueryUpdated, _f = _a.fetchPolicy, fetchPolicy = _f === void 0 ? ((_b = this.defaultOptions.mutate) === null || _b === void 0 ? void 0 : _b.fetchPolicy) || \"network-only\" : _f, _g = _a.errorPolicy, errorPolicy = _g === void 0 ? ((_c = this.defaultOptions.mutate) === null || _c === void 0 ? void 0 : _c.errorPolicy) || \"none\" : _g, keepRootFields = _a.keepRootFields, context = _a.context;\n return __awaiter(this, void 0, void 0, function () {\n var mutationId, _h, document, hasClientExports, mutationStoreValue, self;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n __DEV__ ? invariant(mutation, 'mutation option is required. You must specify your GraphQL document in the mutation option.') : invariant(mutation, 15);\n __DEV__ ? invariant(fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache', \"Mutations support only 'network-only' or 'no-cache' fetchPolicy strings. The default `network-only` behavior automatically writes mutation results to the cache. Passing `no-cache` skips the cache write.\") : invariant(fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache', 16);\n mutationId = this.generateMutationId();\n _h = this.transform(mutation), document = _h.document, hasClientExports = _h.hasClientExports;\n mutation = this.cache.transformForLink(document);\n variables = this.getVariables(mutation, variables);\n if (!hasClientExports) return [3, 2];\n return [4, this.localState.addExportedVariables(mutation, variables, context)];\n case 1:\n variables = (_j.sent());\n _j.label = 2;\n case 2:\n mutationStoreValue = this.mutationStore &&\n (this.mutationStore[mutationId] = {\n mutation: mutation,\n variables: variables,\n loading: true,\n error: null,\n });\n if (optimisticResponse) {\n this.markMutationOptimistic(optimisticResponse, {\n mutationId: mutationId,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n updateQueries: updateQueries,\n update: updateWithProxyFn,\n keepRootFields: keepRootFields,\n });\n }\n this.broadcastQueries();\n self = this;\n return [2, new Promise(function (resolve, reject) {\n return asyncMap(self.getObservableFromLink(mutation, __assign(__assign({}, context), { optimisticResponse: optimisticResponse }), variables, false), function (result) {\n if (graphQLResultHasError(result) && errorPolicy === 'none') {\n throw new ApolloError({\n graphQLErrors: getGraphQLErrorsFromResult(result),\n });\n }\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = null;\n }\n var storeResult = __assign({}, result);\n if (typeof refetchQueries === \"function\") {\n refetchQueries = refetchQueries(storeResult);\n }\n if (errorPolicy === 'ignore' &&\n graphQLResultHasError(storeResult)) {\n delete storeResult.errors;\n }\n return self.markMutationResult({\n mutationId: mutationId,\n result: storeResult,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n update: updateWithProxyFn,\n updateQueries: updateQueries,\n awaitRefetchQueries: awaitRefetchQueries,\n refetchQueries: refetchQueries,\n removeOptimistic: optimisticResponse ? mutationId : void 0,\n onQueryUpdated: onQueryUpdated,\n keepRootFields: keepRootFields,\n });\n }).subscribe({\n next: function (storeResult) {\n self.broadcastQueries();\n if (!('hasNext' in storeResult) || storeResult.hasNext === false) {\n resolve(storeResult);\n }\n },\n error: function (err) {\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = err;\n }\n if (optimisticResponse) {\n self.cache.removeOptimistic(mutationId);\n }\n self.broadcastQueries();\n reject(err instanceof ApolloError ? err : new ApolloError({\n networkError: err,\n }));\n },\n });\n })];\n }\n });\n });\n };\n QueryManager.prototype.markMutationResult = function (mutation, cache) {\n var _this = this;\n if (cache === void 0) { cache = this.cache; }\n var result = mutation.result;\n var cacheWrites = [];\n var skipCache = mutation.fetchPolicy === \"no-cache\";\n if (!skipCache && shouldWriteResult(result, mutation.errorPolicy)) {\n if (!isExecutionPatchIncrementalResult(result)) {\n cacheWrites.push({\n result: result.data,\n dataId: 'ROOT_MUTATION',\n query: mutation.document,\n variables: mutation.variables,\n });\n }\n if (isExecutionPatchIncrementalResult(result) && isNonEmptyArray(result.incremental)) {\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n query: this.transform(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n var mergedData = void 0;\n if (diff.result) {\n mergedData = mergeIncrementalData(diff.result, result);\n }\n if (typeof mergedData !== 'undefined') {\n result.data = mergedData;\n cacheWrites.push({\n result: mergedData,\n dataId: 'ROOT_MUTATION',\n query: mutation.document,\n variables: mutation.variables,\n });\n }\n }\n var updateQueries_1 = mutation.updateQueries;\n if (updateQueries_1) {\n this.queries.forEach(function (_a, queryId) {\n var observableQuery = _a.observableQuery;\n var queryName = observableQuery && observableQuery.queryName;\n if (!queryName || !hasOwnProperty.call(updateQueries_1, queryName)) {\n return;\n }\n var updater = updateQueries_1[queryName];\n var _b = _this.queries.get(queryId), document = _b.document, variables = _b.variables;\n var _c = cache.diff({\n query: document,\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }), currentQueryResult = _c.result, complete = _c.complete;\n if (complete && currentQueryResult) {\n var nextQueryResult = updater(currentQueryResult, {\n mutationResult: result,\n queryName: document && getOperationName(document) || void 0,\n queryVariables: variables,\n });\n if (nextQueryResult) {\n cacheWrites.push({\n result: nextQueryResult,\n dataId: 'ROOT_QUERY',\n query: document,\n variables: variables,\n });\n }\n }\n });\n }\n }\n if (cacheWrites.length > 0 ||\n mutation.refetchQueries ||\n mutation.update ||\n mutation.onQueryUpdated ||\n mutation.removeOptimistic) {\n var results_1 = [];\n this.refetchQueries({\n updateCache: function (cache) {\n if (!skipCache) {\n cacheWrites.forEach(function (write) { return cache.write(write); });\n }\n var update = mutation.update;\n var isFinalResult = !isExecutionPatchResult(result) ||\n (isExecutionPatchIncrementalResult(result) && !result.hasNext);\n if (update) {\n if (!skipCache) {\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n query: _this.transform(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n if (diff.complete) {\n result = __assign(__assign({}, result), { data: diff.result });\n if ('incremental' in result) {\n delete result.incremental;\n }\n if ('hasNext' in result) {\n delete result.hasNext;\n }\n }\n }\n if (isFinalResult) {\n update(cache, result, {\n context: mutation.context,\n variables: mutation.variables,\n });\n }\n }\n if (!skipCache && !mutation.keepRootFields && isFinalResult) {\n cache.modify({\n id: 'ROOT_MUTATION',\n fields: function (value, _a) {\n var fieldName = _a.fieldName, DELETE = _a.DELETE;\n return fieldName === \"__typename\" ? value : DELETE;\n },\n });\n }\n },\n include: mutation.refetchQueries,\n optimistic: false,\n removeOptimistic: mutation.removeOptimistic,\n onQueryUpdated: mutation.onQueryUpdated || null,\n }).forEach(function (result) { return results_1.push(result); });\n if (mutation.awaitRefetchQueries || mutation.onQueryUpdated) {\n return Promise.all(results_1).then(function () { return result; });\n }\n }\n return Promise.resolve(result);\n };\n QueryManager.prototype.markMutationOptimistic = function (optimisticResponse, mutation) {\n var _this = this;\n var data = typeof optimisticResponse === \"function\"\n ? optimisticResponse(mutation.variables)\n : optimisticResponse;\n return this.cache.recordOptimisticTransaction(function (cache) {\n try {\n _this.markMutationResult(__assign(__assign({}, mutation), { result: { data: data } }), cache);\n }\n catch (error) {\n __DEV__ && invariant.error(error);\n }\n }, mutation.mutationId);\n };\n QueryManager.prototype.fetchQuery = function (queryId, options, networkStatus) {\n return this.fetchQueryObservable(queryId, options, networkStatus).promise;\n };\n QueryManager.prototype.getQueryStore = function () {\n var store = Object.create(null);\n this.queries.forEach(function (info, queryId) {\n store[queryId] = {\n variables: info.variables,\n networkStatus: info.networkStatus,\n networkError: info.networkError,\n graphQLErrors: info.graphQLErrors,\n };\n });\n return store;\n };\n QueryManager.prototype.resetErrors = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo) {\n queryInfo.networkError = undefined;\n queryInfo.graphQLErrors = [];\n }\n };\n QueryManager.prototype.transform = function (document) {\n var transformCache = this.transformCache;\n if (!transformCache.has(document)) {\n var transformed = this.cache.transformDocument(document);\n var noConnection = removeConnectionDirectiveFromDocument(transformed);\n var clientQuery = this.localState.clientQuery(transformed);\n var serverQuery = noConnection && this.localState.serverQuery(noConnection);\n var cacheEntry_1 = {\n document: transformed,\n hasClientExports: hasClientExports(transformed),\n hasForcedResolvers: this.localState.shouldForceResolvers(transformed),\n clientQuery: clientQuery,\n serverQuery: serverQuery,\n defaultVars: getDefaultValues(getOperationDefinition(transformed)),\n asQuery: __assign(__assign({}, transformed), { definitions: transformed.definitions.map(function (def) {\n if (def.kind === \"OperationDefinition\" &&\n def.operation !== \"query\") {\n return __assign(__assign({}, def), { operation: \"query\" });\n }\n return def;\n }) })\n };\n var add = function (doc) {\n if (doc && !transformCache.has(doc)) {\n transformCache.set(doc, cacheEntry_1);\n }\n };\n add(document);\n add(transformed);\n add(clientQuery);\n add(serverQuery);\n }\n return transformCache.get(document);\n };\n QueryManager.prototype.getVariables = function (document, variables) {\n return __assign(__assign({}, this.transform(document).defaultVars), variables);\n };\n QueryManager.prototype.watchQuery = function (options) {\n options = __assign(__assign({}, options), { variables: this.getVariables(options.query, options.variables) });\n if (typeof options.notifyOnNetworkStatusChange === 'undefined') {\n options.notifyOnNetworkStatusChange = false;\n }\n var queryInfo = new QueryInfo(this);\n var observable = new ObservableQuery({\n queryManager: this,\n queryInfo: queryInfo,\n options: options,\n });\n this.queries.set(observable.queryId, queryInfo);\n queryInfo.init({\n document: observable.query,\n observableQuery: observable,\n variables: observable.variables,\n });\n return observable;\n };\n QueryManager.prototype.query = function (options, queryId) {\n var _this = this;\n if (queryId === void 0) { queryId = this.generateQueryId(); }\n __DEV__ ? invariant(options.query, 'query option is required. You must specify your GraphQL document ' +\n 'in the query option.') : invariant(options.query, 17);\n __DEV__ ? invariant(options.query.kind === 'Document', 'You must wrap the query string in a \"gql\" tag.') : invariant(options.query.kind === 'Document', 18);\n __DEV__ ? invariant(!options.returnPartialData, 'returnPartialData option only supported on watchQuery.') : invariant(!options.returnPartialData, 19);\n __DEV__ ? invariant(!options.pollInterval, 'pollInterval option only supported on watchQuery.') : invariant(!options.pollInterval, 20);\n return this.fetchQuery(queryId, options).finally(function () { return _this.stopQuery(queryId); });\n };\n QueryManager.prototype.generateQueryId = function () {\n return String(this.queryIdCounter++);\n };\n QueryManager.prototype.generateRequestId = function () {\n return this.requestIdCounter++;\n };\n QueryManager.prototype.generateMutationId = function () {\n return String(this.mutationIdCounter++);\n };\n QueryManager.prototype.stopQueryInStore = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo)\n queryInfo.stop();\n };\n QueryManager.prototype.clearStore = function (options) {\n if (options === void 0) { options = {\n discardWatches: true,\n }; }\n this.cancelPendingFetches(__DEV__ ? new InvariantError('Store reset while query was in flight (not completed in link chain)') : new InvariantError(21));\n this.queries.forEach(function (queryInfo) {\n if (queryInfo.observableQuery) {\n queryInfo.networkStatus = NetworkStatus.loading;\n }\n else {\n queryInfo.stop();\n }\n });\n if (this.mutationStore) {\n this.mutationStore = Object.create(null);\n }\n return this.cache.reset(options);\n };\n QueryManager.prototype.getObservableQueries = function (include) {\n var _this = this;\n if (include === void 0) { include = \"active\"; }\n var queries = new Map();\n var queryNamesAndDocs = new Map();\n var legacyQueryOptions = new Set();\n if (Array.isArray(include)) {\n include.forEach(function (desc) {\n if (typeof desc === \"string\") {\n queryNamesAndDocs.set(desc, false);\n }\n else if (isDocumentNode(desc)) {\n queryNamesAndDocs.set(_this.transform(desc).document, false);\n }\n else if (isNonNullObject(desc) && desc.query) {\n legacyQueryOptions.add(desc);\n }\n });\n }\n this.queries.forEach(function (_a, queryId) {\n var oq = _a.observableQuery, document = _a.document;\n if (oq) {\n if (include === \"all\") {\n queries.set(queryId, oq);\n return;\n }\n var queryName = oq.queryName, fetchPolicy = oq.options.fetchPolicy;\n if (fetchPolicy === \"standby\" ||\n (include === \"active\" && !oq.hasObservers())) {\n return;\n }\n if (include === \"active\" ||\n (queryName && queryNamesAndDocs.has(queryName)) ||\n (document && queryNamesAndDocs.has(document))) {\n queries.set(queryId, oq);\n if (queryName)\n queryNamesAndDocs.set(queryName, true);\n if (document)\n queryNamesAndDocs.set(document, true);\n }\n }\n });\n if (legacyQueryOptions.size) {\n legacyQueryOptions.forEach(function (options) {\n var queryId = makeUniqueId(\"legacyOneTimeQuery\");\n var queryInfo = _this.getQuery(queryId).init({\n document: options.query,\n variables: options.variables,\n });\n var oq = new ObservableQuery({\n queryManager: _this,\n queryInfo: queryInfo,\n options: __assign(__assign({}, options), { fetchPolicy: \"network-only\" }),\n });\n invariant(oq.queryId === queryId);\n queryInfo.setObservableQuery(oq);\n queries.set(queryId, oq);\n });\n }\n if (__DEV__ && queryNamesAndDocs.size) {\n queryNamesAndDocs.forEach(function (included, nameOrDoc) {\n if (!included) {\n __DEV__ && invariant.warn(\"Unknown query \".concat(typeof nameOrDoc === \"string\" ? \"named \" : \"\").concat(JSON.stringify(nameOrDoc, null, 2), \" requested in refetchQueries options.include array\"));\n }\n });\n }\n return queries;\n };\n QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n var _this = this;\n if (includeStandby === void 0) { includeStandby = false; }\n var observableQueryPromises = [];\n this.getObservableQueries(includeStandby ? \"all\" : \"active\").forEach(function (observableQuery, queryId) {\n var fetchPolicy = observableQuery.options.fetchPolicy;\n observableQuery.resetLastResults();\n if (includeStandby ||\n (fetchPolicy !== \"standby\" &&\n fetchPolicy !== \"cache-only\")) {\n observableQueryPromises.push(observableQuery.refetch());\n }\n _this.getQuery(queryId).setDiff(null);\n });\n this.broadcastQueries();\n return Promise.all(observableQueryPromises);\n };\n QueryManager.prototype.setObservableQuery = function (observableQuery) {\n this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);\n };\n QueryManager.prototype.startGraphQLSubscription = function (_a) {\n var _this = this;\n var query = _a.query, fetchPolicy = _a.fetchPolicy, errorPolicy = _a.errorPolicy, variables = _a.variables, _b = _a.context, context = _b === void 0 ? {} : _b;\n query = this.transform(query).document;\n variables = this.getVariables(query, variables);\n var makeObservable = function (variables) {\n return _this.getObservableFromLink(query, context, variables).map(function (result) {\n if (fetchPolicy !== 'no-cache') {\n if (shouldWriteResult(result, errorPolicy)) {\n _this.cache.write({\n query: query,\n result: result.data,\n dataId: 'ROOT_SUBSCRIPTION',\n variables: variables,\n });\n }\n _this.broadcastQueries();\n }\n var hasErrors = graphQLResultHasError(result);\n var hasProtocolErrors = graphQLResultHasProtocolErrors(result);\n if (hasErrors || hasProtocolErrors) {\n var errors = {};\n if (hasErrors) {\n errors.graphQLErrors = result.errors;\n }\n if (hasProtocolErrors) {\n errors.protocolErrors = result.extensions[PROTOCOL_ERRORS_SYMBOL];\n }\n throw new ApolloError(errors);\n }\n return result;\n });\n };\n if (this.transform(query).hasClientExports) {\n var observablePromise_1 = this.localState.addExportedVariables(query, variables, context).then(makeObservable);\n return new Observable(function (observer) {\n var sub = null;\n observablePromise_1.then(function (observable) { return sub = observable.subscribe(observer); }, observer.error);\n return function () { return sub && sub.unsubscribe(); };\n });\n }\n return makeObservable(variables);\n };\n QueryManager.prototype.stopQuery = function (queryId) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n };\n QueryManager.prototype.removeQuery = function (queryId) {\n this.fetchCancelFns.delete(queryId);\n if (this.queries.has(queryId)) {\n this.getQuery(queryId).stop();\n this.queries.delete(queryId);\n }\n };\n QueryManager.prototype.broadcastQueries = function () {\n if (this.onBroadcast)\n this.onBroadcast();\n this.queries.forEach(function (info) { return info.notify(); });\n };\n QueryManager.prototype.getLocalState = function () {\n return this.localState;\n };\n QueryManager.prototype.getObservableFromLink = function (query, context, variables, deduplication) {\n var _this = this;\n var _a;\n if (deduplication === void 0) { deduplication = (_a = context === null || context === void 0 ? void 0 : context.queryDeduplication) !== null && _a !== void 0 ? _a : this.queryDeduplication; }\n var observable;\n var serverQuery = this.transform(query).serverQuery;\n if (serverQuery) {\n var _b = this, inFlightLinkObservables_1 = _b.inFlightLinkObservables, link = _b.link;\n var operation = {\n query: serverQuery,\n variables: variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext(__assign(__assign({}, context), { forceFetch: !deduplication })),\n };\n context = operation.context;\n if (deduplication) {\n var byVariables_1 = inFlightLinkObservables_1.get(serverQuery) || new Map();\n inFlightLinkObservables_1.set(serverQuery, byVariables_1);\n var varJson_1 = canonicalStringify(variables);\n observable = byVariables_1.get(varJson_1);\n if (!observable) {\n var concast = new Concast([\n execute(link, operation)\n ]);\n byVariables_1.set(varJson_1, observable = concast);\n concast.beforeNext(function () {\n if (byVariables_1.delete(varJson_1) &&\n byVariables_1.size < 1) {\n inFlightLinkObservables_1.delete(serverQuery);\n }\n });\n }\n }\n else {\n observable = new Concast([\n execute(link, operation)\n ]);\n }\n }\n else {\n observable = new Concast([\n Observable.of({ data: {} })\n ]);\n context = this.prepareContext(context);\n }\n var clientQuery = this.transform(query).clientQuery;\n if (clientQuery) {\n observable = asyncMap(observable, function (result) {\n return _this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context: context,\n variables: variables,\n });\n });\n }\n return observable;\n };\n QueryManager.prototype.getResultsFromLink = function (queryInfo, cacheWriteBehavior, options) {\n var requestId = queryInfo.lastRequestId = this.generateRequestId();\n var linkDocument = this.cache.transformForLink(this.transform(queryInfo.document).document);\n return asyncMap(this.getObservableFromLink(linkDocument, options.context, options.variables), function (result) {\n var graphQLErrors = getGraphQLErrorsFromResult(result);\n var hasErrors = graphQLErrors.length > 0;\n if (requestId >= queryInfo.lastRequestId) {\n if (hasErrors && options.errorPolicy === \"none\") {\n throw queryInfo.markError(new ApolloError({\n graphQLErrors: graphQLErrors,\n }));\n }\n queryInfo.markResult(result, linkDocument, options, cacheWriteBehavior);\n queryInfo.markReady();\n }\n var aqr = {\n data: result.data,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n if (hasErrors && options.errorPolicy !== \"ignore\") {\n aqr.errors = graphQLErrors;\n aqr.networkStatus = NetworkStatus.error;\n }\n return aqr;\n }, function (networkError) {\n var error = isApolloError(networkError)\n ? networkError\n : new ApolloError({ networkError: networkError });\n if (requestId >= queryInfo.lastRequestId) {\n queryInfo.markError(error);\n }\n throw error;\n });\n };\n QueryManager.prototype.fetchQueryObservable = function (queryId, options, networkStatus) {\n return this.fetchConcastWithInfo(queryId, options, networkStatus).concast;\n };\n QueryManager.prototype.fetchConcastWithInfo = function (queryId, options, networkStatus) {\n var _this = this;\n if (networkStatus === void 0) { networkStatus = NetworkStatus.loading; }\n var query = this.transform(options.query).document;\n var variables = this.getVariables(query, options.variables);\n var queryInfo = this.getQuery(queryId);\n var defaults = this.defaultOptions.watchQuery;\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? defaults && defaults.fetchPolicy || \"cache-first\" : _a, _b = options.errorPolicy, errorPolicy = _b === void 0 ? defaults && defaults.errorPolicy || \"none\" : _b, _c = options.returnPartialData, returnPartialData = _c === void 0 ? false : _c, _d = options.notifyOnNetworkStatusChange, notifyOnNetworkStatusChange = _d === void 0 ? false : _d, _e = options.context, context = _e === void 0 ? {} : _e;\n var normalized = Object.assign({}, options, {\n query: query,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n returnPartialData: returnPartialData,\n notifyOnNetworkStatusChange: notifyOnNetworkStatusChange,\n context: context,\n });\n var fromVariables = function (variables) {\n normalized.variables = variables;\n var sourcesWithInfo = _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);\n if (normalized.fetchPolicy !== \"standby\" &&\n sourcesWithInfo.sources.length > 0 &&\n queryInfo.observableQuery) {\n queryInfo.observableQuery[\"applyNextFetchPolicy\"](\"after-fetch\", options);\n }\n return sourcesWithInfo;\n };\n var cleanupCancelFn = function () { return _this.fetchCancelFns.delete(queryId); };\n this.fetchCancelFns.set(queryId, function (reason) {\n cleanupCancelFn();\n setTimeout(function () { return concast.cancel(reason); });\n });\n var concast, containsDataFromLink;\n if (this.transform(normalized.query).hasClientExports) {\n concast = new Concast(this.localState\n .addExportedVariables(normalized.query, normalized.variables, normalized.context)\n .then(fromVariables).then(function (sourcesWithInfo) { return sourcesWithInfo.sources; }));\n containsDataFromLink = true;\n }\n else {\n var sourcesWithInfo = fromVariables(normalized.variables);\n containsDataFromLink = sourcesWithInfo.fromLink;\n concast = new Concast(sourcesWithInfo.sources);\n }\n concast.promise.then(cleanupCancelFn, cleanupCancelFn);\n return {\n concast: concast,\n fromLink: containsDataFromLink,\n };\n };\n QueryManager.prototype.refetchQueries = function (_a) {\n var _this = this;\n var updateCache = _a.updateCache, include = _a.include, _b = _a.optimistic, optimistic = _b === void 0 ? false : _b, _c = _a.removeOptimistic, removeOptimistic = _c === void 0 ? optimistic ? makeUniqueId(\"refetchQueries\") : void 0 : _c, onQueryUpdated = _a.onQueryUpdated;\n var includedQueriesById = new Map();\n if (include) {\n this.getObservableQueries(include).forEach(function (oq, queryId) {\n includedQueriesById.set(queryId, {\n oq: oq,\n lastDiff: _this.getQuery(queryId).getDiff(),\n });\n });\n }\n var results = new Map;\n if (updateCache) {\n this.cache.batch({\n update: updateCache,\n optimistic: optimistic && removeOptimistic || false,\n removeOptimistic: removeOptimistic,\n onWatchUpdated: function (watch, diff, lastDiff) {\n var oq = watch.watcher instanceof QueryInfo &&\n watch.watcher.observableQuery;\n if (oq) {\n if (onQueryUpdated) {\n includedQueriesById.delete(oq.queryId);\n var result = onQueryUpdated(oq, diff, lastDiff);\n if (result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n return result;\n }\n if (onQueryUpdated !== null) {\n includedQueriesById.set(oq.queryId, { oq: oq, lastDiff: lastDiff, diff: diff });\n }\n }\n },\n });\n }\n if (includedQueriesById.size) {\n includedQueriesById.forEach(function (_a, queryId) {\n var oq = _a.oq, lastDiff = _a.lastDiff, diff = _a.diff;\n var result;\n if (onQueryUpdated) {\n if (!diff) {\n var info = oq[\"queryInfo\"];\n info.reset();\n diff = info.getDiff();\n }\n result = onQueryUpdated(oq, diff, lastDiff);\n }\n if (!onQueryUpdated || result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n if (queryId.indexOf(\"legacyOneTimeQuery\") >= 0) {\n _this.stopQueryNoBroadcast(queryId);\n }\n });\n }\n if (removeOptimistic) {\n this.cache.removeOptimistic(removeOptimistic);\n }\n return results;\n };\n QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a, networkStatus) {\n var _this = this;\n var query = _a.query, variables = _a.variables, fetchPolicy = _a.fetchPolicy, refetchWritePolicy = _a.refetchWritePolicy, errorPolicy = _a.errorPolicy, returnPartialData = _a.returnPartialData, context = _a.context, notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange;\n var oldNetworkStatus = queryInfo.networkStatus;\n queryInfo.init({\n document: this.transform(query).document,\n variables: variables,\n networkStatus: networkStatus,\n });\n var readCache = function () { return queryInfo.getDiff(variables); };\n var resultsFromCache = function (diff, networkStatus) {\n if (networkStatus === void 0) { networkStatus = queryInfo.networkStatus || NetworkStatus.loading; }\n var data = diff.result;\n if (__DEV__ &&\n !returnPartialData &&\n !equal(data, {})) {\n logMissingFieldErrors(diff.missing);\n }\n var fromData = function (data) { return Observable.of(__assign({ data: data, loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus }, (diff.complete ? null : { partial: true }))); };\n if (data && _this.transform(query).hasForcedResolvers) {\n return _this.localState.runResolvers({\n document: query,\n remoteResult: { data: data },\n context: context,\n variables: variables,\n onlyRunForcedResolvers: true,\n }).then(function (resolved) { return fromData(resolved.data || void 0); });\n }\n if (errorPolicy === 'none' &&\n networkStatus === NetworkStatus.refetch &&\n Array.isArray(diff.missing)) {\n return fromData(void 0);\n }\n return fromData(data);\n };\n var cacheWriteBehavior = fetchPolicy === \"no-cache\" ? 0 :\n (networkStatus === NetworkStatus.refetch &&\n refetchWritePolicy !== \"merge\") ? 1\n : 2;\n var resultsFromLink = function () { return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {\n variables: variables,\n context: context,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n }); };\n var shouldNotify = notifyOnNetworkStatusChange &&\n typeof oldNetworkStatus === \"number\" &&\n oldNetworkStatus !== networkStatus &&\n isNetworkRequestInFlight(networkStatus);\n switch (fetchPolicy) {\n default:\n case \"cache-first\": {\n var diff = readCache();\n if (diff.complete) {\n return { fromLink: false, sources: [resultsFromCache(diff, queryInfo.markReady())] };\n }\n if (returnPartialData || shouldNotify) {\n return { fromLink: true, sources: [resultsFromCache(diff), resultsFromLink()] };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n }\n case \"cache-and-network\": {\n var diff = readCache();\n if (diff.complete || returnPartialData || shouldNotify) {\n return { fromLink: true, sources: [resultsFromCache(diff), resultsFromLink()] };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n }\n case \"cache-only\":\n return { fromLink: false, sources: [resultsFromCache(readCache(), queryInfo.markReady())] };\n case \"network-only\":\n if (shouldNotify) {\n return { fromLink: true, sources: [resultsFromCache(readCache()), resultsFromLink()] };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n case \"no-cache\":\n if (shouldNotify) {\n return {\n fromLink: true,\n sources: [\n resultsFromCache(queryInfo.getDiff()),\n resultsFromLink(),\n ],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n case \"standby\":\n return { fromLink: false, sources: [] };\n }\n };\n QueryManager.prototype.getQuery = function (queryId) {\n if (queryId && !this.queries.has(queryId)) {\n this.queries.set(queryId, new QueryInfo(this, queryId));\n }\n return this.queries.get(queryId);\n };\n QueryManager.prototype.prepareContext = function (context) {\n if (context === void 0) { context = {}; }\n var newContext = this.localState.prepareContext(context);\n return __assign(__assign({}, newContext), { clientAwareness: this.clientAwareness });\n };\n return QueryManager;\n}());\nexport { QueryManager };\n//# sourceMappingURL=QueryManager.js.map","export var Cache;\n(function (Cache) {\n})(Cache || (Cache = {}));\n//# sourceMappingURL=Cache.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../utilities/globals/index.js\";\nimport { ApolloLink, execute } from \"../link/core/index.js\";\nimport { version } from \"../version.js\";\nimport { HttpLink } from \"../link/http/index.js\";\nimport { QueryManager } from \"./QueryManager.js\";\nimport { LocalState, } from \"./LocalState.js\";\nvar hasSuggestedDevtools = false;\nimport { mergeOptions } from \"../utilities/index.js\";\nexport { mergeOptions };\nvar ApolloClient = (function () {\n function ApolloClient(options) {\n var _this = this;\n this.resetStoreCallbacks = [];\n this.clearStoreCallbacks = [];\n var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b, _c = options.connectToDevTools, connectToDevTools = _c === void 0 ? typeof window === 'object' &&\n !window.__APOLLO_CLIENT__ &&\n __DEV__ : _c, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? false : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version;\n var link = options.link;\n if (!link) {\n link = uri\n ? new HttpLink({ uri: uri, credentials: credentials, headers: headers })\n : ApolloLink.empty();\n }\n if (!cache) {\n throw __DEV__ ? new InvariantError(\"To initialize Apollo Client, you must specify a 'cache' property \" +\n \"in the options object. \\n\" +\n \"For more information, please visit: https://go.apollo.dev/c/docs\") : new InvariantError(9);\n }\n this.link = link;\n this.cache = cache;\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.typeDefs = typeDefs;\n if (ssrForceFetchDelay) {\n setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n }\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n if (connectToDevTools && typeof window === 'object') {\n window.__APOLLO_CLIENT__ = this;\n }\n if (!hasSuggestedDevtools && connectToDevTools && __DEV__) {\n hasSuggestedDevtools = true;\n if (typeof window !== 'undefined' &&\n window.document &&\n window.top === window.self &&\n !window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {\n var nav = window.navigator;\n var ua = nav && nav.userAgent;\n var url = void 0;\n if (typeof ua === \"string\") {\n if (ua.indexOf(\"Chrome/\") > -1) {\n url = \"https://chrome.google.com/webstore/detail/\" +\n \"apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm\";\n }\n else if (ua.indexOf(\"Firefox/\") > -1) {\n url = \"https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/\";\n }\n }\n if (url) {\n __DEV__ && invariant.log(\"Download the Apollo DevTools for a better development \" +\n \"experience: \" + url);\n }\n }\n }\n this.version = version;\n this.localState = new LocalState({\n cache: cache,\n client: this,\n resolvers: resolvers,\n fragmentMatcher: fragmentMatcher,\n });\n this.queryManager = new QueryManager({\n cache: this.cache,\n link: this.link,\n defaultOptions: this.defaultOptions,\n queryDeduplication: queryDeduplication,\n ssrMode: ssrMode,\n clientAwareness: {\n name: clientAwarenessName,\n version: clientAwarenessVersion,\n },\n localState: this.localState,\n assumeImmutableResults: assumeImmutableResults,\n onBroadcast: connectToDevTools ? function () {\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: {},\n state: {\n queries: _this.queryManager.getQueryStore(),\n mutations: _this.queryManager.mutationStore || {},\n },\n dataWithOptimisticResults: _this.cache.extract(true),\n });\n }\n } : void 0,\n });\n }\n ApolloClient.prototype.stop = function () {\n this.queryManager.stop();\n };\n ApolloClient.prototype.watchQuery = function (options) {\n if (this.defaultOptions.watchQuery) {\n options = mergeOptions(this.defaultOptions.watchQuery, options);\n }\n if (this.disableNetworkFetches &&\n (options.fetchPolicy === 'network-only' ||\n options.fetchPolicy === 'cache-and-network')) {\n options = __assign(__assign({}, options), { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.watchQuery(options);\n };\n ApolloClient.prototype.query = function (options) {\n if (this.defaultOptions.query) {\n options = mergeOptions(this.defaultOptions.query, options);\n }\n __DEV__ ? invariant(options.fetchPolicy !== 'cache-and-network', 'The cache-and-network fetchPolicy does not work with client.query, because ' +\n 'client.query can only return a single result. Please use client.watchQuery ' +\n 'to receive multiple results from the cache and the network, or consider ' +\n 'using a different fetchPolicy, such as cache-first or network-only.') : invariant(options.fetchPolicy !== 'cache-and-network', 10);\n if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n options = __assign(__assign({}, options), { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.query(options);\n };\n ApolloClient.prototype.mutate = function (options) {\n if (this.defaultOptions.mutate) {\n options = mergeOptions(this.defaultOptions.mutate, options);\n }\n return this.queryManager.mutate(options);\n };\n ApolloClient.prototype.subscribe = function (options) {\n return this.queryManager.startGraphQLSubscription(options);\n };\n ApolloClient.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readQuery(options, optimistic);\n };\n ApolloClient.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readFragment(options, optimistic);\n };\n ApolloClient.prototype.writeQuery = function (options) {\n var ref = this.cache.writeQuery(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n ApolloClient.prototype.writeFragment = function (options) {\n var ref = this.cache.writeFragment(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n this.devToolsHookCb = cb;\n };\n ApolloClient.prototype.__requestRaw = function (payload) {\n return execute(this.link, payload);\n };\n ApolloClient.prototype.resetStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () { return _this.queryManager.clearStore({\n discardWatches: false,\n }); })\n .then(function () { return Promise.all(_this.resetStoreCallbacks.map(function (fn) { return fn(); })); })\n .then(function () { return _this.reFetchObservableQueries(); });\n };\n ApolloClient.prototype.clearStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () { return _this.queryManager.clearStore({\n discardWatches: true,\n }); })\n .then(function () { return Promise.all(_this.clearStoreCallbacks.map(function (fn) { return fn(); })); });\n };\n ApolloClient.prototype.onResetStore = function (cb) {\n var _this = this;\n this.resetStoreCallbacks.push(cb);\n return function () {\n _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n ApolloClient.prototype.onClearStore = function (cb) {\n var _this = this;\n this.clearStoreCallbacks.push(cb);\n return function () {\n _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n };\n ApolloClient.prototype.refetchQueries = function (options) {\n var map = this.queryManager.refetchQueries(options);\n var queries = [];\n var results = [];\n map.forEach(function (result, obsQuery) {\n queries.push(obsQuery);\n results.push(result);\n });\n var result = Promise.all(results);\n result.queries = queries;\n result.results = results;\n result.catch(function (error) {\n __DEV__ && invariant.debug(\"In client.refetchQueries, Promise.all promise rejected with error \".concat(error));\n });\n return result;\n };\n ApolloClient.prototype.getObservableQueries = function (include) {\n if (include === void 0) { include = \"active\"; }\n return this.queryManager.getObservableQueries(include);\n };\n ApolloClient.prototype.extract = function (optimistic) {\n return this.cache.extract(optimistic);\n };\n ApolloClient.prototype.restore = function (serializedState) {\n return this.cache.restore(serializedState);\n };\n ApolloClient.prototype.addResolvers = function (resolvers) {\n this.localState.addResolvers(resolvers);\n };\n ApolloClient.prototype.setResolvers = function (resolvers) {\n this.localState.setResolvers(resolvers);\n };\n ApolloClient.prototype.getResolvers = function () {\n return this.localState.getResolvers();\n };\n ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n };\n ApolloClient.prototype.setLink = function (newLink) {\n this.link = this.queryManager.link = newLink;\n };\n return ApolloClient;\n}());\nexport { ApolloClient };\n//# sourceMappingURL=ApolloClient.js.map","export var version = '3.7.16';\n//# sourceMappingURL=version.js.map","import { __assign, __rest } from \"tslib\";\nimport { wrap } from 'optimism';\nimport { getFragmentQueryDocument, } from \"../../utilities/index.js\";\nvar ApolloCache = (function () {\n function ApolloCache() {\n this.getFragmentDoc = wrap(getFragmentQueryDocument);\n }\n ApolloCache.prototype.batch = function (options) {\n var _this = this;\n var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic :\n options.optimistic === false ? null : void 0;\n var updateResult;\n this.performTransaction(function () { return updateResult = options.update(_this); }, optimisticId);\n return updateResult;\n };\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { rootId: options.id || 'ROOT_QUERY', optimistic: optimistic }));\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));\n };\n ApolloCache.prototype.writeQuery = function (_a) {\n var id = _a.id, data = _a.data, options = __rest(_a, [\"id\", \"data\"]);\n return this.write(Object.assign(options, {\n dataId: id || 'ROOT_QUERY',\n result: data,\n }));\n };\n ApolloCache.prototype.writeFragment = function (_a) {\n var id = _a.id, data = _a.data, fragment = _a.fragment, fragmentName = _a.fragmentName, options = __rest(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data,\n }));\n };\n ApolloCache.prototype.updateQuery = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readQuery(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeQuery(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n ApolloCache.prototype.updateFragment = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readFragment(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeFragment(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n return ApolloCache;\n}());\nexport { ApolloCache };\n//# sourceMappingURL=cache.js.map","import { __extends } from \"tslib\";\nvar MissingFieldError = (function (_super) {\n __extends(MissingFieldError, _super);\n function MissingFieldError(message, path, query, variables) {\n var _a;\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.path = path;\n _this.query = query;\n _this.variables = variables;\n if (Array.isArray(_this.path)) {\n _this.missing = _this.message;\n for (var i = _this.path.length - 1; i >= 0; --i) {\n _this.missing = (_a = {}, _a[_this.path[i]] = _this.missing, _a);\n }\n }\n else {\n _this.missing = _this.path;\n }\n _this.__proto__ = MissingFieldError.prototype;\n return _this;\n }\n return MissingFieldError;\n}(Error));\nexport { MissingFieldError };\n//# sourceMappingURL=common.js.map","import { isReference, isField, DeepMerger, resultKeyNameFromField, shouldInclude, isNonNullObject, compact, createFragmentMap, getFragmentDefinitions, isArray, } from \"../../utilities/index.js\";\nexport var hasOwn = Object.prototype.hasOwnProperty;\nexport function isNullish(value) {\n return value === null || value === void 0;\n}\nexport { isArray };\nexport function defaultDataIdFromObject(_a, context) {\n var __typename = _a.__typename, id = _a.id, _id = _a._id;\n if (typeof __typename === \"string\") {\n if (context) {\n context.keyObject =\n !isNullish(id) ? { id: id } :\n !isNullish(_id) ? { _id: _id } :\n void 0;\n }\n if (isNullish(id) && !isNullish(_id)) {\n id = _id;\n }\n if (!isNullish(id)) {\n return \"\".concat(__typename, \":\").concat((typeof id === \"number\" ||\n typeof id === \"string\") ? id : JSON.stringify(id));\n }\n }\n}\nvar defaultConfig = {\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n canonizeResults: false,\n};\nexport function normalizeConfig(config) {\n return compact(defaultConfig, config);\n}\nexport function shouldCanonizeResults(config) {\n var value = config.canonizeResults;\n return value === void 0 ? defaultConfig.canonizeResults : value;\n}\nexport function getTypenameFromStoreObject(store, objectOrReference) {\n return isReference(objectOrReference)\n ? store.get(objectOrReference.__ref, \"__typename\")\n : objectOrReference && objectOrReference.__typename;\n}\nexport var TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nexport function fieldNameFromStoreName(storeFieldName) {\n var match = storeFieldName.match(TypeOrFieldNameRegExp);\n return match ? match[0] : storeFieldName;\n}\nexport function selectionSetMatchesResult(selectionSet, result, variables) {\n if (isNonNullObject(result)) {\n return isArray(result)\n ? result.every(function (item) { return selectionSetMatchesResult(selectionSet, item, variables); })\n : selectionSet.selections.every(function (field) {\n if (isField(field) && shouldInclude(field, variables)) {\n var key = resultKeyNameFromField(field);\n return hasOwn.call(result, key) &&\n (!field.selectionSet ||\n selectionSetMatchesResult(field.selectionSet, result[key], variables));\n }\n return true;\n });\n }\n return false;\n}\nexport function storeValueIsStoreObject(value) {\n return isNonNullObject(value) &&\n !isReference(value) &&\n !isArray(value);\n}\nexport function makeProcessedFieldsMerger() {\n return new DeepMerger;\n}\nexport function extractFragmentContext(document, fragments) {\n var fragmentMap = createFragmentMap(getFragmentDefinitions(document));\n return {\n fragmentMap: fragmentMap,\n lookupFragment: function (name) {\n var def = fragmentMap[name];\n if (!def && fragments) {\n def = fragments.lookup(name);\n }\n return def || null;\n },\n };\n}\n//# sourceMappingURL=helpers.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { dep } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { Trie } from '@wry/trie';\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = (function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n this.rootIds = Object.create(null);\n this.refs = Object.create(null);\n this.getFieldValue = function (objectOrReference, storeFieldName) { return maybeDeepFreeze(isReference(objectOrReference)\n ? _this.get(objectOrReference.__ref, storeFieldName)\n : objectOrReference && objectOrReference[storeFieldName]); };\n this.canRead = function (objOrRef) {\n return isReference(objOrRef)\n ? _this.has(objOrRef.__ref)\n : typeof objOrRef === \"object\";\n };\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" &&\n hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n if (dependOnExistence)\n this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (older, newer) {\n var _this = this;\n var dataId;\n if (isReference(older))\n older = older.__ref;\n if (isReference(newer))\n newer = newer.__ref;\n var existing = typeof older === \"string\"\n ? this.lookup(dataId = older)\n : older;\n var incoming = typeof newer === \"string\"\n ? this.lookup(dataId = newer)\n : newer;\n if (!incoming)\n return;\n __DEV__ ? invariant(typeof dataId === \"string\", \"store.merge expects a string ID\") : invariant(typeof dataId === \"string\", 1);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n if (!existing)\n fieldsToDirty_1.__exists = 1;\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing || existing[storeFieldName] !== merged[storeFieldName]) {\n fieldsToDirty_1[storeFieldName] = 1;\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName &&\n !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n if (fieldsToDirty_1.__typename &&\n !(existing && existing.__typename) &&\n this.policies.rootTypenamesById[dataId] === merged.__typename) {\n delete fieldsToDirty_1.__typename;\n }\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) { return _this.group.dirty(dataId, fieldName); });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) { return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ? {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId),\n } : fieldNameOrOptions, { store: _this }); },\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0)\n return;\n var modify = typeof fields === \"function\"\n ? fields\n : fields[storeFieldName] || fields[fieldName];\n if (modify) {\n var newValue = modify === delModifier ? DELETE :\n modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), { fieldName: fieldName, storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) }));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n }\n else {\n if (newValue === DELETE)\n newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n }\n else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args\n ? this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {},\n _a[storeFieldName] = delModifier,\n _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options, limit) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer && this !== limit) {\n evicted = this.parent.evict(options, limit) || evicted;\n }\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = { extraRootIds: extraRootIds.sort() };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META, rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1;\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count)\n delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) { ids = new Set(); }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n }\n else {\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer)\n root_1 = root_1.parent;\n idsToRemove.forEach(function (id) { return root_1.delete(id); });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = this.refs[dataId] = Object.create(null);\n var root = this.data[dataId];\n if (!root)\n return found_1;\n var workSet_1 = new Set([root]);\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n }\n if (isNonNullObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var child = obj[key];\n if (isNonNullObject(child)) {\n workSet_1.add(child);\n }\n });\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n return this.group.keyMaker.lookupArray(arguments);\n };\n return EntityStore;\n}());\nexport { EntityStore };\nvar CacheGroup = (function () {\n function CacheGroup(caching, parent) {\n if (parent === void 0) { parent = null; }\n this.caching = caching;\n this.parent = parent;\n this.d = null;\n this.resetCaching();\n }\n CacheGroup.prototype.resetCaching = function () {\n this.d = this.caching ? dep() : null;\n this.keyMaker = new Trie(canUseWeakMap);\n };\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n this.d(makeDepKey(dataId, fieldName));\n }\n if (this.parent) {\n this.parent.depend(dataId, storeFieldName);\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName), storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n }\n };\n return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n return storeFieldName + '#' + dataId;\n}\nexport function maybeDependOnExistenceOfEntity(store, entityId) {\n if (supportsResultCaching(store)) {\n store.group.depend(entityId, \"__exists\");\n }\n}\n(function (EntityStore) {\n var Root = (function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.stump = new Stump(_this);\n _this.storageTrie = new Trie(canUseWeakMap);\n if (seed)\n _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n return this.stump.addLayer(layerId, replay);\n };\n Root.prototype.removeLayer = function () {\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore));\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\nvar Layer = (function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n Object.keys(this.data).forEach(function (dataId) {\n var ownStoreObject = _this.data[dataId];\n var parentStoreObject = parent[\"lookup\"](dataId);\n if (!parentStoreObject) {\n _this.delete(dataId);\n }\n else if (!ownStoreObject) {\n _this.group.dirty(dataId, \"__exists\");\n Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n _this.group.dirty(dataId, storeFieldName);\n });\n }\n else if (ownStoreObject !== parentStoreObject) {\n Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n if (!equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n _this.group.dirty(dataId, storeFieldName);\n }\n });\n }\n });\n }\n return parent;\n }\n if (parent === this.parent)\n return this;\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent)\n p = p.parent;\n return p.getStorage.apply(p, arguments);\n };\n return Layer;\n}(EntityStore));\nvar Stump = (function (_super) {\n __extends(Stump, _super);\n function Stump(root) {\n return _super.call(this, \"EntityStore.Stump\", root, function () { }, new CacheGroup(root.group.caching, root.group)) || this;\n }\n Stump.prototype.removeLayer = function () {\n return this;\n };\n Stump.prototype.merge = function () {\n return this.parent.merge.apply(this.parent, arguments);\n };\n return Stump;\n}(Layer));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n return !!(store instanceof EntityStore && store.group.caching);\n}\n//# sourceMappingURL=entityStore.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { Kind, } from 'graphql';\nimport { wrap } from 'optimism';\nimport { isField, resultKeyNameFromField, isReference, makeReference, shouldInclude, addTypenameToDocument, getDefaultValues, getMainDefinition, getQueryDefinition, getFragmentFromSelection, maybeDeepFreeze, mergeDeepArray, DeepMerger, isNonNullObject, canUseWeakMap, compact, } from \"../../utilities/index.js\";\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching } from \"./entityStore.js\";\nimport { isArray, extractFragmentContext, getTypenameFromStoreObject, shouldCanonizeResults } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { canonicalStringify, ObjectCanon } from \"./object-canon.js\";\n;\nfunction execSelectionSetKeyArgs(options) {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n options.context.canonizeResults,\n ];\n}\nvar StoreReader = (function () {\n function StoreReader(config) {\n var _this = this;\n this.knownResults = new (canUseWeakMap ? WeakMap : Map)();\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n this.canon = config.canon || new ObjectCanon;\n this.executeSelectionSet = wrap(function (options) {\n var _a;\n var canonizeResults = options.context.canonizeResults;\n var peekArgs = execSelectionSetKeyArgs(options);\n peekArgs[3] = !canonizeResults;\n var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n if (other) {\n if (canonizeResults) {\n return __assign(__assign({}, other), { result: _this.canon.admit(other.result) });\n }\n return other;\n }\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSelectionSetImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n keyArgs: execSelectionSetKeyArgs,\n makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n }\n }\n });\n this.executeSubSelectedArray = wrap(function (options) {\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey: function (_a) {\n var field = _a.field, array = _a.array, context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n }\n });\n }\n StoreReader.prototype.resetCanon = function () {\n this.canon = new ObjectCanon;\n };\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? 'ROOT_QUERY' : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c, _d = _a.canonizeResults, canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var rootRef = makeReference(rootId);\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: __assign({ store: store, query: query, policies: policies, variables: variables, varString: canonicalStringify(variables), canonizeResults: canonizeResults }, extractFragmentContext(query, this.config.fragments)),\n });\n var missing;\n if (execResult.missing) {\n missing = [new MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables)];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n return {\n result: execResult.result,\n complete: !missing,\n missing: missing,\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context, this.canon.isKnown(result));\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, enclosingRef = _a.enclosingRef, context = _a.context;\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\"),\n };\n }\n var variables = context.variables, policies = context.policies, store = context.store;\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n var objectsToMerge = [];\n var missing;\n var missingMerger = new DeepMerger();\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n objectsToMerge.push({ __typename: typename });\n }\n function handleMissing(result, resultName) {\n var _a;\n if (result.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[resultName] = result.missing, _a));\n }\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a, _b;\n if (!shouldInclude(selection, variables))\n return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n var resultName = resultKeyNameFromField(selection);\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat(isReference(objectOrReference)\n ? objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)),\n _a));\n }\n }\n else if (isArray(fieldValue)) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef: enclosingRef,\n context: context,\n }), resultName);\n }\n else if (!selection.selectionSet) {\n if (context.canonizeResults) {\n fieldValue = _this.canon.pass(fieldValue);\n }\n }\n else if (fieldValue != null) {\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context: context,\n }), resultName);\n }\n if (fieldValue !== void 0) {\n objectsToMerge.push((_b = {}, _b[resultName] = fieldValue, _b));\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw __DEV__ ? new InvariantError(\"No fragment named \".concat(selection.name.value)) : new InvariantError(5);\n }\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n var result = mergeDeepArray(objectsToMerge);\n var finalResult = { result: result, missing: missing };\n var frozen = context.canonizeResults\n ? this.canon.admit(finalResult)\n : maybeDeepFreeze(finalResult);\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n return frozen;\n };\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;\n var missing;\n var missingMerger = new DeepMerger();\n function handleMissing(childResult, i) {\n var _a;\n if (childResult.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n }\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n if (item === null) {\n return null;\n }\n if (isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n enclosingRef: enclosingRef,\n context: context,\n }), i);\n }\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context: context,\n }), i);\n }\n if (__DEV__) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n return item;\n });\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing: missing,\n };\n };\n return StoreReader;\n}());\nexport { StoreReader };\nfunction firstMissing(tree) {\n try {\n JSON.stringify(tree, function (_, value) {\n if (typeof value === \"string\")\n throw value;\n return value;\n });\n }\n catch (result) {\n return result;\n }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (isNonNullObject(value)) {\n __DEV__ ? invariant(!isReference(value), \"Missing selection set for object of type \".concat(getTypenameFromStoreObject(store, value), \" returned for query field \").concat(field.name.value)) : invariant(!isReference(value), 6);\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n//# sourceMappingURL=readFromStore.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, isArray } from \"./helpers.js\";\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n var cacheKey = JSON.stringify(spec);\n return specifierInfoCache[cacheKey] ||\n (specifierInfoCache[cacheKey] = Object.create(null));\n}\nexport function keyFieldsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n var extract = function (from, key) { return context.readField(key, from); };\n var keyObject = context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n var extracted = extractKeyPath(context.storeObject, schemaKeyPath, extract);\n if (extracted === void 0 &&\n object !== context.storeObject &&\n hasOwn.call(object, schemaKeyPath[0])) {\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n __DEV__ ? invariant(extracted !== void 0, \"Missing field '\".concat(schemaKeyPath.join('.'), \"' while extracting keyFields from \").concat(JSON.stringify(object))) : invariant(extracted !== void 0, 2);\n return extracted;\n });\n return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n });\n}\nexport function keyArgsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyArgsFn || (info.keyArgsFn = function (args, _a) {\n var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;\n var collected = collectSpecifierPaths(specifier, function (keyPath) {\n var firstKey = keyPath[0];\n var firstChar = firstKey.charAt(0);\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n var directiveName_1 = firstKey.slice(1);\n var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });\n var directiveArgs = d && argumentsObjectFromField(d, variables);\n return directiveArgs && extractKeyPath(directiveArgs, keyPath.slice(1));\n }\n return;\n }\n if (firstChar === \"$\") {\n var variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n var varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n return;\n }\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n var suffix = JSON.stringify(collected);\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n return fieldName;\n });\n}\nexport function collectSpecifierPaths(specifier, extractor) {\n var merger = new DeepMerger;\n return getSpecifierPaths(specifier).reduce(function (collected, path) {\n var _a;\n var toMerge = extractor(path);\n if (toMerge !== void 0) {\n for (var i = path.length - 1; i >= 0; --i) {\n toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\nexport function getSpecifierPaths(spec) {\n var info = lookupSpecifierInfo(spec);\n if (!info.paths) {\n var paths_1 = info.paths = [];\n var currentPath_1 = [];\n spec.forEach(function (s, i) {\n if (isArray(s)) {\n getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });\n currentPath_1.length = 0;\n }\n else {\n currentPath_1.push(s);\n if (!isArray(spec[i + 1])) {\n paths_1.push(currentPath_1.slice(0));\n currentPath_1.length = 0;\n }\n }\n });\n }\n return info.paths;\n}\nfunction extractKey(object, key) {\n return object[key];\n}\nexport function extractKeyPath(object, path, extract) {\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key) {\n return isArray(obj)\n ? obj.map(function (child) { return reducer(child, key); })\n : obj && extract(obj, key);\n }, object));\n}\nfunction normalize(value) {\n if (isNonNullObject(value)) {\n if (isArray(value)) {\n return value.map(normalize);\n }\n return collectSpecifierPaths(Object.keys(value).sort(), function (path) { return extractKeyPath(value, path); });\n }\n return value;\n}\n//# sourceMappingURL=key-extractor.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, isArray, } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nimport { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier } from \"./key-extractor.js\";\ngetStoreKeyName.setStringify(canonicalStringify);\nfunction argsFromFieldSpecifier(spec) {\n return spec.args !== void 0 ? spec.args :\n spec.field ? argumentsObjectFromField(spec.field, spec.variables) : null;\n}\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = (function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n this.supertypeMap = new Map();\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({ dataIdFromObject: defaultDataIdFromObject }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, partialContext) {\n var _a;\n var policies = this;\n var typename = partialContext && (partialContext.typename ||\n ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename)) || object.__typename;\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n var storeObject = partialContext && partialContext.storeObject || object;\n var context = __assign(__assign({}, partialContext), { typename: typename, storeObject: storeObject, readField: partialContext && partialContext.readField || function () {\n var options = normalizeReadFieldOptions(arguments, storeObject);\n return policies.readField(options, {\n store: policies.cache[\"data\"],\n variables: options.variables,\n });\n } });\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = policy && policy.keyFn || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(__assign(__assign({}, object), storeObject), context);\n if (isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n }\n else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n if (queryType)\n _this.setRootTypename(\"Query\", typename);\n if (mutationType)\n _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType)\n _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n }\n else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields, fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge =\n typeof merge === \"function\" ? merge :\n merge === true ? mergeTrueFn :\n merge === false ? mergeFalseFn :\n existing.merge;\n }\n setMerge(existing, incoming.merge);\n existing.keyFn =\n keyFields === false ? nullKeyFieldsFn :\n isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields) :\n typeof keyFields === \"function\" ? keyFields :\n existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n }\n else {\n var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n existing.keyFn =\n keyArgs === false ? simpleKeyArgsFn :\n isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs) :\n typeof keyArgs === \"function\" ? keyArgs :\n existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) { typename = which; }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n __DEV__ ? invariant(!old || old === which, \"Cannot change root \".concat(which, \" __typename more than once\")) : invariant(!old || old === which, 3);\n if (old)\n delete this.rootIdsByTypename[old];\n this.rootIdsByTypename[typename] = rootId;\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = this.typePolicies[typename] = Object.create(null);\n policy_1.fields = Object.create(null);\n var supertypes = this.supertypeMap.get(typename);\n if (supertypes && supertypes.size) {\n supertypes.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n inbox.splice(0).forEach(function (policy) {\n _this.updateTypePolicy(typename, policy);\n });\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return fieldPolicies[fieldName] || (createIfMissing && (fieldPolicies[fieldName] = Object.create(null)));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, supertypeSet = new Set());\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition)\n return true;\n if (!typename)\n return false;\n var supertype = fragment.typeCondition.name.value;\n if (typename === supertype)\n return true;\n if (this.usingPossibleTypes &&\n this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet &&\n supertypeSet.size &&\n workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n __DEV__ && invariant.warn(\"Inferring subtype \".concat(typename, \" of supertype \").concat(supertype));\n }\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n i === workQueue_1.length - 1 &&\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables,\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n }\n else {\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName = fieldSpec.field\n ? storeKeyNameFromField(fieldSpec.field, fieldSpec.variables)\n : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n if (storeFieldName === false) {\n return fieldName;\n }\n return fieldName === fieldNameFromStoreName(storeFieldName)\n ? storeFieldName\n : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference)\n return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField)\n return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename)\n options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference)\n ? objectOrReference.__ref\n : objectOrReference, storeFieldName));\n return cacheSlot.withValue(this.cache, read, [existing, readOptions]);\n }\n return existing;\n };\n Policies.prototype.getReadFunction = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return policy && policy.read;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field, typename = _a.typename, merge = _a.merge;\n if (merge === mergeTrueFn) {\n return makeMergeObjectsFunction(context.store)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n return incoming;\n }\n if (context.overwrite) {\n existing = void 0;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this, void 0, { typename: typename, fieldName: field.name.value, field: field, variables: context.variables }, context, storage || Object.create(null)));\n };\n return Policies;\n}());\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store, toReference = _a.toReference, canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function () {\n return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, variables), context);\n },\n mergeObjects: makeMergeObjectsFunction(context.store),\n };\n}\nexport function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;\n var options;\n if (typeof fieldNameOrOptions === \"string\") {\n options = {\n fieldName: fieldNameOrOptions,\n from: argc > 1 ? from : objectOrReference,\n };\n }\n else {\n options = __assign({}, fieldNameOrOptions);\n if (!hasOwn.call(options, \"from\")) {\n options.from = objectOrReference;\n }\n }\n if (__DEV__ && options.from === void 0) {\n __DEV__ && invariant.warn(\"Undefined 'from' passed to readField with arguments \".concat(stringifyForDisplay(Array.from(readFieldArgs))));\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return options;\n}\nfunction makeMergeObjectsFunction(store) {\n return function mergeObjects(existing, incoming) {\n if (isArray(existing) || isArray(incoming)) {\n throw __DEV__ ? new InvariantError(\"Cannot automatically merge arrays\") : new InvariantError(4);\n }\n if (isNonNullObject(existing) &&\n isNonNullObject(incoming)) {\n var eType = store.getFieldValue(existing, \"__typename\");\n var iType = store.getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer) {\n return incoming;\n }\n if (isReference(existing) &&\n storeValueIsStoreObject(incoming)) {\n store.merge(existing.__ref, incoming);\n return existing;\n }\n if (storeValueIsStoreObject(existing) &&\n isReference(incoming)) {\n store.merge(existing, incoming.__ref);\n return incoming;\n }\n if (storeValueIsStoreObject(existing) &&\n storeValueIsStoreObject(incoming)) {\n return __assign(__assign({}, existing), incoming);\n }\n }\n return incoming;\n };\n}\n//# sourceMappingURL=policies.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { Trie } from '@wry/trie';\nimport { Kind, } from 'graphql';\nimport { getFragmentFromSelection, getDefaultValues, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, } from \"../../utilities/index.js\";\nimport { isArray, makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject, extractFragmentContext } from \"./helpers.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nimport { normalizeReadFieldOptions } from \"./policies.js\";\n;\nfunction getContextFlavor(context, clientOnly, deferred) {\n var key = \"\".concat(clientOnly).concat(deferred);\n var flavored = context.flavors.get(key);\n if (!flavored) {\n context.flavors.set(key, flavored = (context.clientOnly === clientOnly &&\n context.deferred === deferred) ? context : __assign(__assign({}, context), { clientOnly: clientOnly, deferred: deferred }));\n }\n return flavored;\n}\nvar StoreWriter = (function () {\n function StoreWriter(cache, reader, fragments) {\n this.cache = cache;\n this.reader = reader;\n this.fragments = fragments;\n }\n StoreWriter.prototype.writeToStore = function (store, _a) {\n var _this = this;\n var query = _a.query, result = _a.result, dataId = _a.dataId, variables = _a.variables, overwrite = _a.overwrite;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var context = __assign(__assign({ store: store, written: Object.create(null), merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n }, variables: variables, varString: canonicalStringify(variables) }, extractFragmentContext(query, this.fragments)), { overwrite: !!overwrite, incomingById: new Map, clientOnly: false, deferred: false, flavors: new Map });\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: { map: new Map },\n context: context,\n });\n if (!isReference(ref)) {\n throw __DEV__ ? new InvariantError(\"Could not identify object \".concat(JSON.stringify(result))) : new InvariantError(7);\n }\n context.incomingById.forEach(function (_a, dataId) {\n var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;\n var entityRef = makeReference(dataId);\n if (mergeTree && mergeTree.map.size) {\n var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n if (isReference(applied)) {\n return;\n }\n storeObject = applied;\n }\n if (__DEV__ && !context.overwrite) {\n var fieldsWithSelectionSets_1 = Object.create(null);\n fieldNodeSet.forEach(function (field) {\n if (field.selectionSet) {\n fieldsWithSelectionSets_1[field.name.value] = true;\n }\n });\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] === true;\n };\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n if (hasSelectionSet_1(storeFieldName) &&\n !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n }\n });\n }\n store.merge(dataId, storeObject);\n });\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n var incoming = Object.create(null);\n var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n getTypenameFromResult(result, selectionSet, context.fragmentMap) ||\n (dataId && context.store.get(dataId, \"__typename\"));\n if (\"string\" === typeof typename) {\n incoming.__typename = typename;\n }\n var readField = function () {\n var options = normalizeReadFieldOptions(arguments, incoming, context.variables);\n if (isReference(options.from)) {\n var info = context.incomingById.get(options.from.__ref);\n if (info) {\n var result_1 = policies.readField(__assign(__assign({}, options), { from: info.storeObject }), context);\n if (result_1 !== void 0) {\n return result_1;\n }\n }\n }\n return policies.readField(options, context);\n };\n var fieldNodeSet = new Set();\n this.flattenFields(selectionSet, result, context, typename).forEach(function (context, field) {\n var _a;\n var resultFieldKey = resultKeyNameFromField(field);\n var value = result[resultFieldKey];\n fieldNodeSet.add(field);\n if (value !== void 0) {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, field, field.selectionSet\n ? getContextFlavor(context, false, false)\n : context, childTree);\n var childTypename = void 0;\n if (field.selectionSet &&\n (isReference(incomingValue) ||\n storeValueIsStoreObject(incomingValue))) {\n childTypename = readField(\"__typename\", incomingValue);\n }\n var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n if (merge) {\n childTree.info = {\n field: field,\n typename: typename,\n merge: merge,\n };\n }\n else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incoming = context.merge(incoming, (_a = {},\n _a[storeFieldName] = incomingValue,\n _a));\n }\n else if (__DEV__ &&\n !context.clientOnly &&\n !context.deferred &&\n !addTypenameToDocument.added(field) &&\n !policies.getReadFunction(typename, field.name.value)) {\n __DEV__ && invariant.error(\"Missing field '\".concat(resultKeyNameFromField(field), \"' while writing result \").concat(JSON.stringify(result, null, 2)).substring(0, 1000));\n }\n });\n try {\n var _b = policies.identify(result, {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: context.fragmentMap,\n storeObject: incoming,\n readField: readField,\n }), id = _b[0], keyObject = _b[1];\n dataId = dataId || id;\n if (keyObject) {\n incoming = context.merge(incoming, keyObject);\n }\n }\n catch (e) {\n if (!dataId)\n throw e;\n }\n if (\"string\" === typeof dataId) {\n var dataRef = makeReference(dataId);\n var sets = context.written[dataId] || (context.written[dataId] = []);\n if (sets.indexOf(selectionSet) >= 0)\n return dataRef;\n sets.push(selectionSet);\n if (this.reader && this.reader.isFresh(result, dataRef, selectionSet, context)) {\n return dataRef;\n }\n var previous_1 = context.incomingById.get(dataId);\n if (previous_1) {\n previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });\n }\n else {\n context.incomingById.set(dataId, {\n storeObject: incoming,\n mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n fieldNodeSet: fieldNodeSet,\n });\n }\n return dataRef;\n }\n return incoming;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n return __DEV__ ? cloneDeep(value) : value;\n }\n if (isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree,\n });\n };\n StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n if (typename === void 0) { typename = getTypenameFromResult(result, selectionSet, context.fragmentMap); }\n var fieldMap = new Map();\n var policies = this.cache.policies;\n var limitingTrie = new Trie(false);\n (function flatten(selectionSet, inheritedContext) {\n var visitedNode = limitingTrie.lookup(selectionSet, inheritedContext.clientOnly, inheritedContext.deferred);\n if (visitedNode.visited)\n return;\n visitedNode.visited = true;\n selectionSet.selections.forEach(function (selection) {\n if (!shouldInclude(selection, context.variables))\n return;\n var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;\n if (!(clientOnly && deferred) &&\n isNonEmptyArray(selection.directives)) {\n selection.directives.forEach(function (dir) {\n var name = dir.name.value;\n if (name === \"client\")\n clientOnly = true;\n if (name === \"defer\") {\n var args = argumentsObjectFromField(dir, context.variables);\n if (!args || args.if !== false) {\n deferred = true;\n }\n }\n });\n }\n if (isField(selection)) {\n var existing = fieldMap.get(selection);\n if (existing) {\n clientOnly = clientOnly && existing.clientOnly;\n deferred = deferred && existing.deferred;\n }\n fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw __DEV__ ? new InvariantError(\"No fragment named \".concat(selection.name.value)) : new InvariantError(8);\n }\n if (fragment &&\n policies.fragmentMatches(fragment, typename, result, context.variables)) {\n flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n }\n }\n });\n })(selectionSet, context);\n return fieldMap;\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 = (!isArray(incoming) &&\n (isReference(existing) || storeValueIsStoreObject(existing))) ? existing : void 0;\n var i_1 = incoming;\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return isArray(from)\n ? (typeof name === \"number\" ? from[name] : void 0)\n : context.store.getFieldValue(from, String(name));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n if (void 0 === iVal)\n return;\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map;\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n incoming = (isArray(i_1) ? i_1.slice(0) : __assign({}, i_1));\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}());\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || { map: new Map });\n }\n return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n if (left === right || !right || mergeTreeIsEmpty(right))\n return left;\n if (!left || mergeTreeIsEmpty(left))\n return right;\n var info = left.info && right.info ? __assign(__assign({}, left.info), right.info) : left.info || right.info;\n var needToMergeMaps = left.map.size && right.map.size;\n var map = needToMergeMaps ? new Map :\n left.map.size ? left.map : right.map;\n var merged = { info: info, map: map };\n if (needToMergeMaps) {\n var remainingRightKeys_1 = new Set(right.map.keys());\n left.map.forEach(function (leftTree, key) {\n merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n remainingRightKeys_1.delete(key);\n });\n remainingRightKeys_1.forEach(function (key) {\n merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n });\n }\n return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree && mergeTreeIsEmpty(childTree)) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing)\n return;\n var incoming = getChild(incomingObj);\n if (!incoming)\n return;\n if (isReference(existing))\n return;\n if (equal(existing, incoming))\n return;\n if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n if (warnings.has(typeDotName))\n return;\n warnings.add(typeDotName);\n var childTypenames = [];\n if (!isArray(existing) &&\n !isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" &&\n !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n __DEV__ && invariant.warn(\"Cache data may be lost when replacing the \".concat(fieldName, \" field of a \").concat(parentType, \" object.\\n\\nTo address this problem (which is not a bug in Apollo Client), \").concat(childTypenames.length\n ? \"either ensure all objects of type \" +\n childTypenames.join(\" and \") + \" have an ID or a custom merge function, or \"\n : \"\", \"define a custom merge function for the \").concat(typeDotName, \" field, so InMemoryCache can safely merge these objects:\\n\\n existing: \").concat(JSON.stringify(existing).slice(0, 1000), \"\\n incoming: \").concat(JSON.stringify(incoming).slice(0, 1000), \"\\n\\nFor more information about these options, please refer to the documentation:\\n\\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\\n\"));\n}\n//# sourceMappingURL=writeToStore.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport \"./fixPolyfills.js\";\nimport { wrap } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { Policies } from \"./policies.js\";\nimport { hasOwn, normalizeConfig, shouldCanonizeResults } from \"./helpers.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nvar InMemoryCache = (function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) { config = {}; }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.typenameDocumentCache = new Map();\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.config = normalizeConfig(config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies,\n });\n _this.init();\n return _this;\n }\n InMemoryCache.prototype.init = function () {\n var rootStore = this.data = new EntityStore.Root({\n policies: this.policies,\n resultCaching: this.config.resultCaching,\n });\n this.optimisticData = rootStore.stump;\n this.resetResultCache();\n };\n InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n var _this = this;\n var previousReader = this.storeReader;\n var fragments = this.config.fragments;\n this.storeWriter = new StoreWriter(this, this.storeReader = new StoreReader({\n cache: this,\n addTypename: this.addTypename,\n resultCacheMaxSize: this.config.resultCacheMaxSize,\n canonizeResults: shouldCanonizeResults(this.config),\n canon: resetResultIdentities\n ? void 0\n : previousReader && previousReader.canon,\n fragments: fragments,\n }), fragments);\n this.maybeBroadcastWatch = wrap(function (c, options) {\n return _this.broadcastWatch(c, options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey: function (c) {\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic, id = c.id, variables = c.variables;\n return store.makeCacheKey(c.query, c.callback, canonicalStringify({ optimistic: optimistic, id: id, variables: variables }));\n }\n }\n });\n new Set([\n this.data.group,\n this.optimisticData.group,\n ]).forEach(function (group) { return group.resetCaching(); });\n };\n InMemoryCache.prototype.restore = function (data) {\n this.init();\n if (data)\n this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var _a = options.returnPartialData, returnPartialData = _a === void 0 ? false : _a;\n try {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, config: this.config, returnPartialData: returnPartialData })).result || null;\n }\n catch (e) {\n if (e instanceof MissingFieldError) {\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore(this.data, options);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n return false;\n }\n var store = options.optimistic\n ? this.optimisticData\n : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || \"ROOT_QUERY\", config: this.config }));\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function (options) {\n canonicalStringify.reset();\n var ids = this.optimisticData.gc();\n if (options && !this.txCount) {\n if (options.resetResultCache) {\n this.resetResultCache(options.resetResultIdentities);\n }\n else if (options.resetResultIdentities) {\n this.storeReader.resetCanon();\n }\n }\n return ids;\n };\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n InMemoryCache.prototype.identify = function (object) {\n if (isReference(object))\n return object.__ref;\n try {\n return this.policies.identify(object)[0];\n }\n catch (e) {\n __DEV__ && invariant.warn(e);\n }\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n return false;\n }\n options = __assign(__assign({}, options), { id: \"ROOT_QUERY\" });\n }\n try {\n ++this.txCount;\n return this.optimisticData.evict(options, this.data);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function (options) {\n var _this = this;\n this.init();\n canonicalStringify.reset();\n if (options && options.discardWatches) {\n this.watches.forEach(function (watch) { return _this.maybeBroadcastWatch.forget(watch); });\n this.watches.clear();\n forgetCache(this);\n }\n else {\n this.broadcastWatches();\n }\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.batch = function (options) {\n var _this = this;\n var update = options.update, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, removeOptimistic = options.removeOptimistic, onWatchUpdated = options.onWatchUpdated;\n var updateResult;\n var perform = function (layer) {\n var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n return updateResult = update(_this);\n }\n finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var alreadyDirty = new Set();\n if (onWatchUpdated && !this.txCount) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch) {\n alreadyDirty.add(watch);\n return false;\n } }));\n }\n if (typeof optimistic === 'string') {\n this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n }\n else if (optimistic === false) {\n perform(this.data);\n }\n else {\n perform();\n }\n if (typeof removeOptimistic === \"string\") {\n this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n }\n if (onWatchUpdated && alreadyDirty.size) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch, diff) {\n var result = onWatchUpdated.call(this, watch, diff);\n if (result !== false) {\n alreadyDirty.delete(watch);\n }\n return result;\n } }));\n if (alreadyDirty.size) {\n alreadyDirty.forEach(function (watch) { return _this.maybeBroadcastWatch.dirty(watch); });\n }\n }\n else {\n this.broadcastWatches(options);\n }\n return updateResult;\n };\n InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n return this.batch({\n update: update,\n optimistic: optimisticId || (optimisticId !== null),\n });\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n if (this.addTypename) {\n var result = this.typenameDocumentCache.get(document);\n if (!result) {\n result = addTypenameToDocument(document);\n this.typenameDocumentCache.set(document, result);\n this.typenameDocumentCache.set(result, result);\n }\n return result;\n }\n return document;\n };\n InMemoryCache.prototype.transformForLink = function (document) {\n var fragments = this.config.fragments;\n return fragments\n ? fragments.transform(document)\n : document;\n };\n InMemoryCache.prototype.broadcastWatches = function (options) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, options); });\n }\n };\n InMemoryCache.prototype.broadcastWatch = function (c, options) {\n var lastDiff = c.lastDiff;\n var diff = this.diff(c);\n if (options) {\n if (c.optimistic &&\n typeof options.optimistic === \"string\") {\n diff.fromOptimisticTransaction = true;\n }\n if (options.onWatchUpdated &&\n options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n return;\n }\n }\n if (!lastDiff || !equal(lastDiff.result, diff.result)) {\n c.callback(c.lastDiff = diff, lastDiff);\n }\n };\n return InMemoryCache;\n}(ApolloCache));\nexport { InMemoryCache };\n//# sourceMappingURL=inMemoryCache.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var empty = ApolloLink.empty;\n//# sourceMappingURL=empty.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var from = ApolloLink.from;\n//# sourceMappingURL=from.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var split = ApolloLink.split;\n//# sourceMappingURL=split.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var concat = ApolloLink.concat;\n//# sourceMappingURL=concat.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nexport function toPromise(observable) {\n var completed = false;\n return new Promise(function (resolve, reject) {\n observable.subscribe({\n next: function (data) {\n if (completed) {\n __DEV__ && invariant.warn(\"Promise Wrapper does not support multiple results from Observable\");\n }\n else {\n completed = true;\n resolve(data);\n }\n },\n error: reject,\n });\n });\n}\n//# sourceMappingURL=toPromise.js.map","import { Observable } from \"../../utilities/index.js\";\nexport function fromPromise(promise) {\n return new Observable(function (observer) {\n promise\n .then(function (value) {\n observer.next(value);\n observer.complete();\n })\n .catch(observer.error.bind(observer));\n });\n}\n//# sourceMappingURL=fromPromise.js.map","export function invariant(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(\n message != null ? message : 'Unexpected invariant triggered.',\n );\n }\n}\n","import { invariant } from '../jsutils/invariant.mjs';\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n let lastLineStart = 0;\n let line = 1;\n\n for (const match of source.body.matchAll(LineRegExp)) {\n typeof match.index === 'number' || invariant(false);\n\n if (match.index >= position) {\n break;\n }\n\n lastLineStart = match.index + match[0].length;\n line += 1;\n }\n\n return {\n line,\n column: position + 1 - lastLineStart,\n };\n}\n","import { getLocation } from './location.mjs';\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nexport function printLocation(location) {\n return printSourceLocation(\n location.source,\n getLocation(location.source, location.start),\n );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n const firstLineColumnOffset = source.locationOffset.column - 1;\n const body = ''.padStart(firstLineColumnOffset) + source.body;\n const lineIndex = sourceLocation.line - 1;\n const lineOffset = source.locationOffset.line - 1;\n const lineNum = sourceLocation.line + lineOffset;\n const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n const columnNum = sourceLocation.column + columnOffset;\n const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n const lines = body.split(/\\r\\n|[\\n\\r]/g);\n const locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n const subLineIndex = Math.floor(columnNum / 80);\n const subLineColumnNum = columnNum % 80;\n const subLines = [];\n\n for (let i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return (\n locationStr +\n printPrefixedLines([\n [`${lineNum} |`, subLines[0]],\n ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n ['|', '^'.padStart(subLineColumnNum)],\n ['|', subLines[subLineIndex + 1]],\n ])\n );\n }\n\n return (\n locationStr +\n printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [`${lineNum - 1} |`, lines[lineIndex - 1]],\n [`${lineNum} |`, locationLine],\n ['|', '^'.padStart(columnNum)],\n [`${lineNum + 1} |`, lines[lineIndex + 1]],\n ])\n );\n}\n\nfunction printPrefixedLines(lines) {\n const existingLines = lines.filter(([_, line]) => line !== undefined);\n const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n return existingLines\n .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n .join('\\n');\n}\n","import { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { getLocation } from '../language/location.mjs';\nimport {\n printLocation,\n printSourceLocation,\n} from '../language/printLocation.mjs';\n\nfunction toNormalizedOptions(args) {\n const firstArg = args[0];\n\n if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n return {\n nodes: firstArg,\n source: args[1],\n positions: args[2],\n path: args[3],\n originalError: args[4],\n extensions: args[5],\n };\n }\n\n return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport class GraphQLError extends Error {\n /**\n * An array of `{ line, column }` locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n\n /**\n * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n */\n constructor(message, ...rawArgs) {\n var _this$nodes, _nodeLocations$, _ref;\n\n const { nodes, source, positions, path, originalError, extensions } =\n toNormalizedOptions(rawArgs);\n super(message);\n this.name = 'GraphQLError';\n this.path = path !== null && path !== void 0 ? path : undefined;\n this.originalError =\n originalError !== null && originalError !== void 0\n ? originalError\n : undefined; // Compute list of blame nodes.\n\n this.nodes = undefinedIfEmpty(\n Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n );\n const nodeLocations = undefinedIfEmpty(\n (_this$nodes = this.nodes) === null || _this$nodes === void 0\n ? void 0\n : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n ); // Compute locations in the source for the given nodes/positions.\n\n this.source =\n source !== null && source !== void 0\n ? source\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : (_nodeLocations$ = nodeLocations[0]) === null ||\n _nodeLocations$ === void 0\n ? void 0\n : _nodeLocations$.source;\n this.positions =\n positions !== null && positions !== void 0\n ? positions\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => loc.start);\n this.locations =\n positions && source\n ? positions.map((pos) => getLocation(source, pos))\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => getLocation(loc.source, loc.start));\n const originalExtensions = isObjectLike(\n originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions,\n )\n ? originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions\n : undefined;\n this.extensions =\n (_ref =\n extensions !== null && extensions !== void 0\n ? extensions\n : originalExtensions) !== null && _ref !== void 0\n ? _ref\n : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n // Keep the rest as non-enumerable.\n\n Object.defineProperties(this, {\n message: {\n writable: true,\n enumerable: true,\n },\n name: {\n enumerable: false,\n },\n nodes: {\n enumerable: false,\n },\n source: {\n enumerable: false,\n },\n positions: {\n enumerable: false,\n },\n originalError: {\n enumerable: false,\n },\n }); // Include (non-enumerable) stack trace.\n\n /* c8 ignore start */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n if (\n originalError !== null &&\n originalError !== void 0 &&\n originalError.stack\n ) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true,\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true,\n });\n }\n /* c8 ignore stop */\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLError';\n }\n\n toString() {\n let output = this.message;\n\n if (this.nodes) {\n for (const node of this.nodes) {\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (this.source && this.locations) {\n for (const location of this.locations) {\n output += '\\n\\n' + printSourceLocation(this.source, location);\n }\n }\n\n return output;\n }\n\n toJSON() {\n const formattedError = {\n message: this.message,\n };\n\n if (this.locations != null) {\n formattedError.locations = this.locations;\n }\n\n if (this.path != null) {\n formattedError.path = this.path;\n }\n\n if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n formattedError.extensions = this.extensions;\n }\n\n return formattedError;\n }\n}\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nexport function printError(error) {\n return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nexport function formatError(error) {\n return error.toJSON();\n}\n","/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport function isObjectLike(value) {\n return typeof value == 'object' && value !== null;\n}\n","import { GraphQLError } from './GraphQLError.mjs';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(`Syntax Error: ${description}`, {\n source,\n positions: [position],\n });\n}\n","/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation;\n\n(function (DirectiveLocation) {\n DirectiveLocation['QUERY'] = 'QUERY';\n DirectiveLocation['MUTATION'] = 'MUTATION';\n DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n DirectiveLocation['FIELD'] = 'FIELD';\n DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n DirectiveLocation['SCHEMA'] = 'SCHEMA';\n DirectiveLocation['SCALAR'] = 'SCALAR';\n DirectiveLocation['OBJECT'] = 'OBJECT';\n DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n DirectiveLocation['INTERFACE'] = 'INTERFACE';\n DirectiveLocation['UNION'] = 'UNION';\n DirectiveLocation['ENUM'] = 'ENUM';\n DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (DirectiveLocation = {}));\n\nexport { DirectiveLocation };\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind;\n\n(function (TokenKind) {\n TokenKind['SOF'] = '<SOF>';\n TokenKind['EOF'] = '<EOF>';\n TokenKind['BANG'] = '!';\n TokenKind['DOLLAR'] = '$';\n TokenKind['AMP'] = '&';\n TokenKind['PAREN_L'] = '(';\n TokenKind['PAREN_R'] = ')';\n TokenKind['SPREAD'] = '...';\n TokenKind['COLON'] = ':';\n TokenKind['EQUALS'] = '=';\n TokenKind['AT'] = '@';\n TokenKind['BRACKET_L'] = '[';\n TokenKind['BRACKET_R'] = ']';\n TokenKind['BRACE_L'] = '{';\n TokenKind['PIPE'] = '|';\n TokenKind['BRACE_R'] = '}';\n TokenKind['NAME'] = 'Name';\n TokenKind['INT'] = 'Int';\n TokenKind['FLOAT'] = 'Float';\n TokenKind['STRING'] = 'String';\n TokenKind['BLOCK_STRING'] = 'BlockString';\n TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (TokenKind = {}));\n\nexport { TokenKind };\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Token } from './ast.mjs';\nimport { dedentBlockStringLines } from './blockString.mjs';\nimport { isDigit, isNameContinue, isNameStart } from './characterClasses.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport class Lexer {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n constructor(source) {\n const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n\n get [Symbol.toStringTag]() {\n return 'Lexer';\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n advance() {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n\n lookahead() {\n let token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n if (token.next) {\n token = token.next;\n } else {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n nextToken.prev = token;\n token = nextToken;\n }\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n }\n}\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return (\n kind === TokenKind.BANG ||\n kind === TokenKind.DOLLAR ||\n kind === TokenKind.AMP ||\n kind === TokenKind.PAREN_L ||\n kind === TokenKind.PAREN_R ||\n kind === TokenKind.SPREAD ||\n kind === TokenKind.COLON ||\n kind === TokenKind.EQUALS ||\n kind === TokenKind.AT ||\n kind === TokenKind.BRACKET_L ||\n kind === TokenKind.BRACKET_R ||\n kind === TokenKind.BRACE_L ||\n kind === TokenKind.PIPE ||\n kind === TokenKind.BRACE_R\n );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n * - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n return (\n (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n return (\n isLeadingSurrogate(body.charCodeAt(location)) &&\n isTrailingSurrogate(body.charCodeAt(location + 1))\n );\n}\n\nfunction isLeadingSurrogate(code) {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n const code = lexer.source.body.codePointAt(location);\n\n if (code === undefined) {\n return TokenKind.EOF;\n } else if (code >= 0x0020 && code <= 0x007e) {\n // Printable ASCII\n const char = String.fromCodePoint(code);\n return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n } // Unicode code point\n\n return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n const line = lexer.line;\n const col = 1 + start - lexer.lineStart;\n return new Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // SourceCharacter\n\n switch (code) {\n // Ignored ::\n // - UnicodeBOM\n // - WhiteSpace\n // - LineTerminator\n // - Comment\n // - Comma\n //\n // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n //\n // WhiteSpace ::\n // - \"Horizontal Tab (U+0009)\"\n // - \"Space (U+0020)\"\n //\n // Comma :: ,\n case 0xfeff: // <BOM>\n\n case 0x0009: // \\t\n\n case 0x0020: // <space>\n\n case 0x002c:\n // ,\n ++position;\n continue;\n // LineTerminator ::\n // - \"New Line (U+000A)\"\n // - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n // - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n case 0x000a:\n // \\n\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n\n case 0x000d:\n // \\r\n if (body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n // Comment\n\n case 0x0023:\n // #\n return readComment(lexer, position);\n // Token ::\n // - Punctuator\n // - Name\n // - IntValue\n // - FloatValue\n // - StringValue\n //\n // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n case 0x0021:\n // !\n return createToken(lexer, TokenKind.BANG, position, position + 1);\n\n case 0x0024:\n // $\n return createToken(lexer, TokenKind.DOLLAR, position, position + 1);\n\n case 0x0026:\n // &\n return createToken(lexer, TokenKind.AMP, position, position + 1);\n\n case 0x0028:\n // (\n return createToken(lexer, TokenKind.PAREN_L, position, position + 1);\n\n case 0x0029:\n // )\n return createToken(lexer, TokenKind.PAREN_R, position, position + 1);\n\n case 0x002e:\n // .\n if (\n body.charCodeAt(position + 1) === 0x002e &&\n body.charCodeAt(position + 2) === 0x002e\n ) {\n return createToken(lexer, TokenKind.SPREAD, position, position + 3);\n }\n\n break;\n\n case 0x003a:\n // :\n return createToken(lexer, TokenKind.COLON, position, position + 1);\n\n case 0x003d:\n // =\n return createToken(lexer, TokenKind.EQUALS, position, position + 1);\n\n case 0x0040:\n // @\n return createToken(lexer, TokenKind.AT, position, position + 1);\n\n case 0x005b:\n // [\n return createToken(lexer, TokenKind.BRACKET_L, position, position + 1);\n\n case 0x005d:\n // ]\n return createToken(lexer, TokenKind.BRACKET_R, position, position + 1);\n\n case 0x007b:\n // {\n return createToken(lexer, TokenKind.BRACE_L, position, position + 1);\n\n case 0x007c:\n // |\n return createToken(lexer, TokenKind.PIPE, position, position + 1);\n\n case 0x007d:\n // }\n return createToken(lexer, TokenKind.BRACE_R, position, position + 1);\n // StringValue\n\n case 0x0022:\n // \"\n if (\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n return readBlockString(lexer, position);\n }\n\n return readString(lexer, position);\n } // IntValue | FloatValue (Digit | -)\n\n if (isDigit(code) || code === 0x002d) {\n return readNumber(lexer, position, code);\n } // Name\n\n if (isNameStart(code)) {\n return readName(lexer, position);\n }\n\n throw syntaxError(\n lexer.source,\n position,\n code === 0x0027\n ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.COMMENT,\n start,\n position,\n body.slice(start + 1, position),\n );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n const body = lexer.source.body;\n let position = start;\n let code = firstCode;\n let isFloat = false; // NegativeSign (-)\n\n if (code === 0x002d) {\n code = body.charCodeAt(++position);\n } // Zero (0)\n\n if (code === 0x0030) {\n code = body.charCodeAt(++position);\n\n if (isDigit(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, unexpected digit after 0: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n } else {\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Full stop (.)\n\n if (code === 0x002e) {\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // E e\n\n if (code === 0x0045 || code === 0x0065) {\n isFloat = true;\n code = body.charCodeAt(++position); // + -\n\n if (code === 0x002b || code === 0x002d) {\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 0x002e || isNameStart(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n\n return createToken(\n lexer,\n isFloat ? TokenKind.FLOAT : TokenKind.INT,\n start,\n position,\n body.slice(start, position),\n );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n if (!isDigit(firstCode)) {\n throw syntaxError(\n lexer.source,\n start,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n start,\n )}.`,\n );\n }\n\n const body = lexer.source.body;\n let position = start + 1; // +1 to skip first firstCode\n\n while (isDigit(body.charCodeAt(position))) {\n ++position;\n }\n\n return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"` [lookahead != `\"`]\n * - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n * - SourceCharacter but not `\"` or `\\` or LineTerminator\n * - `\\u` EscapedUnicode\n * - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n * - `{` HexDigit+ `}`\n * - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n let chunkStart = position;\n let value = '';\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Quote (\")\n\n if (code === 0x0022) {\n value += body.slice(chunkStart, position);\n return createToken(lexer, TokenKind.STRING, start, position + 1, value);\n } // Escape Sequence (\\)\n\n if (code === 0x005c) {\n value += body.slice(chunkStart, position);\n const escape =\n body.charCodeAt(position + 1) === 0x0075 // u\n ? body.charCodeAt(position + 2) === 0x007b // {\n ? readEscapedUnicodeVariableWidth(lexer, position)\n : readEscapedUnicodeFixedWidth(lexer, position)\n : readEscapedCharacter(lexer, position);\n value += escape.value;\n position += escape.size;\n chunkStart = position;\n continue;\n } // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n const body = lexer.source.body;\n let point = 0;\n let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n while (size < 12) {\n const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n if (code === 0x007d) {\n // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n if (size < 5 || !isUnicodeScalarValue(point)) {\n break;\n }\n\n return {\n value: String.fromCodePoint(point),\n size,\n };\n } // Append this hex digit to the code point.\n\n point = (point << 4) | readHexDigit(code);\n\n if (point < 0) {\n break;\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(\n position,\n position + size,\n )}\".`,\n );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n const body = lexer.source.body;\n const code = read16BitHexCode(body, position + 2);\n\n if (isUnicodeScalarValue(code)) {\n return {\n value: String.fromCodePoint(code),\n size: 6,\n };\n } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n // a valid pair is formed.\n\n if (isLeadingSurrogate(code)) {\n // \\u\n if (\n body.charCodeAt(position + 6) === 0x005c &&\n body.charCodeAt(position + 7) === 0x0075\n ) {\n const trailingCode = read16BitHexCode(body, position + 8);\n\n if (isTrailingSurrogate(trailingCode)) {\n // JavaScript defines strings as a sequence of UTF-16 code units and\n // encodes Unicode code points above U+FFFF using a surrogate pair of\n // code units. Since this is a surrogate pair escape sequence, just\n // include both codes into the JavaScript string value. Had JavaScript\n // not been internally based on UTF-16, then this surrogate pair would\n // be decoded to retrieve the supplementary code point.\n return {\n value: String.fromCodePoint(code, trailingCode),\n size: 12,\n };\n }\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n // readHexDigit() returns -1 on error. ORing a negative value with any other\n // value always produces a negative value.\n return (\n (readHexDigit(body.charCodeAt(position)) << 12) |\n (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n readHexDigit(body.charCodeAt(position + 3))\n );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * - `A` `B` `C` `D` `E` `F`\n * - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n return code >= 0x0030 && code <= 0x0039 // 0-9\n ? code - 0x0030\n : code >= 0x0041 && code <= 0x0046 // A-F\n ? code - 0x0037\n : code >= 0x0061 && code <= 0x0066 // a-f\n ? code - 0x0057\n : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"` | U+0022 | double quote |\n * | `\\` | U+005C | reverse solidus (back slash) |\n * | `/` | U+002F | solidus (forward slash) |\n * | `b` | U+0008 | backspace |\n * | `f` | U+000C | form feed |\n * | `n` | U+000A | line feed (new line) |\n * | `r` | U+000D | carriage return |\n * | `t` | U+0009 | horizontal tab |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n const body = lexer.source.body;\n const code = body.charCodeAt(position + 1);\n\n switch (code) {\n case 0x0022:\n // \"\n return {\n value: '\\u0022',\n size: 2,\n };\n\n case 0x005c:\n // \\\n return {\n value: '\\u005c',\n size: 2,\n };\n\n case 0x002f:\n // /\n return {\n value: '\\u002f',\n size: 2,\n };\n\n case 0x0062:\n // b\n return {\n value: '\\u0008',\n size: 2,\n };\n\n case 0x0066:\n // f\n return {\n value: '\\u000c',\n size: 2,\n };\n\n case 0x006e:\n // n\n return {\n value: '\\u000a',\n size: 2,\n };\n\n case 0x0072:\n // r\n return {\n value: '\\u000d',\n size: 2,\n };\n\n case 0x0074:\n // t\n return {\n value: '\\u0009',\n size: 2,\n };\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character escape sequence: \"${body.slice(\n position,\n position + 2,\n )}\".`,\n );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n * - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n * - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let lineStart = lexer.lineStart;\n let position = start + 3;\n let chunkStart = position;\n let currentLine = '';\n const blockLines = [];\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n if (\n code === 0x0022 &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n const token = createToken(\n lexer,\n TokenKind.BLOCK_STRING,\n start,\n position + 3, // Return a string of the lines joined with U+000A.\n dedentBlockStringLines(blockLines).join('\\n'),\n );\n lexer.line += blockLines.length - 1;\n lexer.lineStart = lineStart;\n return token;\n } // Escaped Triple-Quote (\\\"\"\")\n\n if (\n code === 0x005c &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022 &&\n body.charCodeAt(position + 3) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n chunkStart = position + 1; // skip only slash\n\n position += 4;\n continue;\n } // LineTerminator\n\n if (code === 0x000a || code === 0x000d) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n\n if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n currentLine = '';\n chunkStart = position;\n lineStart = position;\n continue;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n * - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n if (isNameContinue(code)) {\n ++position;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.NAME,\n start,\n position,\n body.slice(start, position),\n );\n}\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Location, OperationTypeNode } from './ast.mjs';\nimport { DirectiveLocation } from './directiveLocation.mjs';\nimport { Kind } from './kinds.mjs';\nimport { isPunctuatorTokenKind, Lexer } from './lexer.mjs';\nimport { isSource, Source } from './source.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n const parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nexport function parseConstValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport class Parser {\n constructor(source, options = {}) {\n const sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n this._tokenCounter = 0;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n parseName() {\n const token = this.expectToken(TokenKind.NAME);\n return this.node(token, {\n kind: Kind.NAME,\n value: token.value,\n });\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n\n parseDocument() {\n return this.node(this._lexer.token, {\n kind: Kind.DOCUMENT,\n definitions: this.many(\n TokenKind.SOF,\n this.parseDefinition,\n TokenKind.EOF,\n ),\n });\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\n parseDefinition() {\n if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } // Many definitions begin with a description and require a lookahead.\n\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n if (hasDescription) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are supported only on type definitions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n parseOperationDefinition() {\n const start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n const operation = this.parseOperationType();\n let name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * OperationType : one of query mutation subscription\n */\n\n parseOperationType() {\n const operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return OperationTypeNode.QUERY;\n\n case 'mutation':\n return OperationTypeNode.MUTATION;\n\n case 'subscription':\n return OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n parseVariableDefinitions() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseVariableDefinition,\n TokenKind.PAREN_R,\n );\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n parseVariableDefinition() {\n return this.node(this._lexer.token, {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n /**\n * Variable : $ Name\n */\n\n parseVariable() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return this.node(start, {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n\n parseSelectionSet() {\n return this.node(this._lexer.token, {\n kind: Kind.SELECTION_SET,\n selections: this.many(\n TokenKind.BRACE_L,\n this.parseSelection,\n TokenKind.BRACE_R,\n ),\n });\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n parseSelection() {\n return this.peek(TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n parseField() {\n const start = this._lexer.token;\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node(start, {\n kind: Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n parseArguments(isConst) {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n\n parseArgument(isConst = false) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument() {\n return this.parseArgument(true);\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n parseFragment() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n const hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return this.node(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n });\n }\n\n return this.node(start, {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n parseFragmentDefinition() {\n const start = this._lexer.token;\n this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (this._options.allowLegacyFragmentVariables === true) {\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentName : Name but not `on`\n */\n\n parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseValueLiteral(isConst) {\n const token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.INT,\n value: token.value,\n });\n\n case TokenKind.FLOAT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.FLOAT,\n value: token.value,\n });\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this.advanceLexer();\n\n switch (token.value) {\n case 'true':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: true,\n });\n\n case 'false':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: false,\n });\n\n case 'null':\n return this.node(token, {\n kind: Kind.NULL,\n });\n\n default:\n return this.node(token, {\n kind: Kind.ENUM,\n value: token.value,\n });\n }\n\n case TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(TokenKind.DOLLAR);\n\n if (this._lexer.token.kind === TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n\n return this.parseVariable();\n\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral() {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral() {\n const token = this._lexer.token;\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n });\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n parseList(isConst) {\n const item = () => this.parseValueLiteral(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n });\n }\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n\n parseObject(isConst) {\n const item = () => this.parseObjectField(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n });\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n parseObjectField(isConst) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n\n parseDirectives(isConst) {\n const directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n\n parseConstDirectives() {\n return this.parseDirectives(true);\n }\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n\n parseDirective(isConst) {\n const start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return this.node(start, {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n parseTypeReference() {\n const start = this._lexer.token;\n let type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = this.node(start, {\n kind: Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return this.node(start, {\n kind: Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n\n parseNamedType() {\n return this.node(this._lexer.token, {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n } // Implements the parsing rules in the Type Definition section.\n\n peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n\n parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n\n parseSchemaDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n return this.node(start, {\n kind: Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n parseOperationTypeDefinition() {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node(start, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n parseScalarTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n parseObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n parseImplementsInterfaces() {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n : [];\n }\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n\n parseFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseFieldDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n parseFieldDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n parseArgumentDefs() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseInputValueDef,\n TokenKind.PAREN_R,\n );\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n parseInputValueDef() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n parseInterfaceTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n parseUnionTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node(start, {\n kind: Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS)\n ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n parseEnumTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node(start, {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n\n parseEnumValuesDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n\n parseEnumValueDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseEnumValueName() {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n\n return this.parseName();\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n parseInputObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n\n parseInputFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseInputValueDef,\n TokenKind.BRACE_R,\n );\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n parseTypeSystemExtension() {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n\n parseSchemaExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n parseScalarTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n parseObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n\n parseInterfaceTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n parseUnionTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n parseEnumTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n parseInputObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n\n parseDirectiveDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node(start, {\n kind: Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n parseDirectiveLocation() {\n const start = this._lexer.token;\n const name = this.parseName();\n\n if (Object.prototype.hasOwnProperty.call(DirectiveLocation, name.value)) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n\n node(startToken, node) {\n if (this._options.noLocation !== true) {\n node.loc = new Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n\n return node;\n }\n /**\n * Determines if the next token is of a given kind\n */\n\n peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return token;\n }\n\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n } else {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n\n unexpected(atToken) {\n const token =\n atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n\n delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n }\n\n advanceLexer() {\n const { maxTokens } = this._options;\n\n const token = this._lexer.advance();\n\n if (maxTokens !== undefined && token.kind !== TokenKind.EOF) {\n ++this._tokenCounter;\n\n if (this._tokenCounter > maxTokens) {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Document contains more that ${maxTokens} tokens. Parsing aborted.`,\n );\n }\n }\n }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n }\n else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n }\n else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc)\n delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables,\n allowLegacyFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n }\n else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n//# sourceMappingURL=index.js.map","import { DEV } from \"../utilities/globals/index.js\";\nexport { ApolloClient, mergeOptions, } from \"./ApolloClient.js\";\nexport { ObservableQuery, } from \"./ObservableQuery.js\";\nexport { NetworkStatus } from \"./networkStatus.js\";\nexport * from \"./types.js\";\nexport { isApolloError, ApolloError } from \"../errors/index.js\";\nexport { Cache, ApolloCache, InMemoryCache, MissingFieldError, defaultDataIdFromObject, makeVar, } from \"../cache/index.js\";\nexport * from \"../cache/inmemory/types.js\";\nexport * from \"../link/core/index.js\";\nexport * from \"../link/http/index.js\";\nexport { fromError, toPromise, fromPromise, throwServerError, } from \"../link/utils/index.js\";\nexport { Observable, isReference, makeReference, } from \"../utilities/index.js\";\nimport { setVerbosity } from \"ts-invariant\";\nexport { setVerbosity as setLogVerbosity };\nsetVerbosity(DEV ? \"log\" : \"silent\");\nexport { gql, resetCaches, disableFragmentWarnings, enableExperimentalFragmentVariables, disableExperimentalFragmentVariables, } from 'graphql-tag';\n//# sourceMappingURL=index.js.map","import * as React from 'react';\nimport { canUseSymbol } from \"../../utilities/index.js\";\nvar contextKey = canUseSymbol\n ? Symbol.for('__APOLLO_CONTEXT__')\n : '__APOLLO_CONTEXT__';\nexport function getApolloContext() {\n var context = React.createContext[contextKey];\n if (!context) {\n Object.defineProperty(React.createContext, contextKey, {\n value: context = React.createContext({}),\n enumerable: false,\n writable: false,\n configurable: true,\n });\n context.displayName = 'ApolloContext';\n }\n return context;\n}\nexport { getApolloContext as resetApolloContext };\n//# sourceMappingURL=ApolloContext.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from 'react';\nimport { getApolloContext } from \"./ApolloContext.js\";\nexport var ApolloProvider = function (_a) {\n var client = _a.client, children = _a.children;\n var ApolloContext = getApolloContext();\n return (React.createElement(ApolloContext.Consumer, null, function (context) {\n if (context === void 0) { context = {}; }\n if (client && context.client !== client) {\n context = Object.assign({}, context, { client: client });\n }\n __DEV__ ? invariant(context.client, 'ApolloProvider was not passed a client instance. Make ' +\n 'sure you pass in your client via the \"client\" prop.') : invariant(context.client, 29);\n return (React.createElement(ApolloContext.Provider, { value: context }, children));\n }));\n};\n//# sourceMappingURL=ApolloProvider.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from 'react';\nimport { getApolloContext } from \"./ApolloContext.js\";\nexport var ApolloConsumer = function (props) {\n var ApolloContext = getApolloContext();\n return (React.createElement(ApolloContext.Consumer, null, function (context) {\n __DEV__ ? invariant(context && context.client, 'Could not find \"client\" in the context of ApolloConsumer. ' +\n 'Wrap the root component in an <ApolloProvider>.') : invariant(context && context.client, 28);\n return props.children(context.client);\n }));\n};\n//# sourceMappingURL=ApolloConsumer.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport { useContext } from 'react';\nimport { getApolloContext } from \"../context/index.js\";\nexport function useApolloClient(override) {\n var context = useContext(getApolloContext());\n var client = override || context.client;\n __DEV__ ? invariant(!!client, 'Could not find \"client\" in the context or passed in as an option. ' +\n 'Wrap the root component in an <ApolloProvider>, or pass an ApolloClient ' +\n 'instance in via options.') : invariant(!!client, 32);\n return client;\n}\n//# sourceMappingURL=useApolloClient.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from 'react';\nimport { canUseLayoutEffect } from \"../../utilities/index.js\";\nvar didWarnUncachedGetSnapshot = false;\nvar uSESKey = \"useSyncExternalStore\";\nvar realHook = React[uSESKey];\nexport var useSyncExternalStore = realHook || (function (subscribe, getSnapshot, getServerSnapshot) {\n var value = getSnapshot();\n if (__DEV__ &&\n !didWarnUncachedGetSnapshot &&\n value !== getSnapshot()) {\n didWarnUncachedGetSnapshot = true;\n __DEV__ && invariant.error('The result of getSnapshot should be cached to avoid an infinite loop');\n }\n var _a = React.useState({ inst: { value: value, getSnapshot: getSnapshot } }), inst = _a[0].inst, forceUpdate = _a[1];\n if (canUseLayoutEffect) {\n React.useLayoutEffect(function () {\n Object.assign(inst, { value: value, getSnapshot: getSnapshot });\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({ inst: inst });\n }\n }, [subscribe, value, getSnapshot]);\n }\n else {\n Object.assign(inst, { value: value, getSnapshot: getSnapshot });\n }\n React.useEffect(function () {\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({ inst: inst });\n }\n return subscribe(function handleStoreChange() {\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({ inst: inst });\n }\n });\n }, [subscribe]);\n return value;\n});\nfunction checkIfSnapshotChanged(_a) {\n var value = _a.value, getSnapshot = _a.getSnapshot;\n try {\n return value !== getSnapshot();\n }\n catch (_b) {\n return true;\n }\n}\n//# sourceMappingURL=useSyncExternalStore.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache = new Map();\nexport function operationName(type) {\n var name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\nexport function parser(document) {\n var cached = cache.get(document);\n if (cached)\n return cached;\n var variables, type, name;\n __DEV__ ? invariant(!!document && !!document.kind, \"Argument of \".concat(document, \" passed to parser was not a valid GraphQL \") +\n \"DocumentNode. You may need to use 'graphql-tag' or another method \" +\n \"to convert your operation into a document\") : invariant(!!document && !!document.kind, 33);\n var fragments = [];\n var queries = [];\n var mutations = [];\n var subscriptions = [];\n for (var _i = 0, _a = document.definitions; _i < _a.length; _i++) {\n var x = _a[_i];\n if (x.kind === 'FragmentDefinition') {\n fragments.push(x);\n continue;\n }\n if (x.kind === 'OperationDefinition') {\n switch (x.operation) {\n case 'query':\n queries.push(x);\n break;\n case 'mutation':\n mutations.push(x);\n break;\n case 'subscription':\n subscriptions.push(x);\n break;\n }\n }\n }\n __DEV__ ? invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), \"Passing only a fragment to 'graphql' is not yet supported. \" +\n \"You must include a query, subscription or mutation as well\") : invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), 34);\n __DEV__ ? invariant(queries.length + mutations.length + subscriptions.length <= 1, \"react-apollo only supports a query, subscription, or a mutation per HOC. \" +\n \"\".concat(document, \" had \").concat(queries.length, \" queries, \").concat(subscriptions.length, \" \") +\n \"subscriptions and \".concat(mutations.length, \" mutations. \") +\n \"You can use 'compose' to join multiple operation types to a component\") : invariant(queries.length + mutations.length + subscriptions.length <= 1, 35);\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length)\n type = DocumentType.Subscription;\n var definitions = queries.length\n ? queries\n : mutations.length\n ? mutations\n : subscriptions;\n __DEV__ ? invariant(definitions.length === 1, \"react-apollo only supports one definition per HOC. \".concat(document, \" had \") +\n \"\".concat(definitions.length, \" definitions. \") +\n \"You can use 'compose' to join multiple operation types to a component\") : invariant(definitions.length === 1, 36);\n var definition = definitions[0];\n variables = definition.variableDefinitions || [];\n if (definition.name && definition.name.kind === 'Name') {\n name = definition.name.value;\n }\n else {\n name = 'data';\n }\n var payload = { name: name, type: type, variables: variables };\n cache.set(document, payload);\n return payload;\n}\nexport function verifyDocumentType(document, type) {\n var operation = parser(document);\n var requiredOperationName = operationName(type);\n var usedOperationName = operationName(operation.type);\n __DEV__ ? invariant(operation.type === type, \"Running a \".concat(requiredOperationName, \" requires a graphql \") +\n \"\".concat(requiredOperationName, \", but a \").concat(usedOperationName, \" was used instead.\")) : invariant(operation.type === type, 37);\n}\n//# sourceMappingURL=index.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { useCallback, useContext, useMemo, useRef, useState, } from 'react';\nimport { useSyncExternalStore } from \"./useSyncExternalStore.js\";\nimport { equal } from '@wry/equality';\nimport { mergeOptions } from \"../../core/index.js\";\nimport { getApolloContext } from \"../context/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { NetworkStatus, } from \"../../core/index.js\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { canUseWeakMap, compact, isNonEmptyArray, maybeDeepFreeze } from \"../../utilities/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function useQuery(query, options) {\n if (options === void 0) { options = Object.create(null); }\n return useInternalState(useApolloClient(options.client), query).useQuery(options);\n}\nexport function useInternalState(client, query) {\n var stateRef = useRef();\n if (!stateRef.current ||\n client !== stateRef.current.client ||\n query !== stateRef.current.query) {\n stateRef.current = new InternalState(client, query, stateRef.current);\n }\n var state = stateRef.current;\n var _a = useState(0), _tick = _a[0], setTick = _a[1];\n state.forceUpdate = function () {\n setTick(function (tick) { return tick + 1; });\n };\n return state;\n}\nvar InternalState = (function () {\n function InternalState(client, query, previous) {\n this.client = client;\n this.query = query;\n this.ssrDisabledResult = maybeDeepFreeze({\n loading: true,\n data: void 0,\n error: void 0,\n networkStatus: NetworkStatus.loading,\n });\n this.skipStandbyResult = maybeDeepFreeze({\n loading: false,\n data: void 0,\n error: void 0,\n networkStatus: NetworkStatus.ready,\n });\n this.toQueryResultCache = new (canUseWeakMap ? WeakMap : Map)();\n verifyDocumentType(query, DocumentType.Query);\n var previousResult = previous && previous.result;\n var previousData = previousResult && previousResult.data;\n if (previousData) {\n this.previousData = previousData;\n }\n }\n InternalState.prototype.forceUpdate = function () {\n __DEV__ && invariant.warn(\"Calling default no-op implementation of InternalState#forceUpdate\");\n };\n InternalState.prototype.executeQuery = function (options) {\n var _this = this;\n var _a;\n if (options.query) {\n Object.assign(this, { query: options.query });\n }\n this.watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);\n var concast = this.observable.reobserveAsConcast(this.getObsQueryOptions());\n this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;\n this.result = void 0;\n this.forceUpdate();\n return new Promise(function (resolve) {\n var result;\n concast.subscribe({\n next: function (value) {\n result = value;\n },\n error: function () {\n resolve(_this.toQueryResult(_this.observable.getCurrentResult()));\n },\n complete: function () {\n resolve(_this.toQueryResult(result));\n }\n });\n });\n };\n InternalState.prototype.useQuery = function (options) {\n var _this = this;\n this.renderPromises = useContext(getApolloContext()).renderPromises;\n this.useOptions(options);\n var obsQuery = this.useObservableQuery();\n var result = useSyncExternalStore(useCallback(function () {\n if (_this.renderPromises) {\n return function () { };\n }\n var onNext = function () {\n var previousResult = _this.result;\n var result = obsQuery.getCurrentResult();\n if (previousResult &&\n previousResult.loading === result.loading &&\n previousResult.networkStatus === result.networkStatus &&\n equal(previousResult.data, result.data)) {\n return;\n }\n _this.setResult(result);\n };\n var onError = function (error) {\n var last = obsQuery[\"last\"];\n subscription.unsubscribe();\n try {\n obsQuery.resetLastResults();\n subscription = obsQuery.subscribe(onNext, onError);\n }\n finally {\n obsQuery[\"last\"] = last;\n }\n if (!hasOwnProperty.call(error, 'graphQLErrors')) {\n throw error;\n }\n var previousResult = _this.result;\n if (!previousResult ||\n (previousResult && previousResult.loading) ||\n !equal(error, previousResult.error)) {\n _this.setResult({\n data: (previousResult && previousResult.data),\n error: error,\n loading: false,\n networkStatus: NetworkStatus.error,\n });\n }\n };\n var subscription = obsQuery.subscribe(onNext, onError);\n return function () { return setTimeout(function () { return subscription.unsubscribe(); }); };\n }, [\n obsQuery,\n this.renderPromises,\n this.client.disableNetworkFetches,\n ]), function () { return _this.getCurrentResult(); }, function () { return _this.getCurrentResult(); });\n this.unsafeHandlePartialRefetch(result);\n return this.toQueryResult(result);\n };\n InternalState.prototype.useOptions = function (options) {\n var _a;\n var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);\n var currentWatchQueryOptions = this.watchQueryOptions;\n if (!equal(watchQueryOptions, currentWatchQueryOptions)) {\n this.watchQueryOptions = watchQueryOptions;\n if (currentWatchQueryOptions && this.observable) {\n this.observable.reobserve(this.getObsQueryOptions());\n this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;\n this.result = void 0;\n }\n }\n this.onCompleted = options.onCompleted || InternalState.prototype.onCompleted;\n this.onError = options.onError || InternalState.prototype.onError;\n if ((this.renderPromises || this.client.disableNetworkFetches) &&\n this.queryHookOptions.ssr === false &&\n !this.queryHookOptions.skip) {\n this.result = this.ssrDisabledResult;\n }\n else if (this.queryHookOptions.skip ||\n this.watchQueryOptions.fetchPolicy === 'standby') {\n this.result = this.skipStandbyResult;\n }\n else if (this.result === this.ssrDisabledResult ||\n this.result === this.skipStandbyResult) {\n this.result = void 0;\n }\n };\n InternalState.prototype.getObsQueryOptions = function () {\n var toMerge = [];\n var globalDefaults = this.client.defaultOptions.watchQuery;\n if (globalDefaults)\n toMerge.push(globalDefaults);\n if (this.queryHookOptions.defaultOptions) {\n toMerge.push(this.queryHookOptions.defaultOptions);\n }\n toMerge.push(compact(this.observable && this.observable.options, this.watchQueryOptions));\n return toMerge.reduce(mergeOptions);\n };\n InternalState.prototype.createWatchQueryOptions = function (_a) {\n var _b;\n if (_a === void 0) { _a = {}; }\n var skip = _a.skip, ssr = _a.ssr, onCompleted = _a.onCompleted, onError = _a.onError, defaultOptions = _a.defaultOptions, otherOptions = __rest(_a, [\"skip\", \"ssr\", \"onCompleted\", \"onError\", \"defaultOptions\"]);\n var watchQueryOptions = Object.assign(otherOptions, { query: this.query });\n if (this.renderPromises &&\n (watchQueryOptions.fetchPolicy === 'network-only' ||\n watchQueryOptions.fetchPolicy === 'cache-and-network')) {\n watchQueryOptions.fetchPolicy = 'cache-first';\n }\n if (!watchQueryOptions.variables) {\n watchQueryOptions.variables = {};\n }\n if (skip) {\n var _c = watchQueryOptions.fetchPolicy, fetchPolicy = _c === void 0 ? this.getDefaultFetchPolicy() : _c, _d = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _d === void 0 ? fetchPolicy : _d;\n Object.assign(watchQueryOptions, {\n initialFetchPolicy: initialFetchPolicy,\n fetchPolicy: 'standby',\n });\n }\n else if (!watchQueryOptions.fetchPolicy) {\n watchQueryOptions.fetchPolicy =\n ((_b = this.observable) === null || _b === void 0 ? void 0 : _b.options.initialFetchPolicy) ||\n this.getDefaultFetchPolicy();\n }\n return watchQueryOptions;\n };\n InternalState.prototype.getDefaultFetchPolicy = function () {\n var _a, _b;\n return (((_a = this.queryHookOptions.defaultOptions) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||\n ((_b = this.client.defaultOptions.watchQuery) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||\n \"cache-first\");\n };\n InternalState.prototype.onCompleted = function (data) { };\n InternalState.prototype.onError = function (error) { };\n InternalState.prototype.useObservableQuery = function () {\n var obsQuery = this.observable =\n this.renderPromises\n && this.renderPromises.getSSRObservable(this.watchQueryOptions)\n || this.observable\n || this.client.watchQuery(this.getObsQueryOptions());\n this.obsQueryFields = useMemo(function () { return ({\n refetch: obsQuery.refetch.bind(obsQuery),\n reobserve: obsQuery.reobserve.bind(obsQuery),\n fetchMore: obsQuery.fetchMore.bind(obsQuery),\n updateQuery: obsQuery.updateQuery.bind(obsQuery),\n startPolling: obsQuery.startPolling.bind(obsQuery),\n stopPolling: obsQuery.stopPolling.bind(obsQuery),\n subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),\n }); }, [obsQuery]);\n var ssrAllowed = !(this.queryHookOptions.ssr === false ||\n this.queryHookOptions.skip);\n if (this.renderPromises && ssrAllowed) {\n this.renderPromises.registerSSRObservable(obsQuery);\n if (obsQuery.getCurrentResult().loading) {\n this.renderPromises.addObservableQueryPromise(obsQuery);\n }\n }\n return obsQuery;\n };\n InternalState.prototype.setResult = function (nextResult) {\n var previousResult = this.result;\n if (previousResult && previousResult.data) {\n this.previousData = previousResult.data;\n }\n this.result = nextResult;\n this.forceUpdate();\n this.handleErrorOrCompleted(nextResult);\n };\n InternalState.prototype.handleErrorOrCompleted = function (result) {\n var _this = this;\n if (!result.loading) {\n var error_1 = this.toApolloError(result);\n Promise.resolve().then(function () {\n if (error_1) {\n _this.onError(error_1);\n }\n else if (result.data) {\n _this.onCompleted(result.data);\n }\n }).catch(function (error) {\n __DEV__ && invariant.warn(error);\n });\n }\n };\n InternalState.prototype.toApolloError = function (result) {\n return isNonEmptyArray(result.errors)\n ? new ApolloError({ graphQLErrors: result.errors })\n : result.error;\n };\n InternalState.prototype.getCurrentResult = function () {\n if (!this.result) {\n this.handleErrorOrCompleted(this.result = this.observable.getCurrentResult());\n }\n return this.result;\n };\n InternalState.prototype.toQueryResult = function (result) {\n var queryResult = this.toQueryResultCache.get(result);\n if (queryResult)\n return queryResult;\n var data = result.data, partial = result.partial, resultWithoutPartial = __rest(result, [\"data\", \"partial\"]);\n this.toQueryResultCache.set(result, queryResult = __assign(__assign(__assign({ data: data }, resultWithoutPartial), this.obsQueryFields), { client: this.client, observable: this.observable, variables: this.observable.variables, called: !this.queryHookOptions.skip, previousData: this.previousData }));\n if (!queryResult.error && isNonEmptyArray(result.errors)) {\n queryResult.error = new ApolloError({ graphQLErrors: result.errors });\n }\n return queryResult;\n };\n InternalState.prototype.unsafeHandlePartialRefetch = function (result) {\n if (result.partial &&\n this.queryHookOptions.partialRefetch &&\n !result.loading &&\n (!result.data || Object.keys(result.data).length === 0) &&\n this.observable.options.fetchPolicy !== 'cache-only') {\n Object.assign(result, {\n loading: true,\n networkStatus: NetworkStatus.refetch,\n });\n this.observable.refetch();\n }\n };\n return InternalState;\n}());\n//# sourceMappingURL=useQuery.js.map","import { __assign } from \"tslib\";\nimport { useCallback, useMemo, useRef } from 'react';\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { useInternalState } from \"./useQuery.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nvar EAGER_METHODS = [\n 'refetch',\n 'reobserve',\n 'fetchMore',\n 'updateQuery',\n 'startPolling',\n 'subscribeToMore',\n];\nexport function useLazyQuery(query, options) {\n var _a;\n var execOptionsRef = useRef();\n var optionsRef = useRef();\n var queryRef = useRef();\n var merged = execOptionsRef.current ? mergeOptions(options, execOptionsRef.current) : options;\n var document = (_a = merged === null || merged === void 0 ? void 0 : merged.query) !== null && _a !== void 0 ? _a : query;\n optionsRef.current = merged;\n queryRef.current = document;\n var internalState = useInternalState(useApolloClient(options && options.client), document);\n var useQueryResult = internalState.useQuery(__assign(__assign({}, merged), { skip: !execOptionsRef.current }));\n var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||\n internalState.getDefaultFetchPolicy();\n var result = Object.assign(useQueryResult, {\n called: !!execOptionsRef.current,\n });\n var eagerMethods = useMemo(function () {\n var eagerMethods = {};\n var _loop_1 = function (key) {\n var method = result[key];\n eagerMethods[key] = function () {\n if (!execOptionsRef.current) {\n execOptionsRef.current = Object.create(null);\n internalState.forceUpdate();\n }\n return method.apply(this, arguments);\n };\n };\n for (var _i = 0, EAGER_METHODS_1 = EAGER_METHODS; _i < EAGER_METHODS_1.length; _i++) {\n var key = EAGER_METHODS_1[_i];\n _loop_1(key);\n }\n return eagerMethods;\n }, []);\n Object.assign(result, eagerMethods);\n var execute = useCallback(function (executeOptions) {\n execOptionsRef.current = executeOptions ? __assign(__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {\n fetchPolicy: initialFetchPolicy,\n };\n var options = mergeOptions(optionsRef.current, __assign({ query: queryRef.current }, execOptionsRef.current));\n var promise = internalState\n .executeQuery(__assign(__assign({}, options), { skip: false }))\n .then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });\n promise.catch(function () { });\n return promise;\n }, []);\n return [execute, result];\n}\n//# sourceMappingURL=useLazyQuery.js.map","import { __assign } from \"tslib\";\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { mergeOptions, } from \"../../core/index.js\";\nimport { equal } from '@wry/equality';\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nexport function useMutation(mutation, options) {\n var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);\n verifyDocumentType(mutation, DocumentType.Mutation);\n var _a = useState({\n called: false,\n loading: false,\n client: client,\n }), result = _a[0], setResult = _a[1];\n var ref = useRef({\n result: result,\n mutationId: 0,\n isMounted: true,\n client: client,\n mutation: mutation,\n options: options,\n });\n {\n Object.assign(ref.current, { client: client, options: options, mutation: mutation });\n }\n var execute = useCallback(function (executeOptions) {\n if (executeOptions === void 0) { executeOptions = {}; }\n var _a = ref.current, options = _a.options, mutation = _a.mutation;\n var baseOptions = __assign(__assign({}, options), { mutation: mutation });\n var client = executeOptions.client || ref.current.client;\n if (!ref.current.result.loading && !baseOptions.ignoreResults && ref.current.isMounted) {\n setResult(ref.current.result = {\n loading: true,\n error: void 0,\n data: void 0,\n called: true,\n client: client,\n });\n }\n var mutationId = ++ref.current.mutationId;\n var clientOptions = mergeOptions(baseOptions, executeOptions);\n return client.mutate(clientOptions).then(function (response) {\n var _a;\n var data = response.data, errors = response.errors;\n var error = errors && errors.length > 0\n ? new ApolloError({ graphQLErrors: errors })\n : void 0;\n if (mutationId === ref.current.mutationId &&\n !clientOptions.ignoreResults) {\n var result_1 = {\n called: true,\n loading: false,\n data: data,\n error: error,\n client: client,\n };\n if (ref.current.isMounted && !equal(ref.current.result, result_1)) {\n setResult(ref.current.result = result_1);\n }\n }\n var onCompleted = executeOptions.onCompleted || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onCompleted);\n onCompleted === null || onCompleted === void 0 ? void 0 : onCompleted(response.data, clientOptions);\n return response;\n }).catch(function (error) {\n var _a;\n if (mutationId === ref.current.mutationId &&\n ref.current.isMounted) {\n var result_2 = {\n loading: false,\n error: error,\n data: void 0,\n called: true,\n client: client,\n };\n if (!equal(ref.current.result, result_2)) {\n setResult(ref.current.result = result_2);\n }\n }\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (onError) {\n onError(error, clientOptions);\n return { data: void 0, errors: error };\n }\n throw error;\n });\n }, []);\n var reset = useCallback(function () {\n if (ref.current.isMounted) {\n setResult({ called: false, loading: false, client: client });\n }\n }, []);\n useEffect(function () {\n ref.current.isMounted = true;\n return function () {\n ref.current.isMounted = false;\n };\n }, []);\n return [execute, __assign({ reset: reset }, result)];\n}\n//# sourceMappingURL=useMutation.js.map","import \"../../utilities/globals/index.js\";\nimport { useState, useRef, useEffect } from 'react';\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nexport function useSubscription(subscription, options) {\n var hasIssuedDeprecationWarningRef = useRef(false);\n var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);\n verifyDocumentType(subscription, DocumentType.Subscription);\n var _a = useState({\n loading: !(options === null || options === void 0 ? void 0 : options.skip),\n error: void 0,\n data: void 0,\n variables: options === null || options === void 0 ? void 0 : options.variables,\n }), result = _a[0], setResult = _a[1];\n if (!hasIssuedDeprecationWarningRef.current) {\n hasIssuedDeprecationWarningRef.current = true;\n if (options === null || options === void 0 ? void 0 : options.onSubscriptionData) {\n __DEV__ && invariant.warn(options.onData\n ? \"'useSubscription' supports only the 'onSubscriptionData' or 'onData' option, but not both. Only the 'onData' option will be used.\"\n : \"'onSubscriptionData' is deprecated and will be removed in a future major version. Please use the 'onData' option instead.\");\n }\n if (options === null || options === void 0 ? void 0 : options.onSubscriptionComplete) {\n __DEV__ && invariant.warn(options.onComplete\n ? \"'useSubscription' supports only the 'onSubscriptionComplete' or 'onComplete' option, but not both. Only the 'onComplete' option will be used.\"\n : \"'onSubscriptionComplete' is deprecated and will be removed in a future major version. Please use the 'onComplete' option instead.\");\n }\n }\n var _b = useState(function () {\n if (options === null || options === void 0 ? void 0 : options.skip) {\n return null;\n }\n return client.subscribe({\n query: subscription,\n variables: options === null || options === void 0 ? void 0 : options.variables,\n fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,\n context: options === null || options === void 0 ? void 0 : options.context,\n });\n }), observable = _b[0], setObservable = _b[1];\n var canResetObservableRef = useRef(false);\n useEffect(function () {\n return function () {\n canResetObservableRef.current = true;\n };\n }, []);\n var ref = useRef({ client: client, subscription: subscription, options: options });\n useEffect(function () {\n var _a, _b, _c, _d;\n var shouldResubscribe = options === null || options === void 0 ? void 0 : options.shouldResubscribe;\n if (typeof shouldResubscribe === 'function') {\n shouldResubscribe = !!shouldResubscribe(options);\n }\n if (options === null || options === void 0 ? void 0 : options.skip) {\n if (!(options === null || options === void 0 ? void 0 : options.skip) !== !((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.skip) || canResetObservableRef.current) {\n setResult({\n loading: false,\n data: void 0,\n error: void 0,\n variables: options === null || options === void 0 ? void 0 : options.variables,\n });\n setObservable(null);\n canResetObservableRef.current = false;\n }\n }\n else if ((shouldResubscribe !== false &&\n (client !== ref.current.client ||\n subscription !== ref.current.subscription ||\n (options === null || options === void 0 ? void 0 : options.fetchPolicy) !== ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||\n !(options === null || options === void 0 ? void 0 : options.skip) !== !((_c = ref.current.options) === null || _c === void 0 ? void 0 : _c.skip) ||\n !equal(options === null || options === void 0 ? void 0 : options.variables, (_d = ref.current.options) === null || _d === void 0 ? void 0 : _d.variables))) ||\n canResetObservableRef.current) {\n setResult({\n loading: true,\n data: void 0,\n error: void 0,\n variables: options === null || options === void 0 ? void 0 : options.variables,\n });\n setObservable(client.subscribe({\n query: subscription,\n variables: options === null || options === void 0 ? void 0 : options.variables,\n fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,\n context: options === null || options === void 0 ? void 0 : options.context,\n }));\n canResetObservableRef.current = false;\n }\n Object.assign(ref.current, { client: client, subscription: subscription, options: options });\n }, [client, subscription, options, canResetObservableRef.current]);\n useEffect(function () {\n if (!observable) {\n return;\n }\n var subscriptionStopped = false;\n var subscription = observable.subscribe({\n next: function (fetchResult) {\n var _a, _b;\n if (subscriptionStopped) {\n return;\n }\n var result = {\n loading: false,\n data: fetchResult.data,\n error: void 0,\n variables: options === null || options === void 0 ? void 0 : options.variables,\n };\n setResult(result);\n if ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onData) {\n ref.current.options.onData({\n client: client,\n data: result\n });\n }\n else if ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onSubscriptionData) {\n ref.current.options.onSubscriptionData({\n client: client,\n subscriptionData: result\n });\n }\n },\n error: function (error) {\n var _a, _b;\n if (!subscriptionStopped) {\n setResult({\n loading: false,\n data: void 0,\n error: error,\n variables: options === null || options === void 0 ? void 0 : options.variables,\n });\n (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);\n }\n ;\n },\n complete: function () {\n var _a, _b;\n if (!subscriptionStopped) {\n if ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onComplete) {\n ref.current.options.onComplete();\n }\n else if ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onSubscriptionComplete) {\n ref.current.options.onSubscriptionComplete();\n }\n }\n },\n });\n return function () {\n subscriptionStopped = true;\n setTimeout(function () {\n subscription.unsubscribe();\n });\n };\n }, [observable]);\n return result;\n}\n//# sourceMappingURL=useSubscription.js.map","import { useEffect, useState } from 'react';\nexport function useReactiveVar(rv) {\n var value = rv();\n var setValue = useState(value)[1];\n useEffect(function () {\n var probablySameValue = rv();\n if (value !== probablySameValue) {\n setValue(probablySameValue);\n }\n else {\n return rv.onNextChange(setValue);\n }\n }, [value]);\n return value;\n}\n//# sourceMappingURL=useReactiveVar.js.map","import { __assign, __rest } from \"tslib\";\nimport { useRef } from \"react\";\nimport { equal } from \"@wry/equality\";\nimport { mergeDeepArray } from \"../../utilities/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { useSyncExternalStore } from \"./useSyncExternalStore.js\";\nexport function useFragment_experimental(options) {\n var cache = useApolloClient().cache;\n var fragment = options.fragment, fragmentName = options.fragmentName, from = options.from, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, rest = __rest(options, [\"fragment\", \"fragmentName\", \"from\", \"optimistic\"]);\n var diffOptions = __assign(__assign({}, rest), { id: typeof from === \"string\" ? from : cache.identify(from), query: cache[\"getFragmentDoc\"](fragment, fragmentName), optimistic: optimistic });\n var resultRef = useRef();\n var latestDiff = cache.diff(diffOptions);\n var getSnapshot = function () {\n var latestDiffToResult = diffToResult(latestDiff);\n return resultRef.current &&\n equal(resultRef.current.data, latestDiffToResult.data)\n ? resultRef.current\n : (resultRef.current = latestDiffToResult);\n };\n return useSyncExternalStore(function (forceUpdate) {\n return cache.watch(__assign(__assign({}, diffOptions), { immediate: true, callback: function (diff) {\n if (!equal(diff, latestDiff)) {\n resultRef.current = diffToResult((latestDiff = diff));\n forceUpdate();\n }\n } }));\n }, getSnapshot, getSnapshot);\n}\nfunction diffToResult(diff) {\n var result = {\n data: diff.result,\n complete: !!diff.complete,\n };\n if (diff.missing) {\n result.missing = mergeDeepArray(diff.missing.map(function (error) { return error.missing; }));\n }\n return result;\n}\n//# sourceMappingURL=useFragment.js.map","import { __extends } from \"tslib\";\nimport { InvariantError, invariant } from \"../../utilities/globals/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { validateOperation, createOperation, transformOperation, } from \"../utils/index.js\";\nfunction passthrough(op, forward) {\n return (forward ? forward(op) : Observable.of());\n}\nfunction toLink(handler) {\n return typeof handler === 'function' ? new ApolloLink(handler) : handler;\n}\nfunction isTerminating(link) {\n return link.request.length <= 1;\n}\nvar LinkError = (function (_super) {\n __extends(LinkError, _super);\n function LinkError(message, link) {\n var _this = _super.call(this, message) || this;\n _this.link = link;\n return _this;\n }\n return LinkError;\n}(Error));\nvar ApolloLink = (function () {\n function ApolloLink(request) {\n if (request)\n this.request = request;\n }\n ApolloLink.empty = function () {\n return new ApolloLink(function () { return Observable.of(); });\n };\n ApolloLink.from = function (links) {\n if (links.length === 0)\n return ApolloLink.empty();\n return links.map(toLink).reduce(function (x, y) { return x.concat(y); });\n };\n ApolloLink.split = function (test, left, right) {\n var leftLink = toLink(left);\n var rightLink = toLink(right || new ApolloLink(passthrough));\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n return new ApolloLink(function (operation) {\n return test(operation)\n ? leftLink.request(operation) || Observable.of()\n : rightLink.request(operation) || Observable.of();\n });\n }\n else {\n return new ApolloLink(function (operation, forward) {\n return test(operation)\n ? leftLink.request(operation, forward) || Observable.of()\n : rightLink.request(operation, forward) || Observable.of();\n });\n }\n };\n ApolloLink.execute = function (link, operation) {\n return (link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of());\n };\n ApolloLink.concat = function (first, second) {\n var firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n __DEV__ && invariant.warn(new LinkError(\"You are calling concat on a terminating link, which will have no effect\", firstLink));\n return firstLink;\n }\n var nextLink = toLink(second);\n if (isTerminating(nextLink)) {\n return new ApolloLink(function (operation) {\n return firstLink.request(operation, function (op) { return nextLink.request(op) || Observable.of(); }) || Observable.of();\n });\n }\n else {\n return new ApolloLink(function (operation, forward) {\n return (firstLink.request(operation, function (op) {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of());\n });\n }\n };\n ApolloLink.prototype.split = function (test, left, right) {\n return this.concat(ApolloLink.split(test, left, right || new ApolloLink(passthrough)));\n };\n ApolloLink.prototype.concat = function (next) {\n return ApolloLink.concat(this, next);\n };\n ApolloLink.prototype.request = function (operation, forward) {\n throw __DEV__ ? new InvariantError('request is not implemented') : new InvariantError(22);\n };\n ApolloLink.prototype.onError = function (error, observer) {\n if (observer && observer.error) {\n observer.error(error);\n return false;\n }\n throw error;\n };\n ApolloLink.prototype.setOnError = function (fn) {\n this.onError = fn;\n return this;\n };\n return ApolloLink;\n}());\nexport { ApolloLink };\n//# sourceMappingURL=ApolloLink.js.map","import { __assign } from \"tslib\";\nexport function createOperation(starting, operation) {\n var context = __assign({}, starting);\n var setContext = function (next) {\n if (typeof next === 'function') {\n context = __assign(__assign({}, context), next(context));\n }\n else {\n context = __assign(__assign({}, context), next);\n }\n };\n var getContext = function () { return (__assign({}, context)); };\n Object.defineProperty(operation, 'setContext', {\n enumerable: false,\n value: setContext,\n });\n Object.defineProperty(operation, 'getContext', {\n enumerable: false,\n value: getContext,\n });\n return operation;\n}\n//# sourceMappingURL=createOperation.js.map","import { getOperationName } from \"../../utilities/index.js\";\nexport function transformOperation(operation) {\n var transformedOperation = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== 'string'\n ? getOperationName(transformedOperation.query) || undefined\n : '';\n }\n return transformedOperation;\n}\n//# sourceMappingURL=transformOperation.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport function validateOperation(operation) {\n var OPERATION_FIELDS = [\n 'query',\n 'operationName',\n 'variables',\n 'extensions',\n 'context',\n ];\n for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n var key = _a[_i];\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw __DEV__ ? new InvariantError(\"illegal argument: \".concat(key)) : new InvariantError(27);\n }\n }\n return operation;\n}\n//# sourceMappingURL=validateOperation.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nexport function onError(errorHandler) {\n return new ApolloLink(function (operation, forward) {\n return new Observable(function (observer) {\n var sub;\n var retriedSub;\n var retriedResult;\n try {\n sub = forward(operation).subscribe({\n next: function (result) {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation: operation,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n }\n observer.next(result);\n },\n error: function (networkError) {\n retriedResult = errorHandler({\n operation: operation,\n networkError: networkError,\n graphQLErrors: networkError &&\n networkError.result &&\n networkError.result.errors,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n observer.error(networkError);\n },\n complete: function () {\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n },\n });\n }\n catch (e) {\n errorHandler({ networkError: e, operation: operation, forward: forward });\n observer.error(e);\n }\n return function () {\n if (sub)\n sub.unsubscribe();\n if (retriedSub)\n sub.unsubscribe();\n };\n });\n });\n}\nvar ErrorLink = (function (_super) {\n __extends(ErrorLink, _super);\n function ErrorLink(errorHandler) {\n var _this = _super.call(this) || this;\n _this.link = onError(errorHandler);\n return _this;\n }\n ErrorLink.prototype.request = function (operation, forward) {\n return this.link.request(operation, forward);\n };\n return ErrorLink;\n}(ApolloLink));\nexport { ErrorLink };\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { print } from 'graphql';\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable, compact, isNonEmptyArray, } from \"../../utilities/index.js\";\nexport var VERSION = 1;\n;\nexport var PersistedQueryLink;\n(function (PersistedQueryLink) {\n ;\n ;\n})(PersistedQueryLink || (PersistedQueryLink = {}));\nfunction processErrors(graphQLErrors) {\n var byMessage = Object.create(null), byCode = Object.create(null);\n if (isNonEmptyArray(graphQLErrors)) {\n graphQLErrors.forEach(function (error) {\n var _a;\n byMessage[error.message] = error;\n if (typeof ((_a = error.extensions) === null || _a === void 0 ? void 0 : _a.code) == \"string\")\n byCode[error.extensions.code] = error;\n });\n }\n return {\n persistedQueryNotSupported: !!(byMessage.PersistedQueryNotSupported || byCode.PERSISTED_QUERY_NOT_SUPPORTED),\n persistedQueryNotFound: !!(byMessage.PersistedQueryNotFound || byCode.PERSISTED_QUERY_NOT_FOUND),\n };\n}\nvar defaultOptions = {\n disable: function (_a) {\n var meta = _a.meta;\n return meta.persistedQueryNotSupported;\n },\n retry: function (_a) {\n var meta = _a.meta;\n return meta.persistedQueryNotSupported || meta.persistedQueryNotFound;\n },\n useGETForHashedQueries: false,\n};\nfunction operationDefinesMutation(operation) {\n return operation.query.definitions.some(function (d) { return d.kind === 'OperationDefinition' && d.operation === 'mutation'; });\n}\nexport var createPersistedQueryLink = function (options) {\n var hashesByQuery = new WeakMap();\n __DEV__ ? invariant(options && (typeof options.sha256 === 'function' ||\n typeof options.generateHash === 'function'), 'Missing/invalid \"sha256\" or \"generateHash\" function. Please ' +\n 'configure one using the \"createPersistedQueryLink(options)\" options ' +\n 'parameter.') : invariant(options && (typeof options.sha256 === 'function' ||\n typeof options.generateHash === 'function'), 25);\n var _a = compact(defaultOptions, options), sha256 = _a.sha256, _b = _a.generateHash, generateHash = _b === void 0 ? function (query) { return Promise.resolve(sha256(print(query))); } : _b, disable = _a.disable, retry = _a.retry, useGETForHashedQueries = _a.useGETForHashedQueries;\n var supportsPersistedQueries = true;\n var getHashPromise = function (query) {\n return new Promise(function (resolve) { return resolve(generateHash(query)); });\n };\n function getQueryHash(query) {\n if (!query || typeof query !== 'object') {\n return getHashPromise(query);\n }\n var hash = hashesByQuery.get(query);\n if (!hash)\n hashesByQuery.set(query, hash = getHashPromise(query));\n return hash;\n }\n return new ApolloLink(function (operation, forward) {\n __DEV__ ? invariant(forward, 'PersistedQueryLink cannot be the last link in the chain.') : invariant(forward, 26);\n var query = operation.query;\n return new Observable(function (observer) {\n var subscription;\n var retried = false;\n var originalFetchOptions;\n var setFetchOptions = false;\n var maybeRetry = function (_a, cb) {\n var response = _a.response, networkError = _a.networkError;\n if (!retried && ((response && response.errors) || networkError)) {\n retried = true;\n var graphQLErrors = [];\n var responseErrors = response && response.errors;\n if (isNonEmptyArray(responseErrors)) {\n graphQLErrors.push.apply(graphQLErrors, responseErrors);\n }\n var networkErrors = void 0;\n if (typeof (networkError === null || networkError === void 0 ? void 0 : networkError.result) !== 'string') {\n networkErrors =\n networkError &&\n networkError.result &&\n networkError.result.errors;\n }\n if (isNonEmptyArray(networkErrors)) {\n graphQLErrors.push.apply(graphQLErrors, networkErrors);\n }\n var disablePayload = {\n response: response,\n networkError: networkError,\n operation: operation,\n graphQLErrors: isNonEmptyArray(graphQLErrors) ? graphQLErrors : void 0,\n meta: processErrors(graphQLErrors)\n };\n supportsPersistedQueries = !disable(disablePayload);\n if (retry(disablePayload)) {\n if (subscription)\n subscription.unsubscribe();\n operation.setContext({\n http: {\n includeQuery: true,\n includeExtensions: supportsPersistedQueries,\n },\n fetchOptions: {\n method: 'POST',\n },\n });\n if (setFetchOptions) {\n operation.setContext({ fetchOptions: originalFetchOptions });\n }\n subscription = forward(operation).subscribe(handler);\n return;\n }\n }\n cb();\n };\n var handler = {\n next: function (response) {\n maybeRetry({ response: response }, function () { return observer.next(response); });\n },\n error: function (networkError) {\n maybeRetry({ networkError: networkError }, function () { return observer.error(networkError); });\n },\n complete: observer.complete.bind(observer),\n };\n operation.setContext({\n http: {\n includeQuery: !supportsPersistedQueries,\n includeExtensions: supportsPersistedQueries,\n },\n });\n if (useGETForHashedQueries &&\n supportsPersistedQueries &&\n !operationDefinesMutation(operation)) {\n operation.setContext(function (_a) {\n var _b = _a.fetchOptions, fetchOptions = _b === void 0 ? {} : _b;\n originalFetchOptions = fetchOptions;\n return {\n fetchOptions: __assign(__assign({}, fetchOptions), { method: 'GET' }),\n };\n });\n setFetchOptions = true;\n }\n if (supportsPersistedQueries) {\n getQueryHash(query).then(function (sha256Hash) {\n operation.extensions.persistedQuery = {\n version: VERSION,\n sha256Hash: sha256Hash,\n };\n subscription = forward(operation).subscribe(handler);\n }).catch(observer.error.bind(observer));\n ;\n }\n else {\n subscription = forward(operation).subscribe(handler);\n }\n return function () {\n if (subscription)\n subscription.unsubscribe();\n };\n });\n });\n};\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { SubscriptionClient } from 'subscriptions-transport-ws';\nimport { ApolloLink } from \"../core/index.js\";\nvar WebSocketLink = (function (_super) {\n __extends(WebSocketLink, _super);\n function WebSocketLink(paramsOrClient) {\n var _this = _super.call(this) || this;\n if (paramsOrClient instanceof SubscriptionClient) {\n _this.subscriptionClient = paramsOrClient;\n }\n else {\n _this.subscriptionClient = new SubscriptionClient(paramsOrClient.uri, paramsOrClient.options, paramsOrClient.webSocketImpl);\n }\n return _this;\n }\n WebSocketLink.prototype.request = function (operation) {\n return this.subscriptionClient.request(operation);\n };\n return WebSocketLink;\n}(ApolloLink));\nexport { WebSocketLink };\n//# sourceMappingURL=index.js.map","export var isArray = Array.isArray;\nexport function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n//# sourceMappingURL=arrays.js.map","import { maybe } from \"../globals/index.js\";\nexport var canUseWeakMap = typeof WeakMap === 'function' &&\n maybe(function () { return navigator.product; }) !== 'ReactNative';\nexport var canUseWeakSet = typeof WeakSet === 'function';\nexport var canUseSymbol = typeof Symbol === 'function' &&\n typeof Symbol.for === 'function';\nexport var canUseAsyncIteratorSymbol = canUseSymbol && Symbol.asyncIterator;\nexport var canUseDOM = typeof maybe(function () { return window.document.createElement; }) === \"function\";\nvar usingJSDOM = maybe(function () { return navigator.userAgent.indexOf(\"jsdom\") >= 0; }) || false;\nexport var canUseLayoutEffect = canUseDOM && !usingJSDOM;\n//# sourceMappingURL=canUse.js.map","var toString = Object.prototype.toString;\nexport function cloneDeep(value) {\n return cloneDeepHelper(value);\n}\nfunction cloneDeepHelper(val, seen) {\n switch (toString.call(val)) {\n case \"[object Array]\": {\n seen = seen || new Map;\n if (seen.has(val))\n return seen.get(val);\n var copy_1 = val.slice(0);\n seen.set(val, copy_1);\n copy_1.forEach(function (child, i) {\n copy_1[i] = cloneDeepHelper(child, seen);\n });\n return copy_1;\n }\n case \"[object Object]\": {\n seen = seen || new Map;\n if (seen.has(val))\n return seen.get(val);\n var copy_2 = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy_2);\n Object.keys(val).forEach(function (key) {\n copy_2[key] = cloneDeepHelper(val[key], seen);\n });\n return copy_2;\n }\n default:\n return val;\n }\n}\n//# sourceMappingURL=cloneDeep.js.map","export function compact() {\n var objects = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n objects[_i] = arguments[_i];\n }\n var result = Object.create(null);\n objects.forEach(function (obj) {\n if (!obj)\n return;\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (value !== void 0) {\n result[key] = value;\n }\n });\n });\n return result;\n}\n//# sourceMappingURL=compact.js.map","import { isNonEmptyArray } from \"./arrays.js\";\nimport { isExecutionPatchIncrementalResult } from \"./incrementalResult.js\";\nexport function graphQLResultHasError(result) {\n var errors = getGraphQLErrorsFromResult(result);\n return isNonEmptyArray(errors);\n}\nexport function getGraphQLErrorsFromResult(result) {\n var graphQLErrors = isNonEmptyArray(result.errors)\n ? result.errors.slice(0)\n : [];\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (incrementalResult) {\n if (incrementalResult.errors) {\n graphQLErrors.push.apply(graphQLErrors, incrementalResult.errors);\n }\n });\n }\n return graphQLErrors;\n}\n//# sourceMappingURL=errorHandling.js.map","import { isNonNullObject } from \"./objects.js\";\nimport { isNonEmptyArray } from \"./arrays.js\";\nimport { DeepMerger } from \"./mergeDeep.js\";\nexport function isExecutionPatchIncrementalResult(value) {\n return \"incremental\" in value;\n}\nexport function isExecutionPatchInitialResult(value) {\n return \"hasNext\" in value && \"data\" in value;\n}\nexport function isExecutionPatchResult(value) {\n return (isExecutionPatchIncrementalResult(value) ||\n isExecutionPatchInitialResult(value));\n}\nexport function isApolloPayloadResult(value) {\n return isNonNullObject(value) && \"payload\" in value;\n}\nexport function mergeIncrementalData(prevResult, result) {\n var mergedData = prevResult;\n var merger = new DeepMerger();\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (_a) {\n var data = _a.data, path = _a.path;\n for (var i = path.length - 1; i >= 0; --i) {\n var key = path[i];\n var isNumericKey = !isNaN(+key);\n var parent_1 = isNumericKey ? [] : {};\n parent_1[key] = data;\n data = parent_1;\n }\n mergedData = merger.merge(mergedData, data);\n });\n }\n return mergedData;\n}\n//# sourceMappingURL=incrementalResult.js.map","var prefixCounts = new Map();\nexport function makeUniqueId(prefix) {\n var count = prefixCounts.get(prefix) || 1;\n prefixCounts.set(prefix, count + 1);\n return \"\".concat(prefix, \":\").concat(count, \":\").concat(Math.random().toString(36).slice(2));\n}\n//# sourceMappingURL=makeUniqueId.js.map","import \"../globals/index.js\";\nimport { isNonNullObject } from \"./objects.js\";\nfunction deepFreeze(value) {\n var workSet = new Set([value]);\n workSet.forEach(function (obj) {\n if (isNonNullObject(obj) && shallowFreeze(obj) === obj) {\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n if (isNonNullObject(obj[name]))\n workSet.add(obj[name]);\n });\n }\n });\n return value;\n}\nfunction shallowFreeze(obj) {\n if (__DEV__ && !Object.isFrozen(obj)) {\n try {\n Object.freeze(obj);\n }\n catch (e) {\n if (e instanceof TypeError)\n return null;\n throw e;\n }\n }\n return obj;\n}\nexport function maybeDeepFreeze(obj) {\n if (__DEV__) {\n deepFreeze(obj);\n }\n return obj;\n}\n//# sourceMappingURL=maybeDeepFreeze.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { isNonNullObject } from \"./objects.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function mergeDeep() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return mergeDeepArray(sources);\n}\nexport function mergeDeepArray(sources) {\n var target = sources[0] || {};\n var count = sources.length;\n if (count > 1) {\n var merger = new DeepMerger();\n for (var i = 1; i < count; ++i) {\n target = merger.merge(target, sources[i]);\n }\n }\n return target;\n}\nvar defaultReconciler = function (target, source, property) {\n return this.merge(target[property], source[property]);\n};\nvar DeepMerger = (function () {\n function DeepMerger(reconciler) {\n if (reconciler === void 0) { reconciler = defaultReconciler; }\n this.reconciler = reconciler;\n this.isObject = isNonNullObject;\n this.pastCopies = new Set();\n }\n DeepMerger.prototype.merge = function (target, source) {\n var _this = this;\n var context = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n context[_i - 2] = arguments[_i];\n }\n if (isNonNullObject(source) && isNonNullObject(target)) {\n Object.keys(source).forEach(function (sourceKey) {\n if (hasOwnProperty.call(target, sourceKey)) {\n var targetValue = target[sourceKey];\n if (source[sourceKey] !== targetValue) {\n var result = _this.reconciler.apply(_this, __spreadArray([target, source, sourceKey], context, false));\n if (result !== targetValue) {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = result;\n }\n }\n }\n else {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = source[sourceKey];\n }\n });\n return target;\n }\n return source;\n };\n DeepMerger.prototype.shallowCopyForMerge = function (value) {\n if (isNonNullObject(value)) {\n if (!this.pastCopies.has(value)) {\n if (Array.isArray(value)) {\n value = value.slice(0);\n }\n else {\n value = __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n this.pastCopies.add(value);\n }\n }\n return value;\n };\n return DeepMerger;\n}());\nexport { DeepMerger };\n//# sourceMappingURL=mergeDeep.js.map","import { __assign } from \"tslib\";\nimport { compact } from \"./compact.js\";\nexport function mergeOptions(defaults, options) {\n return compact(defaults, options, options.variables && {\n variables: __assign(__assign({}, (defaults && defaults.variables)), options.variables),\n });\n}\n//# sourceMappingURL=mergeOptions.js.map","export function isNonNullObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n//# sourceMappingURL=objects.js.map","import { makeUniqueId } from \"./makeUniqueId.js\";\nexport function stringifyForDisplay(value) {\n var undefId = makeUniqueId(\"stringifyForDisplay\");\n return JSON.stringify(value, function (key, value) {\n return value === void 0 ? undefId : value;\n }).split(JSON.stringify(undefId)).join(\"<undefined>\");\n}\n//# sourceMappingURL=stringifyForDisplay.js.map","export function maybe(thunk) {\n try {\n return thunk();\n }\n catch (_a) { }\n}\n//# sourceMappingURL=maybe.js.map","import { maybe } from \"./maybe.js\";\nexport default (maybe(function () { return globalThis; }) ||\n maybe(function () { return window; }) ||\n maybe(function () { return self; }) ||\n maybe(function () { return global; }) || maybe(function () { return maybe.constructor(\"return this\")(); }));\n//# sourceMappingURL=global.js.map","import global from \"./global.js\";\nimport { maybe } from \"./maybe.js\";\nvar __ = \"__\";\nvar GLOBAL_KEY = [__, __].join(\"DEV\");\nfunction getDEV() {\n try {\n return Boolean(__DEV__);\n }\n catch (_a) {\n Object.defineProperty(global, GLOBAL_KEY, {\n value: maybe(function () { return process.env.NODE_ENV; }) !== \"production\",\n enumerable: false,\n configurable: true,\n writable: true,\n });\n return global[GLOBAL_KEY];\n }\n}\nexport default getDEV();\n//# sourceMappingURL=DEV.js.map","function maybe(thunk) {\n try { return thunk() } catch (_) {}\n}\n\nvar safeGlobal = (\n maybe(function() { return globalThis }) ||\n maybe(function() { return window }) ||\n maybe(function() { return self }) ||\n maybe(function() { return global }) ||\n // We don't expect the Function constructor ever to be invoked at runtime, as\n // long as at least one of globalThis, window, self, or global is defined, so\n // we are under no obligation to make it easy for static analysis tools to\n // detect syntactic usage of the Function constructor. If you think you can\n // improve your static analysis to detect this obfuscation, think again. This\n // is an arms race you cannot win, at least not in JavaScript.\n maybe(function() { return maybe.constructor(\"return this\")() })\n);\n\nvar needToRemove = false;\n\nexport function install() {\n if (safeGlobal &&\n !maybe(function() { return process.env.NODE_ENV }) &&\n !maybe(function() { return process })) {\n Object.defineProperty(safeGlobal, \"process\", {\n value: {\n env: {\n // This default needs to be \"production\" instead of \"development\", to\n // avoid the problem https://github.com/graphql/graphql-js/pull/2894\n // will eventually solve, once merged and released.\n NODE_ENV: \"production\",\n },\n },\n // Let anyone else change global.process as they see fit, but hide it from\n // Object.keys(global) enumeration.\n configurable: true,\n enumerable: false,\n writable: true,\n });\n needToRemove = true;\n }\n}\n\n// Call install() at least once, when this module is imported.\ninstall();\n\nexport function remove() {\n if (needToRemove) {\n delete safeGlobal.process;\n needToRemove = false;\n }\n}\n","import { remove } from \"ts-invariant/process/index.js\";\nimport { Source } from 'graphql';\nexport function removeTemporaryGlobals() {\n return typeof Source === \"function\" ? remove() : remove();\n}\n//# sourceMappingURL=fix-graphql.js.map","import { invariant, InvariantError } from \"ts-invariant\";\nimport DEV from \"./DEV.js\";\nexport { DEV };\nexport function checkDEV() {\n __DEV__ ? invariant(\"boolean\" === typeof DEV, DEV) : invariant(\"boolean\" === typeof DEV, 39);\n}\nimport { removeTemporaryGlobals } from \"./fix-graphql.js\";\nremoveTemporaryGlobals();\nexport { maybe } from \"./maybe.js\";\nexport { default as global } from \"./global.js\";\nexport { invariant, InvariantError };\ncheckDEV();\n//# sourceMappingURL=index.js.map","import { invariant } from \"../globals/index.js\";\nimport { visit, BREAK, } from 'graphql';\nexport function shouldInclude(_a, variables) {\n var directives = _a.directives;\n if (!directives || !directives.length) {\n return true;\n }\n return getInclusionDirectives(directives).every(function (_a) {\n var directive = _a.directive, ifArgument = _a.ifArgument;\n var evaledValue = false;\n if (ifArgument.value.kind === 'Variable') {\n evaledValue = variables && variables[ifArgument.value.name.value];\n __DEV__ ? invariant(evaledValue !== void 0, \"Invalid variable referenced in @\".concat(directive.name.value, \" directive.\")) : invariant(evaledValue !== void 0, 40);\n }\n else {\n evaledValue = ifArgument.value.value;\n }\n return directive.name.value === 'skip' ? !evaledValue : evaledValue;\n });\n}\nexport function getDirectiveNames(root) {\n var names = [];\n visit(root, {\n Directive: function (node) {\n names.push(node.name.value);\n },\n });\n return names;\n}\nexport var hasAnyDirectives = function (names, root) { return hasDirectives(names, root, false); };\nexport var hasAllDirectives = function (names, root) { return hasDirectives(names, root, true); };\nexport function hasDirectives(names, root, all) {\n var nameSet = new Set(names);\n var uniqueCount = nameSet.size;\n visit(root, {\n Directive: function (node) {\n if (nameSet.delete(node.name.value) &&\n (!all || !nameSet.size)) {\n return BREAK;\n }\n },\n });\n return all ? !nameSet.size : nameSet.size < uniqueCount;\n}\nexport function hasClientExports(document) {\n return document && hasDirectives(['client', 'export'], document, true);\n}\nfunction isInclusionDirective(_a) {\n var value = _a.name.value;\n return value === 'skip' || value === 'include';\n}\nexport function getInclusionDirectives(directives) {\n var result = [];\n if (directives && directives.length) {\n directives.forEach(function (directive) {\n if (!isInclusionDirective(directive))\n return;\n var directiveArguments = directive.arguments;\n var directiveName = directive.name.value;\n __DEV__ ? invariant(directiveArguments && directiveArguments.length === 1, \"Incorrect number of arguments for the @\".concat(directiveName, \" directive.\")) : invariant(directiveArguments && directiveArguments.length === 1, 41);\n var ifArgument = directiveArguments[0];\n __DEV__ ? invariant(ifArgument.name && ifArgument.name.value === 'if', \"Invalid argument for the @\".concat(directiveName, \" directive.\")) : invariant(ifArgument.name && ifArgument.name.value === 'if', 42);\n var ifValue = ifArgument.value;\n __DEV__ ? invariant(ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), \"Argument for the @\".concat(directiveName, \" directive must be a variable or a boolean value.\")) : invariant(ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), 43);\n result.push({ directive: directive, ifArgument: ifArgument });\n });\n }\n return result;\n}\n//# sourceMappingURL=directives.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant, InvariantError } from \"../globals/index.js\";\nexport function getFragmentQueryDocument(document, fragmentName) {\n var actualFragmentName = fragmentName;\n var fragments = [];\n document.definitions.forEach(function (definition) {\n if (definition.kind === 'OperationDefinition') {\n throw __DEV__ ? new InvariantError(\"Found a \".concat(definition.operation, \" operation\").concat(definition.name ? \" named '\".concat(definition.name.value, \"'\") : '', \". \") +\n 'No operations are allowed when using a fragment as a query. Only fragments are allowed.') : new InvariantError(44);\n }\n if (definition.kind === 'FragmentDefinition') {\n fragments.push(definition);\n }\n });\n if (typeof actualFragmentName === 'undefined') {\n __DEV__ ? invariant(fragments.length === 1, \"Found \".concat(fragments.length, \" fragments. `fragmentName` must be provided when there is not exactly 1 fragment.\")) : invariant(fragments.length === 1, 45);\n actualFragmentName = fragments[0].name.value;\n }\n var query = __assign(__assign({}, document), { definitions: __spreadArray([\n {\n kind: 'OperationDefinition',\n operation: 'query',\n selectionSet: {\n kind: 'SelectionSet',\n selections: [\n {\n kind: 'FragmentSpread',\n name: {\n kind: 'Name',\n value: actualFragmentName,\n },\n },\n ],\n },\n }\n ], document.definitions, true) });\n return query;\n}\nexport function createFragmentMap(fragments) {\n if (fragments === void 0) { fragments = []; }\n var symTable = {};\n fragments.forEach(function (fragment) {\n symTable[fragment.name.value] = fragment;\n });\n return symTable;\n}\nexport function getFragmentFromSelection(selection, fragmentMap) {\n switch (selection.kind) {\n case 'InlineFragment':\n return selection;\n case 'FragmentSpread': {\n var fragmentName = selection.name.value;\n if (typeof fragmentMap === \"function\") {\n return fragmentMap(fragmentName);\n }\n var fragment = fragmentMap && fragmentMap[fragmentName];\n __DEV__ ? invariant(fragment, \"No fragment named \".concat(fragmentName)) : invariant(fragment, 46);\n return fragment || null;\n }\n default:\n return null;\n }\n}\n//# sourceMappingURL=fragments.js.map","import { invariant, InvariantError } from \"../globals/index.js\";\nimport { valueToObjectRepresentation } from \"./storeUtils.js\";\nexport function checkDocument(doc) {\n __DEV__ ? invariant(doc && doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\") : invariant(doc && doc.kind === 'Document', 47);\n var operations = doc.definitions\n .filter(function (d) { return d.kind !== 'FragmentDefinition'; })\n .map(function (definition) {\n if (definition.kind !== 'OperationDefinition') {\n throw __DEV__ ? new InvariantError(\"Schema type definitions not allowed in queries. Found: \\\"\".concat(definition.kind, \"\\\"\")) : new InvariantError(48);\n }\n return definition;\n });\n __DEV__ ? invariant(operations.length <= 1, \"Ambiguous GraphQL document: contains \".concat(operations.length, \" operations\")) : invariant(operations.length <= 1, 49);\n return doc;\n}\nexport function getOperationDefinition(doc) {\n checkDocument(doc);\n return doc.definitions.filter(function (definition) {\n return definition.kind === 'OperationDefinition';\n })[0];\n}\nexport function getOperationName(doc) {\n return (doc.definitions\n .filter(function (definition) {\n return definition.kind === 'OperationDefinition' && !!definition.name;\n })\n .map(function (x) { return x.name.value; })[0] || null);\n}\nexport function getFragmentDefinitions(doc) {\n return doc.definitions.filter(function (definition) {\n return definition.kind === 'FragmentDefinition';\n });\n}\nexport function getQueryDefinition(doc) {\n var queryDef = getOperationDefinition(doc);\n __DEV__ ? invariant(queryDef && queryDef.operation === 'query', 'Must contain a query definition.') : invariant(queryDef && queryDef.operation === 'query', 50);\n return queryDef;\n}\nexport function getFragmentDefinition(doc) {\n __DEV__ ? invariant(doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\") : invariant(doc.kind === 'Document', 51);\n __DEV__ ? invariant(doc.definitions.length <= 1, 'Fragment must have exactly one definition.') : invariant(doc.definitions.length <= 1, 52);\n var fragmentDef = doc.definitions[0];\n __DEV__ ? invariant(fragmentDef.kind === 'FragmentDefinition', 'Must be a fragment definition.') : invariant(fragmentDef.kind === 'FragmentDefinition', 53);\n return fragmentDef;\n}\nexport function getMainDefinition(queryDoc) {\n checkDocument(queryDoc);\n var fragmentDefinition;\n for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n var definition = _a[_i];\n if (definition.kind === 'OperationDefinition') {\n var operation = definition.operation;\n if (operation === 'query' ||\n operation === 'mutation' ||\n operation === 'subscription') {\n return definition;\n }\n }\n if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {\n fragmentDefinition = definition;\n }\n }\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n throw __DEV__ ? new InvariantError('Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.') : new InvariantError(54);\n}\nexport function getDefaultValues(definition) {\n var defaultValues = Object.create(null);\n var defs = definition && definition.variableDefinitions;\n if (defs && defs.length) {\n defs.forEach(function (def) {\n if (def.defaultValue) {\n valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);\n }\n });\n }\n return defaultValues;\n}\n//# sourceMappingURL=getFromAST.js.map","import { InvariantError } from \"../globals/index.js\";\nimport { isNonNullObject } from \"../common/objects.js\";\nimport { getFragmentFromSelection } from \"./fragments.js\";\nexport function makeReference(id) {\n return { __ref: String(id) };\n}\nexport function isReference(obj) {\n return Boolean(obj && typeof obj === 'object' && typeof obj.__ref === 'string');\n}\nexport function isDocumentNode(value) {\n return (isNonNullObject(value) &&\n value.kind === \"Document\" &&\n Array.isArray(value.definitions));\n}\nfunction isStringValue(value) {\n return value.kind === 'StringValue';\n}\nfunction isBooleanValue(value) {\n return value.kind === 'BooleanValue';\n}\nfunction isIntValue(value) {\n return value.kind === 'IntValue';\n}\nfunction isFloatValue(value) {\n return value.kind === 'FloatValue';\n}\nfunction isVariable(value) {\n return value.kind === 'Variable';\n}\nfunction isObjectValue(value) {\n return value.kind === 'ObjectValue';\n}\nfunction isListValue(value) {\n return value.kind === 'ListValue';\n}\nfunction isEnumValue(value) {\n return value.kind === 'EnumValue';\n}\nfunction isNullValue(value) {\n return value.kind === 'NullValue';\n}\nexport function valueToObjectRepresentation(argObj, name, value, variables) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n }\n else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isObjectValue(value)) {\n var nestedArgObj_1 = {};\n value.fields.map(function (obj) {\n return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n });\n argObj[name.value] = nestedArgObj_1;\n }\n else if (isVariable(value)) {\n var variableValue = (variables || {})[value.name.value];\n argObj[name.value] = variableValue;\n }\n else if (isListValue(value)) {\n argObj[name.value] = value.values.map(function (listValue) {\n var nestedArgArrayObj = {};\n valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n return nestedArgArrayObj[name.value];\n });\n }\n else if (isEnumValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isNullValue(value)) {\n argObj[name.value] = null;\n }\n else {\n throw __DEV__ ? new InvariantError(\"The inline argument \\\"\".concat(name.value, \"\\\" of kind \\\"\").concat(value.kind, \"\\\"\") +\n 'is not supported. Use variables instead of inline arguments to ' +\n 'overcome this limitation.') : new InvariantError(55);\n }\n}\nexport function storeKeyNameFromField(field, variables) {\n var directivesObj = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(function (directive) {\n directivesObj[directive.name.value] = {};\n if (directive.arguments) {\n directive.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n });\n }\n });\n }\n var argObj = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj, name, value, variables);\n });\n }\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\n 'connection',\n 'include',\n 'skip',\n 'client',\n 'rest',\n 'export',\n];\nexport var getStoreKeyName = Object.assign(function (fieldName, args, directives) {\n if (args &&\n directives &&\n directives['connection'] &&\n directives['connection']['key']) {\n if (directives['connection']['filter'] &&\n directives['connection']['filter'].length > 0) {\n var filterKeys = directives['connection']['filter']\n ? directives['connection']['filter']\n : [];\n filterKeys.sort();\n var filteredArgs_1 = {};\n filterKeys.forEach(function (key) {\n filteredArgs_1[key] = args[key];\n });\n return \"\".concat(directives['connection']['key'], \"(\").concat(stringify(filteredArgs_1), \")\");\n }\n else {\n return directives['connection']['key'];\n }\n }\n var completeFieldName = fieldName;\n if (args) {\n var stringifiedArgs = stringify(args);\n completeFieldName += \"(\".concat(stringifiedArgs, \")\");\n }\n if (directives) {\n Object.keys(directives).forEach(function (key) {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1)\n return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += \"@\".concat(key, \"(\").concat(stringify(directives[key]), \")\");\n }\n else {\n completeFieldName += \"@\".concat(key);\n }\n });\n }\n return completeFieldName;\n}, {\n setStringify: function (s) {\n var previous = stringify;\n stringify = s;\n return previous;\n },\n});\nvar stringify = function defaultStringify(value) {\n return JSON.stringify(value, stringifyReplacer);\n};\nfunction stringifyReplacer(_key, value) {\n if (isNonNullObject(value) && !Array.isArray(value)) {\n value = Object.keys(value).sort().reduce(function (copy, key) {\n copy[key] = value[key];\n return copy;\n }, {});\n }\n return value;\n}\nexport function argumentsObjectFromField(field, variables) {\n if (field.arguments && field.arguments.length) {\n var argObj_1 = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj_1, name, value, variables);\n });\n return argObj_1;\n }\n return null;\n}\nexport function resultKeyNameFromField(field) {\n return field.alias ? field.alias.value : field.name.value;\n}\nexport function getTypenameFromResult(result, selectionSet, fragmentMap) {\n var fragments;\n for (var _i = 0, _a = selectionSet.selections; _i < _a.length; _i++) {\n var selection = _a[_i];\n if (isField(selection)) {\n if (selection.name.value === '__typename') {\n return result[resultKeyNameFromField(selection)];\n }\n }\n else if (fragments) {\n fragments.push(selection);\n }\n else {\n fragments = [selection];\n }\n }\n if (typeof result.__typename === 'string') {\n return result.__typename;\n }\n if (fragments) {\n for (var _b = 0, fragments_1 = fragments; _b < fragments_1.length; _b++) {\n var selection = fragments_1[_b];\n var typename = getTypenameFromResult(result, getFragmentFromSelection(selection, fragmentMap).selectionSet, fragmentMap);\n if (typeof typename === 'string') {\n return typename;\n }\n }\n }\n}\nexport function isField(selection) {\n return selection.kind === 'Field';\n}\nexport function isInlineFragment(selection) {\n return selection.kind === 'InlineFragment';\n}\n//# sourceMappingURL=storeUtils.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant } from \"../globals/index.js\";\nimport { visit, Kind, } from 'graphql';\nimport { checkDocument, getOperationDefinition, getFragmentDefinition, getFragmentDefinitions, getMainDefinition, } from \"./getFromAST.js\";\nimport { isField } from \"./storeUtils.js\";\nimport { createFragmentMap, } from \"./fragments.js\";\nimport { isArray } from \"../common/arrays.js\";\nvar TYPENAME_FIELD = {\n kind: Kind.FIELD,\n name: {\n kind: Kind.NAME,\n value: '__typename',\n },\n};\nfunction isEmpty(op, fragmentMap) {\n return !op || op.selectionSet.selections.every(function (selection) { return selection.kind === Kind.FRAGMENT_SPREAD &&\n isEmpty(fragmentMap[selection.name.value], fragmentMap); });\n}\nfunction nullIfDocIsEmpty(doc) {\n return isEmpty(getOperationDefinition(doc) || getFragmentDefinition(doc), createFragmentMap(getFragmentDefinitions(doc)))\n ? null\n : doc;\n}\nfunction getDirectiveMatcher(directives) {\n var nameSet = new Set();\n var tests = [];\n directives.forEach(function (directive) {\n if (directive.name) {\n nameSet.add(directive.name);\n }\n else if (directive.test) {\n tests.push(directive.test);\n }\n });\n return function (directive) { return (nameSet.has(directive.name.value) ||\n tests.some(function (test) { return test(directive); })); };\n}\nfunction makeInUseGetterFunction(defaultKey) {\n var map = new Map();\n return function inUseGetterFunction(key) {\n if (key === void 0) { key = defaultKey; }\n var inUse = map.get(key);\n if (!inUse) {\n map.set(key, inUse = {\n variables: new Set,\n fragmentSpreads: new Set,\n });\n }\n return inUse;\n };\n}\nexport function removeDirectivesFromDocument(directives, doc) {\n var getInUseByOperationName = makeInUseGetterFunction(\"\");\n var getInUseByFragmentName = makeInUseGetterFunction(\"\");\n var getInUse = function (ancestors) {\n for (var p = 0, ancestor = void 0; p < ancestors.length && (ancestor = ancestors[p]); ++p) {\n if (isArray(ancestor))\n continue;\n if (ancestor.kind === Kind.OPERATION_DEFINITION) {\n return getInUseByOperationName(ancestor.name && ancestor.name.value);\n }\n if (ancestor.kind === Kind.FRAGMENT_DEFINITION) {\n return getInUseByFragmentName(ancestor.name.value);\n }\n }\n __DEV__ && invariant.error(\"Could not find operation or fragment\");\n return null;\n };\n var operationCount = 0;\n for (var i = doc.definitions.length - 1; i >= 0; --i) {\n if (doc.definitions[i].kind === Kind.OPERATION_DEFINITION) {\n ++operationCount;\n }\n }\n var directiveMatcher = getDirectiveMatcher(directives);\n var hasRemoveDirective = directives.some(function (directive) { return directive.remove; });\n var shouldRemoveField = function (nodeDirectives) { return (hasRemoveDirective &&\n nodeDirectives &&\n nodeDirectives.some(directiveMatcher)); };\n var originalFragmentDefsByPath = new Map();\n var firstVisitMadeChanges = false;\n var fieldOrInlineFragmentVisitor = {\n enter: function (node) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n },\n };\n var docWithoutDirectiveSubtrees = visit(doc, {\n Field: fieldOrInlineFragmentVisitor,\n InlineFragment: fieldOrInlineFragmentVisitor,\n VariableDefinition: {\n enter: function () {\n return false;\n },\n },\n Variable: {\n enter: function (node, _key, _parent, _path, ancestors) {\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.variables.add(node.name.value);\n }\n },\n },\n FragmentSpread: {\n enter: function (node, _key, _parent, _path, ancestors) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.fragmentSpreads.add(node.name.value);\n }\n },\n },\n FragmentDefinition: {\n enter: function (node, _key, _parent, path) {\n originalFragmentDefsByPath.set(JSON.stringify(path), node);\n },\n leave: function (node, _key, _parent, path) {\n var originalNode = originalFragmentDefsByPath.get(JSON.stringify(path));\n if (node === originalNode) {\n return node;\n }\n if (operationCount > 0 &&\n node.selectionSet.selections.every(function (selection) { return (selection.kind === Kind.FIELD &&\n selection.name.value === '__typename'); })) {\n getInUseByFragmentName(node.name.value).removed = true;\n firstVisitMadeChanges = true;\n return null;\n }\n },\n },\n Directive: {\n leave: function (node) {\n if (directiveMatcher(node)) {\n firstVisitMadeChanges = true;\n return null;\n }\n },\n },\n });\n if (!firstVisitMadeChanges) {\n return doc;\n }\n var populateTransitiveVars = function (inUse) {\n if (!inUse.transitiveVars) {\n inUse.transitiveVars = new Set(inUse.variables);\n if (!inUse.removed) {\n inUse.fragmentSpreads.forEach(function (childFragmentName) {\n populateTransitiveVars(getInUseByFragmentName(childFragmentName)).transitiveVars.forEach(function (varName) {\n inUse.transitiveVars.add(varName);\n });\n });\n }\n }\n return inUse;\n };\n var allFragmentNamesUsed = new Set();\n docWithoutDirectiveSubtrees.definitions.forEach(function (def) {\n if (def.kind === Kind.OPERATION_DEFINITION) {\n populateTransitiveVars(getInUseByOperationName(def.name && def.name.value)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n }\n else if (def.kind === Kind.FRAGMENT_DEFINITION &&\n operationCount === 0 &&\n !getInUseByFragmentName(def.name.value).removed) {\n allFragmentNamesUsed.add(def.name.value);\n }\n });\n allFragmentNamesUsed.forEach(function (fragmentName) {\n populateTransitiveVars(getInUseByFragmentName(fragmentName)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n });\n var fragmentWillBeRemoved = function (fragmentName) { return !!(!allFragmentNamesUsed.has(fragmentName) ||\n getInUseByFragmentName(fragmentName).removed); };\n var enterVisitor = {\n enter: function (node) {\n if (fragmentWillBeRemoved(node.name.value)) {\n return null;\n }\n },\n };\n return nullIfDocIsEmpty(visit(docWithoutDirectiveSubtrees, {\n FragmentSpread: enterVisitor,\n FragmentDefinition: enterVisitor,\n OperationDefinition: {\n leave: function (node) {\n if (node.variableDefinitions) {\n var usedVariableNames_1 = populateTransitiveVars(getInUseByOperationName(node.name && node.name.value)).transitiveVars;\n if (usedVariableNames_1.size < node.variableDefinitions.length) {\n return __assign(__assign({}, node), { variableDefinitions: node.variableDefinitions.filter(function (varDef) { return usedVariableNames_1.has(varDef.variable.name.value); }) });\n }\n }\n },\n },\n }));\n}\nexport var addTypenameToDocument = Object.assign(function (doc) {\n return visit(doc, {\n SelectionSet: {\n enter: function (node, _key, parent) {\n if (parent &&\n parent.kind === Kind.OPERATION_DEFINITION) {\n return;\n }\n var selections = node.selections;\n if (!selections) {\n return;\n }\n var skip = selections.some(function (selection) {\n return (isField(selection) &&\n (selection.name.value === '__typename' ||\n selection.name.value.lastIndexOf('__', 0) === 0));\n });\n if (skip) {\n return;\n }\n var field = parent;\n if (isField(field) &&\n field.directives &&\n field.directives.some(function (d) { return d.name.value === 'export'; })) {\n return;\n }\n return __assign(__assign({}, node), { selections: __spreadArray(__spreadArray([], selections, true), [TYPENAME_FIELD], false) });\n },\n },\n });\n}, {\n added: function (field) {\n return field === TYPENAME_FIELD;\n },\n});\nvar connectionRemoveConfig = {\n test: function (directive) {\n var willRemove = directive.name.value === 'connection';\n if (willRemove) {\n if (!directive.arguments ||\n !directive.arguments.some(function (arg) { return arg.name.value === 'key'; })) {\n __DEV__ && invariant.warn('Removing an @connection directive even though it does not have a key. ' +\n 'You may want to use the key parameter to specify a store key.');\n }\n }\n return willRemove;\n },\n};\nexport function removeConnectionDirectiveFromDocument(doc) {\n return removeDirectivesFromDocument([connectionRemoveConfig], checkDocument(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n return (!!selectionSet &&\n selectionSet.selections &&\n selectionSet.selections.some(function (selection) {\n return hasDirectivesInSelection(directives, selection, nestedCheck);\n }));\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n if (!isField(selection)) {\n return true;\n }\n if (!selection.directives) {\n return false;\n }\n return (selection.directives.some(getDirectiveMatcher(directives)) ||\n (nestedCheck &&\n hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck)));\n}\nfunction getArgumentMatcher(config) {\n return function argumentMatcher(argument) {\n return config.some(function (aConfig) {\n return argument.value &&\n argument.value.kind === Kind.VARIABLE &&\n argument.value.name &&\n (aConfig.name === argument.value.name.value ||\n (aConfig.test && aConfig.test(argument)));\n });\n };\n}\nexport function removeArgumentsFromDocument(config, doc) {\n var argMatcher = getArgumentMatcher(config);\n return nullIfDocIsEmpty(visit(doc, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { variableDefinitions: node.variableDefinitions ? node.variableDefinitions.filter(function (varDef) {\n return !config.some(function (arg) { return arg.name === varDef.variable.name.value; });\n }) : [] });\n },\n },\n Field: {\n enter: function (node) {\n var shouldRemoveField = config.some(function (argConfig) { return argConfig.remove; });\n if (shouldRemoveField) {\n var argMatchCount_1 = 0;\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (argMatcher(arg)) {\n argMatchCount_1 += 1;\n }\n });\n }\n if (argMatchCount_1 === 1) {\n return null;\n }\n }\n },\n },\n Argument: {\n enter: function (node) {\n if (argMatcher(node)) {\n return null;\n }\n },\n },\n }));\n}\nexport function removeFragmentSpreadFromDocument(config, doc) {\n function enter(node) {\n if (config.some(function (def) { return def.name === node.name.value; })) {\n return null;\n }\n }\n return nullIfDocIsEmpty(visit(doc, {\n FragmentSpread: { enter: enter },\n FragmentDefinition: { enter: enter },\n }));\n}\nexport function buildQueryFromSelectionSet(document) {\n var definition = getMainDefinition(document);\n var definitionOperation = definition.operation;\n if (definitionOperation === 'query') {\n return document;\n }\n var modifiedDoc = visit(document, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { operation: 'query' });\n },\n },\n });\n return modifiedDoc;\n}\nexport function removeClientSetsFromDocument(document) {\n checkDocument(document);\n var modifiedDoc = removeDirectivesFromDocument([\n {\n test: function (directive) { return directive.name.value === 'client'; },\n remove: true,\n },\n ], document);\n return modifiedDoc;\n}\n//# sourceMappingURL=transform.js.map","import { __assign, __rest as __rest_1, __spreadArray } from \"tslib\";\nimport { __rest } from \"tslib\";\nimport { mergeDeep } from \"../common/mergeDeep.js\";\nexport function concatPagination(keyArgs) {\n if (keyArgs === void 0) { keyArgs = false; }\n return {\n keyArgs: keyArgs,\n merge: function (existing, incoming) {\n return existing ? __spreadArray(__spreadArray([], existing, true), incoming, true) : incoming;\n },\n };\n}\nexport function offsetLimitPagination(keyArgs) {\n if (keyArgs === void 0) { keyArgs = false; }\n return {\n keyArgs: keyArgs,\n merge: function (existing, incoming, _a) {\n var args = _a.args;\n var merged = existing ? existing.slice(0) : [];\n if (incoming) {\n if (args) {\n var _b = args.offset, offset = _b === void 0 ? 0 : _b;\n for (var i = 0; i < incoming.length; ++i) {\n merged[offset + i] = incoming[i];\n }\n }\n else {\n merged.push.apply(merged, incoming);\n }\n }\n return merged;\n },\n };\n}\nexport function relayStylePagination(keyArgs) {\n if (keyArgs === void 0) { keyArgs = false; }\n return {\n keyArgs: keyArgs,\n read: function (existing, _a) {\n var canRead = _a.canRead, readField = _a.readField;\n if (!existing)\n return existing;\n var edges = [];\n var firstEdgeCursor = \"\";\n var lastEdgeCursor = \"\";\n existing.edges.forEach(function (edge) {\n if (canRead(readField(\"node\", edge))) {\n edges.push(edge);\n if (edge.cursor) {\n firstEdgeCursor = firstEdgeCursor || edge.cursor || \"\";\n lastEdgeCursor = edge.cursor || lastEdgeCursor;\n }\n }\n });\n if (edges.length > 1 && firstEdgeCursor === lastEdgeCursor) {\n firstEdgeCursor = \"\";\n }\n var _b = existing.pageInfo || {}, startCursor = _b.startCursor, endCursor = _b.endCursor;\n return __assign(__assign({}, getExtras(existing)), { edges: edges, pageInfo: __assign(__assign({}, existing.pageInfo), { startCursor: startCursor || firstEdgeCursor, endCursor: endCursor || lastEdgeCursor }) });\n },\n merge: function (existing, incoming, _a) {\n var args = _a.args, isReference = _a.isReference, readField = _a.readField;\n if (!existing) {\n existing = makeEmptyData();\n }\n if (!incoming) {\n return existing;\n }\n var incomingEdges = incoming.edges ? incoming.edges.map(function (edge) {\n if (isReference(edge = __assign({}, edge))) {\n edge.cursor = readField(\"cursor\", edge);\n }\n return edge;\n }) : [];\n if (incoming.pageInfo) {\n var pageInfo_1 = incoming.pageInfo;\n var startCursor = pageInfo_1.startCursor, endCursor = pageInfo_1.endCursor;\n var firstEdge = incomingEdges[0];\n var lastEdge = incomingEdges[incomingEdges.length - 1];\n if (firstEdge && startCursor) {\n firstEdge.cursor = startCursor;\n }\n if (lastEdge && endCursor) {\n lastEdge.cursor = endCursor;\n }\n var firstCursor = firstEdge && firstEdge.cursor;\n if (firstCursor && !startCursor) {\n incoming = mergeDeep(incoming, {\n pageInfo: {\n startCursor: firstCursor,\n },\n });\n }\n var lastCursor = lastEdge && lastEdge.cursor;\n if (lastCursor && !endCursor) {\n incoming = mergeDeep(incoming, {\n pageInfo: {\n endCursor: lastCursor,\n },\n });\n }\n }\n var prefix = existing.edges;\n var suffix = [];\n if (args && args.after) {\n var index = prefix.findIndex(function (edge) { return edge.cursor === args.after; });\n if (index >= 0) {\n prefix = prefix.slice(0, index + 1);\n }\n }\n else if (args && args.before) {\n var index = prefix.findIndex(function (edge) { return edge.cursor === args.before; });\n suffix = index < 0 ? prefix : prefix.slice(index);\n prefix = [];\n }\n else if (incoming.edges) {\n prefix = [];\n }\n var edges = __spreadArray(__spreadArray(__spreadArray([], prefix, true), incomingEdges, true), suffix, true);\n var pageInfo = __assign(__assign({}, incoming.pageInfo), existing.pageInfo);\n if (incoming.pageInfo) {\n var _b = incoming.pageInfo, hasPreviousPage = _b.hasPreviousPage, hasNextPage = _b.hasNextPage, startCursor = _b.startCursor, endCursor = _b.endCursor, extras = __rest_1(_b, [\"hasPreviousPage\", \"hasNextPage\", \"startCursor\", \"endCursor\"]);\n Object.assign(pageInfo, extras);\n if (!prefix.length) {\n if (void 0 !== hasPreviousPage)\n pageInfo.hasPreviousPage = hasPreviousPage;\n if (void 0 !== startCursor)\n pageInfo.startCursor = startCursor;\n }\n if (!suffix.length) {\n if (void 0 !== hasNextPage)\n pageInfo.hasNextPage = hasNextPage;\n if (void 0 !== endCursor)\n pageInfo.endCursor = endCursor;\n }\n }\n return __assign(__assign(__assign({}, getExtras(existing)), getExtras(incoming)), { edges: edges, pageInfo: pageInfo });\n },\n };\n}\nvar getExtras = function (obj) { return __rest(obj, notExtras); };\nvar notExtras = [\"edges\", \"pageInfo\"];\nfunction makeEmptyData() {\n return {\n edges: [],\n pageInfo: {\n hasPreviousPage: false,\n hasNextPage: true,\n startCursor: \"\",\n endCursor: \"\",\n },\n };\n}\n//# sourceMappingURL=pagination.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"./Observable.js\";\nimport { iterateObserversSafely } from \"./iteration.js\";\nimport { fixObservableSubclass } from \"./subclassing.js\";\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\nvar Concast = (function (_super) {\n __extends(Concast, _super);\n function Concast(sources) {\n var _this = _super.call(this, function (observer) {\n _this.addObserver(observer);\n return function () { return _this.removeObserver(observer); };\n }) || this;\n _this.observers = new Set();\n _this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n _this.handlers = {\n next: function (result) {\n if (_this.sub !== null) {\n _this.latest = [\"next\", result];\n _this.notify(\"next\", result);\n iterateObserversSafely(_this.observers, \"next\", result);\n }\n },\n error: function (error) {\n var sub = _this.sub;\n if (sub !== null) {\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n _this.latest = [\"error\", error];\n _this.reject(error);\n _this.notify(\"error\", error);\n iterateObserversSafely(_this.observers, \"error\", error);\n }\n },\n complete: function () {\n var _a = _this, sub = _a.sub, _b = _a.sources, sources = _b === void 0 ? [] : _b;\n if (sub !== null) {\n var value = sources.shift();\n if (!value) {\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n if (_this.latest &&\n _this.latest[0] === \"next\") {\n _this.resolve(_this.latest[1]);\n }\n else {\n _this.resolve();\n }\n _this.notify(\"complete\");\n iterateObserversSafely(_this.observers, \"complete\");\n }\n else if (isPromiseLike(value)) {\n value.then(function (obs) { return _this.sub = obs.subscribe(_this.handlers); });\n }\n else {\n _this.sub = value.subscribe(_this.handlers);\n }\n }\n },\n };\n _this.nextResultListeners = new Set();\n _this.cancel = function (reason) {\n _this.reject(reason);\n _this.sources = [];\n _this.handlers.complete();\n };\n _this.promise.catch(function (_) { });\n if (typeof sources === \"function\") {\n sources = [new Observable(sources)];\n }\n if (isPromiseLike(sources)) {\n sources.then(function (iterable) { return _this.start(iterable); }, _this.handlers.error);\n }\n else {\n _this.start(sources);\n }\n return _this;\n }\n Concast.prototype.start = function (sources) {\n if (this.sub !== void 0)\n return;\n this.sources = Array.from(sources);\n this.handlers.complete();\n };\n Concast.prototype.deliverLastMessage = function (observer) {\n if (this.latest) {\n var nextOrError = this.latest[0];\n var method = observer[nextOrError];\n if (method) {\n method.call(observer, this.latest[1]);\n }\n if (this.sub === null &&\n nextOrError === \"next\" &&\n observer.complete) {\n observer.complete();\n }\n }\n };\n Concast.prototype.addObserver = function (observer) {\n if (!this.observers.has(observer)) {\n this.deliverLastMessage(observer);\n this.observers.add(observer);\n }\n };\n Concast.prototype.removeObserver = function (observer) {\n if (this.observers.delete(observer) &&\n this.observers.size < 1) {\n this.handlers.complete();\n }\n };\n Concast.prototype.notify = function (method, arg) {\n var nextResultListeners = this.nextResultListeners;\n if (nextResultListeners.size) {\n this.nextResultListeners = new Set;\n nextResultListeners.forEach(function (listener) { return listener(method, arg); });\n }\n };\n Concast.prototype.beforeNext = function (callback) {\n var called = false;\n this.nextResultListeners.add(function (method, arg) {\n if (!called) {\n called = true;\n callback(method, arg);\n }\n });\n };\n return Concast;\n}(Observable));\nexport { Concast };\nfixObservableSubclass(Concast);\n//# sourceMappingURL=Concast.js.map","import { Observable } from \"./Observable.js\";\nexport function asyncMap(observable, mapFn, catchFn) {\n return new Observable(function (observer) {\n var next = observer.next, error = observer.error, complete = observer.complete;\n var activeCallbackCount = 0;\n var completed = false;\n var promiseQueue = {\n then: function (callback) {\n return new Promise(function (resolve) { return resolve(callback()); });\n },\n };\n function makeCallback(examiner, delegate) {\n if (examiner) {\n return function (arg) {\n ++activeCallbackCount;\n var both = function () { return examiner(arg); };\n promiseQueue = promiseQueue.then(both, both).then(function (result) {\n --activeCallbackCount;\n next && next.call(observer, result);\n if (completed) {\n handler.complete();\n }\n }, function (error) {\n --activeCallbackCount;\n throw error;\n }).catch(function (caught) {\n error && error.call(observer, caught);\n });\n };\n }\n else {\n return function (arg) { return delegate && delegate.call(observer, arg); };\n }\n }\n var handler = {\n next: makeCallback(mapFn, next),\n error: makeCallback(catchFn, error),\n complete: function () {\n completed = true;\n if (!activeCallbackCount) {\n complete && complete.call(observer);\n }\n },\n };\n var sub = observable.subscribe(handler);\n return function () { return sub.unsubscribe(); };\n });\n}\n//# sourceMappingURL=asyncMap.js.map","export function iterateObserversSafely(observers, method, argument) {\n var observersWithMethod = [];\n observers.forEach(function (obs) { return obs[method] && observersWithMethod.push(obs); });\n observersWithMethod.forEach(function (obs) { return obs[method](argument); });\n}\n//# sourceMappingURL=iteration.js.map","import { Observable } from \"./Observable.js\";\nimport { canUseSymbol } from \"../common/canUse.js\";\nexport function fixObservableSubclass(subclass) {\n function set(key) {\n Object.defineProperty(subclass, key, { value: Observable });\n }\n if (canUseSymbol && Symbol.species) {\n set(Symbol.species);\n }\n set(\"@@species\");\n return subclass;\n}\n//# sourceMappingURL=subclassing.js.map","/* eslint-env browser */\n\nconst bufferToHex = buffer => {\n\tconst view = new DataView(buffer);\n\n\tlet hexCodes = '';\n\tfor (let index = 0; index < view.byteLength; index += 4) {\n\t\thexCodes += view.getUint32(index).toString(16).padStart(8, '0');\n\t}\n\n\treturn hexCodes;\n};\n\nconst create = algorithm => async (buffer, {outputFormat = 'hex'} = {}) => {\n\tif (typeof buffer === 'string') {\n\t\tbuffer = new globalThis.TextEncoder().encode(buffer);\n\t}\n\n\tconst hash = await globalThis.crypto.subtle.digest(algorithm, buffer);\n\n\treturn outputFormat === 'hex' ? bufferToHex(hash) : hash;\n};\n\nexport const sha1 = create('SHA-1');\nexport const sha256 = create('SHA-256');\nexport const sha384 = create('SHA-384');\nexport const sha512 = create('SHA-512');\n","export function devAssert(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","const MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n\n case 'object':\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n\n const seenValues = [...previouslySeenValues, value];\n\n if (isJSONable(value)) {\n const jsonValue = value.toJSON(); // check for infinite recursion\n\n if (jsonValue !== value) {\n return typeof jsonValue === 'string'\n ? jsonValue\n : formatValue(jsonValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n\n if (entries.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n const properties = entries.map(\n ([key, value]) => key + ': ' + formatValue(value, seenValues),\n );\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n const remaining = array.length - len;\n const items = [];\n\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport class Location {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n constructor(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n get [Symbol.toStringTag]() {\n return 'Location';\n }\n\n toJSON() {\n return {\n start: this.start,\n end: this.end,\n };\n }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport class Token {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n *\n * Note: is undefined for punctuation tokens, but typed as string for\n * convenience in the parser.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. <SOF> is always the first node and <EOF>\n * the last.\n */\n constructor(kind, start, end, line, column, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n this.value = value;\n this.prev = null;\n this.next = null;\n }\n\n get [Symbol.toStringTag]() {\n return 'Token';\n }\n\n toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column,\n };\n }\n}\n/**\n * The list of all possible AST node types.\n */\n\n/**\n * @internal\n */\nexport const QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: [\n 'name',\n 'variableDefinitions',\n 'directives',\n 'selectionSet',\n ],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: [\n 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n 'variableDefinitions',\n 'typeCondition',\n 'directives',\n 'selectionSet',\n ],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: [\n 'description',\n 'name',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n InterfaceTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n const maybeKind =\n maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nvar OperationTypeNode;\n\n(function (OperationTypeNode) {\n OperationTypeNode['QUERY'] = 'query';\n OperationTypeNode['MUTATION'] = 'mutation';\n OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (OperationTypeNode = {}));\n\nexport { OperationTypeNode };\n","import { isWhiteSpace } from './characterClasses.mjs';\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\n\nexport function dedentBlockStringLines(lines) {\n var _firstNonEmptyLine2;\n\n let commonIndent = Number.MAX_SAFE_INTEGER;\n let firstNonEmptyLine = null;\n let lastNonEmptyLine = -1;\n\n for (let i = 0; i < lines.length; ++i) {\n var _firstNonEmptyLine;\n\n const line = lines[i];\n const indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n firstNonEmptyLine =\n (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine !== void 0\n ? _firstNonEmptyLine\n : i;\n lastNonEmptyLine = i;\n\n if (i !== 0 && indent < commonIndent) {\n commonIndent = indent;\n }\n }\n\n return lines // Remove common indentation from all lines but first.\n .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n .slice(\n (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine2 !== void 0\n ? _firstNonEmptyLine2\n : 0,\n lastNonEmptyLine + 1,\n );\n}\n\nfunction leadingWhitespace(str) {\n let i = 0;\n\n while (i < str.length && isWhiteSpace(str.charCodeAt(i))) {\n ++i;\n }\n\n return i;\n}\n/**\n * @internal\n */\n\nexport function isPrintableAsBlockString(value) {\n if (value === '') {\n return true; // empty string is printable\n }\n\n let isEmptyLine = true;\n let hasIndent = false;\n let hasCommonIndent = true;\n let seenNonEmptyLine = false;\n\n for (let i = 0; i < value.length; ++i) {\n switch (value.codePointAt(i)) {\n case 0x0000:\n case 0x0001:\n case 0x0002:\n case 0x0003:\n case 0x0004:\n case 0x0005:\n case 0x0006:\n case 0x0007:\n case 0x0008:\n case 0x000b:\n case 0x000c:\n case 0x000e:\n case 0x000f:\n return false;\n // Has non-printable characters\n\n case 0x000d:\n // \\r\n return false;\n // Has \\r or \\r\\n which will be replaced as \\n\n\n case 10:\n // \\n\n if (isEmptyLine && !seenNonEmptyLine) {\n return false; // Has leading new line\n }\n\n seenNonEmptyLine = true;\n isEmptyLine = true;\n hasIndent = false;\n break;\n\n case 9: // \\t\n\n case 32:\n // <space>\n hasIndent || (hasIndent = isEmptyLine);\n break;\n\n default:\n hasCommonIndent && (hasCommonIndent = hasIndent);\n isEmptyLine = false;\n }\n }\n\n if (isEmptyLine) {\n return false; // Has trailing empty lines\n }\n\n if (hasCommonIndent && seenNonEmptyLine) {\n return false; // Has internal indent\n }\n\n return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value, options) {\n const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n const forceLeadingNewLine =\n lines.length > 1 &&\n lines\n .slice(1)\n .every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n const hasTrailingSlash = value.endsWith('\\\\');\n const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n const printAsMultipleLines =\n !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n (!isSingleLine ||\n value.length > 70 ||\n forceTrailingNewline ||\n forceLeadingNewLine ||\n hasTrailingTripleQuotes);\n let result = ''; // Format a multi-line block quote to account for leading space.\n\n const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0));\n\n if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n result += '\\n';\n }\n\n result += escapedValue;\n\n if (printAsMultipleLines || forceTrailingNewline) {\n result += '\\n';\n }\n\n return '\"\"\"' + result + '\"\"\"';\n}\n","/**\n * ```\n * WhiteSpace ::\n * - \"Horizontal Tab (U+0009)\"\n * - \"Space (U+0020)\"\n * ```\n * @internal\n */\nexport function isWhiteSpace(code) {\n return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nexport function isDigit(code) {\n return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nexport function isLetter(code) {\n return (\n (code >= 0x0061 && code <= 0x007a) || // A-Z\n (code >= 0x0041 && code <= 0x005a) // a-z\n );\n}\n/**\n * ```\n * NameStart ::\n * - Letter\n * - `_`\n * ```\n * @internal\n */\n\nexport function isNameStart(code) {\n return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n * - Letter\n * - Digit\n * - `_`\n * ```\n * @internal\n */\n\nexport function isNameContinue(code) {\n return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n","/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind;\n\n(function (Kind) {\n Kind['NAME'] = 'Name';\n Kind['DOCUMENT'] = 'Document';\n Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n Kind['SELECTION_SET'] = 'SelectionSet';\n Kind['FIELD'] = 'Field';\n Kind['ARGUMENT'] = 'Argument';\n Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n Kind['VARIABLE'] = 'Variable';\n Kind['INT'] = 'IntValue';\n Kind['FLOAT'] = 'FloatValue';\n Kind['STRING'] = 'StringValue';\n Kind['BOOLEAN'] = 'BooleanValue';\n Kind['NULL'] = 'NullValue';\n Kind['ENUM'] = 'EnumValue';\n Kind['LIST'] = 'ListValue';\n Kind['OBJECT'] = 'ObjectValue';\n Kind['OBJECT_FIELD'] = 'ObjectField';\n Kind['DIRECTIVE'] = 'Directive';\n Kind['NAMED_TYPE'] = 'NamedType';\n Kind['LIST_TYPE'] = 'ListType';\n Kind['NON_NULL_TYPE'] = 'NonNullType';\n Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (Kind = {}));\n\nexport { Kind };\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n","/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nexport function printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n '\\\\u0000',\n '\\\\u0001',\n '\\\\u0002',\n '\\\\u0003',\n '\\\\u0004',\n '\\\\u0005',\n '\\\\u0006',\n '\\\\u0007',\n '\\\\b',\n '\\\\t',\n '\\\\n',\n '\\\\u000B',\n '\\\\f',\n '\\\\r',\n '\\\\u000E',\n '\\\\u000F',\n '\\\\u0010',\n '\\\\u0011',\n '\\\\u0012',\n '\\\\u0013',\n '\\\\u0014',\n '\\\\u0015',\n '\\\\u0016',\n '\\\\u0017',\n '\\\\u0018',\n '\\\\u0019',\n '\\\\u001A',\n '\\\\u001B',\n '\\\\u001C',\n '\\\\u001D',\n '\\\\u001E',\n '\\\\u001F',\n '',\n '',\n '\\\\\"',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 2F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 3F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 4F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\\\\\',\n '',\n '',\n '', // 5F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 6F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\u007F',\n '\\\\u0080',\n '\\\\u0081',\n '\\\\u0082',\n '\\\\u0083',\n '\\\\u0084',\n '\\\\u0085',\n '\\\\u0086',\n '\\\\u0087',\n '\\\\u0088',\n '\\\\u0089',\n '\\\\u008A',\n '\\\\u008B',\n '\\\\u008C',\n '\\\\u008D',\n '\\\\u008E',\n '\\\\u008F',\n '\\\\u0090',\n '\\\\u0091',\n '\\\\u0092',\n '\\\\u0093',\n '\\\\u0094',\n '\\\\u0095',\n '\\\\u0096',\n '\\\\u0097',\n '\\\\u0098',\n '\\\\u0099',\n '\\\\u009A',\n '\\\\u009B',\n '\\\\u009C',\n '\\\\u009D',\n '\\\\u009E',\n '\\\\u009F',\n];\n","import { printBlockString } from './blockString.mjs';\nimport { printString } from './printString.mjs';\nimport { visit } from './visitor.mjs';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, printDocASTReducer);\n}\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n Name: {\n leave: (node) => node.value,\n },\n Variable: {\n leave: (node) => '$' + node.name,\n },\n // Document\n Document: {\n leave: (node) => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join(\n [\n node.operation,\n join([node.name, varDefs]),\n join(node.directives, ' '),\n ],\n ' ',\n ); // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) =>\n variable +\n ': ' +\n type +\n wrap(' = ', defaultValue) +\n wrap(' ', join(directives, ' ')),\n },\n SelectionSet: {\n leave: ({ selections }) => block(selections),\n },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) =>\n '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) =>\n join(\n [\n '...',\n wrap('on ', typeCondition),\n join(directives, ' '),\n selectionSet,\n ],\n ' ',\n ),\n },\n FragmentDefinition: {\n leave: (\n { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n ) =>\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: {\n leave: ({ value }) => value,\n },\n FloatValue: {\n leave: ({ value }) => value,\n },\n StringValue: {\n leave: ({ value, block: isBlockString }) =>\n isBlockString ? printBlockString(value) : printString(value),\n },\n BooleanValue: {\n leave: ({ value }) => (value ? 'true' : 'false'),\n },\n NullValue: {\n leave: () => 'null',\n },\n EnumValue: {\n leave: ({ value }) => value,\n },\n ListValue: {\n leave: ({ values }) => '[' + join(values, ', ') + ']',\n },\n ObjectValue: {\n leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n },\n ObjectField: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) =>\n '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: {\n leave: ({ name }) => name,\n },\n ListType: {\n leave: ({ type }) => '[' + type + ']',\n },\n NonNullType: {\n leave: ({ type }) => type + '!',\n },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ description, directives, operationTypes }) =>\n wrap('', description, '\\n') +\n join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') +\n join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n FieldDefinition: {\n leave: ({ description, name, arguments: args, type, directives }) =>\n wrap('', description, '\\n') +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ description, name, type, defaultValue, directives }) =>\n wrap('', description, '\\n') +\n join(\n [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n ' ',\n ),\n },\n InterfaceTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeDefinition: {\n leave: ({ description, name, directives, types }) =>\n wrap('', description, '\\n') +\n join(\n ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n ' ',\n ),\n },\n EnumTypeDefinition: {\n leave: ({ description, name, directives, values }) =>\n wrap('', description, '\\n') +\n join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ description, name, directives, fields }) =>\n wrap('', description, '\\n') +\n join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ description, name, arguments: args, repeatable, locations }) =>\n wrap('', description, '\\n') +\n 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) =>\n join(\n ['extend schema', join(directives, ' '), block(operationTypes)],\n ' ',\n ),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) =>\n join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) =>\n join(\n [\n 'extend union',\n name,\n join(directives, ' '),\n wrap('= ', join(types, ' | ')),\n ],\n ' ',\n ),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) =>\n join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) =>\n join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.filter((x) => x).join(separator)) !== null &&\n _maybeArray$filter$jo !== void 0\n ? _maybeArray$filter$jo\n : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n return maybeString != null && maybeString !== ''\n ? start + maybeString + end\n : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n var _maybeArray$some;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n return (_maybeArray$some =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n _maybeArray$some !== void 0\n ? _maybeArray$some\n : false;\n}\n","import { inspect } from './inspect.mjs';\n/* c8 ignore next 3 */\n\nconst isProduction =\n globalThis.process && // eslint-disable-next-line no-undef\n process.env.NODE_ENV === 'production';\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\n\nexport const instanceOf =\n /* c8 ignore next 6 */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n isProduction\n ? function instanceOf(value, constructor) {\n return value instanceof constructor;\n }\n : function instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (typeof value === 'object' && value !== null) {\n var _value$constructor;\n\n // Prefer Symbol.toStringTag since it is immune to minification.\n const className = constructor.prototype[Symbol.toStringTag];\n const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n ? value[Symbol.toStringTag]\n : (_value$constructor = value.constructor) === null ||\n _value$constructor === void 0\n ? void 0\n : _value$constructor.name;\n\n if (className === valueClassName) {\n const stringifiedValue = inspect(value);\n throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n }\n }\n\n return false;\n };\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport class Source {\n constructor(\n body,\n name = 'GraphQL request',\n locationOffset = {\n line: 1,\n column: 1,\n },\n ) {\n typeof body === 'string' ||\n devAssert(false, `Body must be a string. Received: ${inspect(body)}.`);\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 ||\n devAssert(\n false,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n this.locationOffset.column > 0 ||\n devAssert(\n false,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'Source';\n }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { isNode, QueryDocumentKeys } from './ast.mjs';\nimport { Kind } from './kinds.mjs';\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport const BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\n\nexport function visit(root, visitor, visitorKeys = QueryDocumentKeys) {\n const enterLeaveMap = new Map();\n\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n /* eslint-disable no-undef-init */\n\n let stack = undefined;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = undefined;\n let parent = undefined;\n const path = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties(\n {},\n Object.getOwnPropertyDescriptors(node),\n );\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === undefined) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n isNode(node) || devAssert(false, `Invalid AST Node: ${inspect(node)}.`);\n const visitFn = isLeaving\n ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get === void 0\n ? void 0\n : _enterLeaveMap$get.leave\n : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get2 === void 0\n ? void 0\n : _enterLeaveMap$get2.enter;\n result =\n visitFn === null || visitFn === void 0\n ? void 0\n : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack,\n };\n inArray = Array.isArray(node);\n keys = inArray\n ? node\n : (_node$kind = visitorKeys[node.kind]) !== null &&\n _node$kind !== void 0\n ? _node$kind\n : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits[edits.length - 1][1];\n }\n\n return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor || (hasVisitor = enter != null || leave != null);\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave = {\n enter(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _enterList$i;\n\n const result =\n (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n ? void 0\n : _enterList$i.apply(visitors[i], args);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n\n leave(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _leaveList$i;\n\n const result =\n (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n ? void 0\n : _leaveList$i.apply(visitors[i], args);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nexport function getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return {\n enter: kindVisitor,\n leave: undefined,\n };\n } // { enter() {}, leave() {} }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave,\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n return isLeaving ? leave : enter;\n}\n","function promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\nfunction createStore(dbName, storeName) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = promisifyRequest(request);\n return (txMode, callback) => dbp.then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n }\n return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic – if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n entries.forEach((entry) => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => \n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n }\n catch (err) {\n reject(err);\n }\n };\n }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Delete multiple keys at once.\n *\n * @param keys List of keys to delete.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction delMany(keys, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n keys.forEach((key) => store.delete(key));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\nfunction eachCursor(store, callback) {\n store.openCursor().onsuccess = function () {\n if (!this.result)\n return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAllKeys) {\n return promisifyRequest(store.getAllKeys());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.key)).then(() => items);\n });\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAll) {\n return promisifyRequest(store.getAll());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.value)).then(() => items);\n });\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n // (although, hopefully we'll get a simpler path some day)\n if (store.getAll && store.getAllKeys) {\n return Promise.all([\n promisifyRequest(store.getAllKeys()),\n promisifyRequest(store.getAll()),\n ]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));\n }\n const items = [];\n return customStore('readonly', (store) => eachCursor(store, (cursor) => items.push([cursor.key, cursor.value])).then(() => items));\n });\n}\n\nexport { clear, createStore, del, delMany, entries, get, getMany, keys, promisifyRequest, set, setMany, update, values };\n","import{createContext as n,Component as t,toChildArray as r,cloneElement as i,h as o}from\"preact\";import{useContext as e,useState as u,useEffect as f}from\"preact/hooks\";var a={};function c(n,t){for(var r in t)n[r]=t[r];return n}function s(n,t,r){var i,o=/(?:\\?([^#]*))?(#.*)?$/,e=n.match(o),u={};if(e&&e[1])for(var f=e[1].split(\"&\"),c=0;c<f.length;c++){var s=f[c].split(\"=\");u[decodeURIComponent(s[0])]=decodeURIComponent(s.slice(1).join(\"=\"))}n=d(n.replace(o,\"\")),t=d(t||\"\");for(var h=Math.max(n.length,t.length),v=0;v<h;v++)if(t[v]&&\":\"===t[v].charAt(0)){var l=t[v].replace(/(^:|[+*?]+$)/g,\"\"),p=(t[v].match(/[+*?]+$/)||a)[0]||\"\",m=~p.indexOf(\"+\"),y=~p.indexOf(\"*\"),U=n[v]||\"\";if(!U&&!y&&(p.indexOf(\"?\")<0||m)){i=!1;break}if(u[l]=decodeURIComponent(U),m||y){u[l]=n.slice(v).map(decodeURIComponent).join(\"/\");break}}else if(t[v]!==n[v]){i=!1;break}return(!0===r.default||!1!==i)&&u}function h(n,t){return n.rank<t.rank?1:n.rank>t.rank?-1:n.index-t.index}function v(n,t){return n.index=t,n.rank=function(n){return n.props.default?0:d(n.props.path).map(l).join(\"\")}(n),n.props}function d(n){return n.replace(/(^\\/+|\\/+$)/g,\"\").split(\"/\")}function l(n){return\":\"==n.charAt(0)?1+\"*+?\".indexOf(n.charAt(n.length-1))||4:5}var p={},m=[],y=[],U=null,g={url:R()},k=n(g);function C(){var n=e(k);if(n===g){var t=u()[1];f(function(){return y.push(t),function(){return y.splice(y.indexOf(t),1)}},[])}return[n,$]}function R(){var n;return\"\"+((n=U&&U.location?U.location:U&&U.getCurrentLocation?U.getCurrentLocation():\"undefined\"!=typeof location?location:p).pathname||\"\")+(n.search||\"\")}function $(n,t){return void 0===t&&(t=!1),\"string\"!=typeof n&&n.url&&(t=n.replace,n=n.url),function(n){for(var t=m.length;t--;)if(m[t].canRoute(n))return!0;return!1}(n)&&function(n,t){void 0===t&&(t=\"push\"),U&&U[t]?U[t](n):\"undefined\"!=typeof history&&history[t+\"State\"]&&history[t+\"State\"](null,null,n)}(n,t?\"replace\":\"push\"),I(n)}function I(n){for(var t=!1,r=0;r<m.length;r++)m[r].routeTo(n)&&(t=!0);return t}function M(n){if(n&&n.getAttribute){var t=n.getAttribute(\"href\"),r=n.getAttribute(\"target\");if(t&&t.match(/^\\//g)&&(!r||r.match(/^_?self$/i)))return $(t)}}function b(n){return n.stopImmediatePropagation&&n.stopImmediatePropagation(),n.stopPropagation&&n.stopPropagation(),n.preventDefault(),!1}function W(n){if(!(n.ctrlKey||n.metaKey||n.altKey||n.shiftKey||n.button)){var t=n.target;do{if(\"a\"===t.localName&&t.getAttribute(\"href\")){if(t.hasAttribute(\"data-native\")||t.hasAttribute(\"native\"))return;if(M(t))return b(n)}}while(t=t.parentNode)}}var w=!1;function D(n){n.history&&(U=n.history),this.state={url:n.url||R()}}c(D.prototype=new t,{shouldComponentUpdate:function(n){return!0!==n.static||n.url!==this.props.url||n.onChange!==this.props.onChange},canRoute:function(n){var t=r(this.props.children);return void 0!==this.g(t,n)},routeTo:function(n){this.setState({url:n});var t=this.canRoute(n);return this.p||this.forceUpdate(),t},componentWillMount:function(){this.p=!0},componentDidMount:function(){var n=this;w||(w=!0,U||addEventListener(\"popstate\",function(){I(R())}),addEventListener(\"click\",W)),m.push(this),U&&(this.u=U.listen(function(t){var r=t.location||t;n.routeTo(\"\"+(r.pathname||\"\")+(r.search||\"\"))})),this.p=!1},componentWillUnmount:function(){\"function\"==typeof this.u&&this.u(),m.splice(m.indexOf(this),1)},componentWillUpdate:function(){this.p=!0},componentDidUpdate:function(){this.p=!1},g:function(n,t){n=n.filter(v).sort(h);for(var r=0;r<n.length;r++){var i=n[r],o=s(t,i.props.path,i.props);if(o)return[i,o]}},render:function(n,t){var e,u,f=n.onChange,a=t.url,s=this.c,h=this.g(r(n.children),a);if(h&&(u=i(h[0],c(c({url:a,matches:e=h[1]},e),{key:void 0,ref:void 0}))),a!==(s&&s.url)){c(g,s=this.c={url:a,previous:s&&s.url,current:u,path:u?u.props.path:null,matches:e}),s.router=this,s.active=u?[u]:[];for(var v=y.length;v--;)y[v]({});\"function\"==typeof f&&f(s)}return o(k.Provider,{value:s},u)}});var E=function(n){return o(\"a\",c({onClick:W},n))},L=function(n){return o(n.component,n)};export{E as Link,L as Route,D as Router,D as default,s as exec,R as getCurrentUrl,$ as route,C as useRouter};\n//# sourceMappingURL=preact-router.module.js.map\n","import{h as a}from\"preact\";import{useRouter as t,exec as r,Link as e}from\"preact-router\";var s=[\"className\",\"activeClass\",\"activeClassName\",\"path\"];function l(a){var e=t()[0];return a.children({url:e.url,path:e.path,matches:!1!==r(e.path||e.url,a.path,{})})}function c(l){var c=l.className,n=l.activeClass,u=l.activeClassName,i=l.path,p=function(a,t){if(null==a)return{};var r,e,s={},l=Object.keys(a);for(e=0;e<l.length;e++)t.indexOf(r=l[e])>=0||(s[r]=a[r]);return s}(l,s),h=t()[0],f=i&&h.path&&r(h.path,i,{})||r(h.url,p.href,{}),o=p.class||c||\"\",m=f&&(n||u)||\"\";return p.class=o+(o&&m&&\" \")+m,a(e,p)}export{c as Link,l as Match,l as default};\n","import { __extends } from \"tslib\";\nvar genericMessage = \"Invariant Violation\";\nvar _a = Object.setPrototypeOf, setPrototypeOf = _a === void 0 ? function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n} : _a;\nvar InvariantError = /** @class */ (function (_super) {\n __extends(InvariantError, _super);\n function InvariantError(message) {\n if (message === void 0) { message = genericMessage; }\n var _this = _super.call(this, typeof message === \"number\"\n ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\"\n : message) || this;\n _this.framesToPop = 1;\n _this.name = genericMessage;\n setPrototypeOf(_this, InvariantError.prototype);\n return _this;\n }\n return InvariantError;\n}(Error));\nexport { InvariantError };\nexport function invariant(condition, message) {\n if (!condition) {\n throw new InvariantError(message);\n }\n}\nvar verbosityLevels = [\"debug\", \"log\", \"warn\", \"error\", \"silent\"];\nvar verbosityLevel = verbosityLevels.indexOf(\"log\");\nfunction wrapConsoleMethod(name) {\n return function () {\n if (verbosityLevels.indexOf(name) >= verbosityLevel) {\n // Default to console.log if this host environment happens not to provide\n // all the console.* methods we need.\n var method = console[name] || console.log;\n return method.apply(console, arguments);\n }\n };\n}\n(function (invariant) {\n invariant.debug = wrapConsoleMethod(\"debug\");\n invariant.log = wrapConsoleMethod(\"log\");\n invariant.warn = wrapConsoleMethod(\"warn\");\n invariant.error = wrapConsoleMethod(\"error\");\n})(invariant || (invariant = {}));\nexport function setVerbosity(level) {\n var old = verbosityLevels[verbosityLevel];\n verbosityLevel = Math.max(0, verbosityLevels.indexOf(level));\n return old;\n}\nexport default invariant;\n//# sourceMappingURL=invariant.js.map","/******************************************************************************\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, Iterator */\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 = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\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, inner;\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 if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\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 var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\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","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n var _proto = Subscription.prototype;\n\n _proto.unsubscribe = function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n };\n\n _createClass(Subscription, [{\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = /*#__PURE__*/function () {\n function SubscriptionObserver(subscription) {\n this._subscription = subscription;\n }\n\n var _proto2 = SubscriptionObserver.prototype;\n\n _proto2.next = function next(value) {\n onNotify(this._subscription, 'next', value);\n };\n\n _proto2.error = function error(value) {\n onNotify(this._subscription, 'error', value);\n };\n\n _proto2.complete = function complete() {\n onNotify(this._subscription, 'complete');\n };\n\n _createClass(SubscriptionObserver, [{\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = /*#__PURE__*/function () {\n function Observable(subscriber) {\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n var _proto3 = Observable.prototype;\n\n _proto3.subscribe = function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n };\n\n _proto3.forEach = function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n };\n\n _proto3.map = function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.filter = function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.reduce = function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n };\n\n _proto3.concat = function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n };\n\n _proto3.flatMap = function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n };\n\n _proto3[SymbolObservable] = function () {\n return this;\n };\n\n Observable.from = function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var _iterator = _createForOfIteratorHelperLoose(method.call(x)), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n observer.next(item);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n };\n\n Observable.of = function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n };\n\n _createClass(Observable, null, [{\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}\n\nexport { Observable };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(31934);\n"],"names":["composeWithDevTools","_len","arguments","length","funcs","Array","_key","compose","devToolsEnhancer","noop","objectKeys","Object","keys","obj","key","hasOwnProperty","call","push","enhancer","options","config","features","pause","export","test","type","undefined","autoPause","latency","createStore","reducer","preloadedState","store","origDispatch","dispatch","devTools","window","__REDUX_DEVTOOLS_EXTENSION__","connect","init","getState","action","r","send","assign","newKey","newValue","copy","i","l","composeWithEnhancer","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","objectToString","prototype","toString","isError","wat","isInstanceOf","Error","isBuiltin","className","isErrorEvent","isDOMError","isString","isPlainObject","isEvent","Event","isThenable","Boolean","then","base","_e","WINDOW","DEFAULT_MAX_STRING_LENGTH","htmlTreeAsString","elem","currentElem","MAX_TRAVERSE_HEIGHT","out","height","len","separator","sepLength","nextStr","keyAttrs","isArray","maxStringLength","_htmlElementAsString","parentNode","reverse","join","_oO","el","classes","attr","tagName","toLowerCase","keyAttrPairs","filter","keyAttr","getAttribute","map","forEach","keyAttrPair","id","split","allowedAttrs","truncate","str","max","slice","safeJoin","input","delimiter","output","value","String","e","stringMatchesSomePattern","testString","patterns","requireExactStringMatch","some","pattern","includes","isMatchingPattern","fill","source","name","replacementFactory","original","wrapped","markFunctionWrapped","_Oo","addNonEnumerableProperty","defineProperty","writable","configurable","proto","getOriginalFunction","func","__sentry_original__","convertToPlainObject","message","stack","getOwnProperties","newObj","target","serializeEventTarget","currentTarget","CustomEvent","detail","Element","extractedProps","property","dropUndefinedKeys","inputValue","_dropUndefinedKeys","Map","memoizationMap","memoVal","get","returnValue","set","item","originalFunctionToString","FunctionToString","constructor","__init","this","static","setupOnce","Function","args","context","apply","__initStatic","CONSOLE_LEVELS","consoleSandbox","callback","originalConsole","console","wrappedLevels","level","originalWrappedFunc","makeLogger","enabled","logger","enable","disable","__SENTRY_DEBUG__","gbl","crypto","msCrypto","randomUUID","replace","getRandomByte","getRandomValues","Uint8Array","Math","random","c","getFirstException","event","exception","values","getEventDescription","event_id","eventId","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","mechanism","handled","mergedData","data","checkOrSetAlreadyCaught","__sentry_captured__","err","arrayify","maybeArray","DEFAULT_IGNORE_ERRORS","DEFAULT_IGNORE_TRANSACTIONS","InboundFilters","_options","addGlobalEventProcessor","getCurrentHub","eventProcess","hub","self","getIntegration","client","getClient","clientOptions","getOptions","internalOptions","allowUrls","denyUrls","ignoreErrors","disableErrorDefaults","ignoreTransactions","disableTransactionDefaults","ignoreInternal","_mergeOptions","_isSentryError","warn","oO","error","_getPossibleEventMessages","_isIgnoredError","transaction","_isIgnoredTransaction","url","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","_shouldDropEvent","frames","stacktrace","frame","filename","_getLastValidUrl","DEFAULT_ENVIRONMENT","States","resolvedSyncPromise","SyncPromise","resolve","rejectedSyncPromise","reason","_","reject","_state","PENDING","__init2","_handlers","executor","__init3","__init4","__init5","__init6","_resolve","_reject","onfulfilled","onrejected","result","_executeHandlers","catch","val","finally","onfinally","isRejected","_setResult","RESOLVED","REJECTED","state","_value","cachedHandlers","handler","updateSession","session","user","ipAddress","ip_address","did","email","username","timestamp","ignoreDuration","sid","started","duration","release","environment","userAgent","errors","status","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","generatePropagationContext","scope","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","addEventProcessor","setUser","_notifyScopeListeners","getUser","getRequestSession","setRequestSession","requestSession","setTags","tags","setTag","setExtras","extras","setExtra","extra","setFingerprint","fingerprint","setLevel","setTransactionName","setContext","setSpan","span","getSpan","getTransaction","setSession","getSession","update","captureContext","updatedScope","contexts","propagationContext","clear","addBreadcrumb","breadcrumb","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","getLastBreadcrumb","clearBreadcrumbs","addAttachment","attachment","getAttachments","clearAttachments","applyToEvent","hint","trace","getTraceContext","sdkProcessingMetadata","dynamicSamplingContext","getDynamicSamplingContext","transactionName","_applyFingerprint","breadcrumbs","_notifyEventProcessors","getGlobalEventProcessors","setSDKProcessingMetadata","newData","setPropagationContext","getPropagationContext","processors","index","processor","log","final","concat","traceId","spanId","substring","sampled","API_VERSION","DEFAULT_BREADCRUMBS","Hub","_version","_stack","bindClient","isOlderThan","version","getStackTop","setupIntegrations","pushScope","clone","getScope","getStack","popScope","pop","withScope","captureException","_lastEventId","syntheticException","_withClient","originalException","captureMessage","captureEvent","lastEventId","beforeBreadcrumb","finalBreadcrumb","emit","configureScope","run","oldHub","makeMain","integration","startTransaction","customSamplingContext","_callExtensionMethod","traceHeaders","captureSession","endSession","_sendSessionUpdate","closeSession","startSession","navigator","startingTime","toJSON","Date","toISOString","attrs","user_agent","sessionToJSON","makeSession","currentSession","shouldSendDefaultPii","sendDefaultPii","method","sentry","getMainCarrier","__SENTRY__","extensions","registry","getHubFromCarrier","setHubOnCarrier","acs","carrier","getGlobalHub","DSN_REGEX","dsnToString","dsn","withPassword","host","path","pass","port","projectId","protocol","publicKey","dsnFromString","match","exec","lastPath","projectMatch","dsnFromComponents","components","makeDsn","from","find","component","isValidProtocol","isNaN","parseInt","validateDsn","STACKTRACE_FRAME_LIMIT","WEBPACK_ERROR_REGEXP","createStackParser","parsers","sortedParsers","sort","a","b","p","skipFirst","lines","line","cleanedLine","parser","localStack","lastFrameFunction","function","firstFrameFunction","stripSentryFramesAndReverse","defaultFunctionName","getFunctionName","fn","normalize","depth","maxProperties","visit","ERROR","normalizeToSize","object","maxSize","normalized","encodeURI","utf8Length","JSON","stringify","memo","hasWeakSet","WeakSet","inner","has","add","delete","splice","memoBuilder","memoize","unmemoize","stringified","_events","g","document","objName","getPrototypeOf","getConstructorName","stringifyValue","startsWith","remainingDepth","valueWithToJSON","numAdded","visitable","visitKey","visitValue","createEnvelope","headers","items","addItemToEnvelope","envelope","newItem","forEachEnvelopeItem","envelopeItems","envelopeItem","encodeUTF8","textEncoder","TextEncoder","encode","serializeEnvelope","envHeaders","parts","append","next","itemHeaders","payload","stringifiedPayload","buffers","totalLength","reduce","acc","buf","merged","offset","buffer","concatBuffers","createAttachmentEnvelopeItem","content_type","contentType","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","profile","replay_event","replay_recording","check_in","envelopeItemTypeToDataCategory","getSdkMetadataForEnvelopeHeader","metadataOrEvent","sdk","createEventEnvelopeHeaders","sdkInfo","tunnel","sent_at","filenameMetadataMap","parsedStacks","Set","getMetadataForUrl","_sentryModuleMetadata","metadata","ensureMetadataStacksAreParsed","ModuleMetadata","on","module_metadata","stripMetadataFromStackFrames","stackParser","addMetadataToStackFrames","SDK_VERSION","hasTracingEnabled","maybeOptions","__SENTRY_TRACING__","enableTracing","supportsFetch","Headers","Request","Response","isNativeFetch","SENTRY_XHR_DATA_KEY","handlers","instrumented","addInstrumentationHandler","originalConsoleMethod","triggerHandlers","triggerDOMHandler","bind","globalDOMEventHandler","makeDOMEventHandler","addEventListener","originalAddEventListener","listener","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","instrumentDOM","xhrproto","XMLHttpRequest","originalOpen","xhrInfo","toUpperCase","request_headers","__sentry_own_request__","onreadystatechangeHandler","readyState","status_code","endTimestamp","now","startTimestamp","xhr","onreadystatechange","readyStateArgs","setRequestHeaderArgs","header","originalSend","sentryXhrData","body","instrumentXHR","fetch","doc","sandbox","createElement","hidden","head","appendChild","contentWindow","removeChild","supportsNativeFetch","originalFetch","fetchArgs","getUrlFromResource","hasProp","arg","parseFetchArgs","handlerData","fetchData","response","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","history","pushState","replaceState","supportsHistory","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","lastHref","to","location","href","instrumentHistory","_oldOnErrorHandler","onerror","msg","column","__SENTRY_LOADER__","__SENTRY_INSTRUMENTED__","_oldOnUnhandledRejectionHandler","onunhandledrejection","instrument","prop","resource","debounceDuration","debounceTimerID","lastCapturedEvent","globalListener","isContentEditable","shouldSkipDOMEvent","previous","current","shouldShortcircuitPreviousDebounce","global","clearTimeout","setTimeout","getActiveTransaction","maybeHub","errorsInstrumented","errorCallback","activeTransaction","setStatus","tag","BAGGAGE_HEADER_NAME","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","MAX_BAGGAGE_STRING_LENGTH","dynamicSamplingContextToSentryBaggageHeader","entries","baggageHeader","objectKey","objectValue","currentIndex","baggageEntry","encodeURIComponent","newBaggageHeader","objectToBaggageHeader","dscKey","dscValue","baggageHeaderToObject","keyOrValue","decodeURIComponent","trim","TRACEPARENT_REGEXP","RegExp","extractTraceparentData","traceparent","matches","parentSampled","parentSpanId","generateSentryTraceHeader","sampledString","SpanRecorder","spans","maxlen","_maxlen","spanRecorder","Span","__init7","instrumenter","spanContext","op","description","startChild","childSpan","logMessage","spanMetadata","setData","setHttpStatus","httpStatus","spanStatus","spanStatusfromHttpCode","isSuccess","finish","toTraceparent","toContext","updateWithContext","parent_span_id","span_id","trace_id","start_timestamp","getDynamicSamplingContextFromClient","public_key","getDsn","segment","user_segment","dsc","Transaction","_measurements","_frozenDynamicSamplingContext","transactionContext","super","_hub","_name","_trimEnd","trimEnd","incomingDynamicSamplingContext","newName","setName","initSpanRecorder","setMeasurement","unit","setMetadata","newMetadata","recordDroppedEvent","finishedSpans","s","prev","transaction_info","measurements","maybeSampleRate","sampleRate","sample_rate","setHub","TRACING_DEFAULTS","idleTimeout","finalTimeout","heartbeatInterval","IDLE_TRANSACTION_FINISH_REASONS","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","IdleTransaction","activities","_heartbeatCounter","_finished","_idleTimeoutCanceledPermanently","_beforeFinishCallbacks","_finishReason","_idleHub","_idleTimeout","_finalTimeout","_heartbeatInterval","_onScope","_restartIdleTimeout","keepSpan","registerBeforeFinishCallback","pushActivity","popActivity","_pingHeartbeat","cancelIdleTimeout","restartOnChildSpanChange","_idleTimeoutID","setFinishReason","_beat","heartbeatString","_prevHeartbeatString","sample","samplingContext","Number","tracesSampler","tracesSampleRate","rate","_startTransaction","configInstrumenter","transactionInstrumenter","_experiments","startIdleTransaction","onScope","addTracingExtensions","SentryError","logLevel","setPrototypeOf","DEFAULT_RETRY_AFTER","parseRetryAfterHeader","headerDelay","headerDate","parse","DEFAULT_TRANSPORT_BUFFER_SIZE","createTransport","makeRequest","limit","remove","task","indexOf","$","taskProducer","drain","timeout","counter","capturedSetTimeout","makePromiseBuffer","bufferSize","rateLimits","filteredEnvelopeItems","envelopeItemDataCategory","limits","category","all","disabledUntil","isRateLimited","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","statusCode","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","delay","updateRateLimits","__sentry__baseTransport__","flush","SENTRY_API_VERSION","getBaseApiEndpoint","getEnvelopeEndpointWithUrlEncodedAuth","tunnelOrOptions","_metadata","_getIngestEndpoint","sentry_key","sentry_version","sentry_client","_encodedAuth","eventFromEnvelope","env","types","makeMultiplexedTransport","matcher","fallbackTransport","otherTransports","getTransport","validatedDsn","transport","async","makeOverrideReleaseTransport","transports","getEvent","eventTypes","t","Promise","allTransports","every","onError","ctx","parentSpan","activeSpan","getActiveSpan","finishAndSetSpan","maybePromiseResult","ignoreOnError","shouldIgnoreOnError","wrap","before","wrapper","__sentry_wrapped__","sentryWrapped","wrappedArguments","ex","getOwnPropertyDescriptor","installedIntegrations","getIntegrationsToSetup","defaultIntegrations","userIntegrations","integrations","isDefaultInstance","finalIntegrations","integrationsByName","currentInstance","existingInstance","k","filterDuplicates","debugIndex","arr","findIndex","debugInstance","setupIntegration","integrationIndex","prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","dist","maxValueLength","request","applyClientOptions","integrationNames","applyIntegrationsMetadata","debugIdMap","_sentryDebugIds","debugIdStackFramesCache","cachedDebugIdStackFrameCache","debugIdStackParserCache","filenameDebugIdMap","debugIdStackTrace","parsedStack","cachedParsedStack","stackFrame","debug_id","applyDebugIds","finalScope","attachments","evt","abs_path","debug_meta","images","code_file","applyDebugMeta","maxBreadth","normalizeEvent","WeakMap","ALREADY_SEEN_ERROR","BaseClient","_integrations","_integrationsInitialized","_numProcessing","_outcomes","_hooks","_dsn","_transport","transportOptions","_process","eventFromException","_captureEvent","promisedEvent","eventFromMessage","_isEnabled","sendSession","getSdkMetadata","_isClientDoneProcessing","clientFinished","transportFlushed","close","getIntegrationById","integrationId","addIntegration","sendEvent","eventType","packages","enhanceEventWithSdkInfo","envelopeHeaders","createEventEnvelope","promise","_sendEnvelope","sendResponse","createSessionEnvelope","_event","sendClientReports","hook","rest","_updateSessionFromEvent","crashed","errored","exceptions","sessionNonTerminal","ticked","interval","setInterval","clearInterval","_prepareEvent","_processEvent","finalEvent","sentryError","isTransaction","isTransactionEvent","beforeSendLabel","dataCategory","__sentry__","beforeSend","beforeSendTransaction","processBeforeSend","beforeSendResult","invalidValueError","_validateBeforeSendResult","processedEvent","transactionInfo","_clearOutcomes","outcomes","quantity","exceptionFromError","parseStackFrames","extractMessage","eventFromError","popSize","framesToPop","reactMinifiedRegexp","getPopSize","attachStacktrace","eventFromUnknownInput","eventFromString","isUnhandledRejection","domException","code","getNonErrorObjectExceptionValue","__serialized__","eventFromPlainObject","synthetic","maxLength","includedKeys","serialized","extractExceptionKeysForMessage","captureType","getObjectClassName","validSeverityLevels","parseUrl","query","fragment","search","hash","relative","getNumberOfUrlSegments","BREADCRUMB_INTEGRATION_ID","Breadcrumbs","dom","_consoleBreadcrumb","serializeAttribute","_isEvent","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","addSentryBreadcrumb","parsedLoc","parsedFrom","parsedTo","createUserFeedbackEnvelope","feedback","createUserFeedbackEnvelopeItem","BrowserClient","sdkSource","SENTRY_SDK_SOURCE","visibilityState","_flushOutcomes","breadcrumbIntegration","captureUserFeedback","platform","discarded_events","cachedFetchImpl","makeFetchTransport","nativeFetch","fetchImpl","getNativeFetchImplementation","pendingBodySize","pendingCount","requestSize","requestOptions","referrerPolicy","keepalive","fetchOptions","XHR_READYSTATE_DONE","makeXHRTransport","getResponseHeader","open","setRequestHeader","UNKNOWN_FUNCTION","createFrame","lineno","colno","in_app","chromeRegex","chromeEvalRegex","chromeStackLineParser","subMatch","extractSafariExtensionDetails","geckoREgex","geckoEvalRegex","geckoStackLineParser","winjsRegex","winjsStackLineParser","opera10Regex","opera10StackLineParser","opera11Regex","opera11StackLineParser","defaultStackLineParsers","defaultStackParser","isSafariExtension","isSafariWebExtension","GlobalHandlers","_installFunc","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","stackTraceLimit","installFunc","getHubAndOptions","groups","_enhanceEventWithInitialFrame","_eventFromIncompleteOnError","addMechanismAndCapture","ev","ev0","ev0s","ev0sf","getLocationHref","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","requestAnimationFrame","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","wrapOptions","originalFunction","globalObject","eventName","handleEvent","wrappedEventHandler","originalEventHandler","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","maxValueLimit","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","is_exception_group","exception_id","parentId","parent_id","LinkedErrors","_limit","HttpContext","referrer","Referer","Dedupe","eventProcessor","currentEvent","previousEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","_previousEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","showReportDialog","script","crossOrigin","src","dsnLike","dialogOptions","endpoint","encodedOptions","getReportDialogEndpoint","onLoad","onload","injectionPoint","forceLoad","startSessionOnHub","REPLAY_SESSION_KEY","REPLAY_EVENT_NAME","UNABLE_TO_SEND_REPLAY","NETWORK_BODY_MAX_SIZE","CONSOLE_ARG_MAX_SIZE","REPLAY_MAX_EVENT_BUFFER_SIZE","NodeType$1","isShadowRoot","n","shadowRoot","isInputTypeMasked","maskInputOptions","actualType","maskInputValue","maskInputSelector","unmaskInputSelector","maskInputFn","text","hasAttribute","repeat","NodeType","ORIGINAL_ATTRIBUTE_NAME","getInputType","element","getInputValue","_id","tagNameRegex","IGNORED_NODE","defaultMaskFn","getCssRulesString","rules","cssRules","getCssRuleString","rule","cssStringified","cssText","isCSSImportRule","styleSheet","_a","validateStringifiedCssRule","regex","canvasService","canvasCtx","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","origin","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","part","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","attributeValue","getHref","transformAttribute","_tagName","maskAllText","unmaskTextSelector","maskTextFn","pos","collectCharacters","regEx","chars","descriptorsStr","inParens","charAt","getAbsoluteSrcsetString","attribute","_shouldMaskAttribute","needMaskingText","node","maskTextClass","maskTextSelector","nodeType","ELEMENT_NODE","closest","classList","contains","eIndex","lowerIfExists","maybeAttr","serializeNodeWithId","blockClass","blockSelector","unblockSelector","skipChild","inlineStylesheet","slimDOMOptions","dataURLOptions","inlineImages","recordCanvas","onSerialize","onIframeLoad","iframeLoadTimeout","keepIframeSrcFn","preserveWhiteSpace","_serializedNode","rootId","__sn","docId","DOCUMENT_NODE","compatMode","Document","childNodes","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes","skipAttribute","stylesheet","styleSheets","rel","_cssText","sheet","innerText","textContent","checked","selected","__context","canvas","getContext","x","width","y","getImageData","originalGetImageData","Uint32Array","min","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image","oldValue","recordInlineImage","naturalWidth","naturalHeight","drawImage","currentSrc","complete","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","getBoundingClientRect","class","rr_width","rr_height","contentDocument","rr_src","isSVG","ownerSVGElement","TEXT_NODE","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","serializeNode","sn","comment","as","endsWith","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","iframeEl","win","fired","timer","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","attributeName","EventType","IncrementalSource","MouseInteractions","CanvasContext","MediaInteractions","ReplayerEvents","capture","passive","removeEventListener","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","getId","getNode","removeNodeFromMap","reset","throttle$1","wait","leading","remaining","trailing","hookSetter","d","isRevoked","patch","replacement","defineProperties","__rrweb_original__","enumerable","getWindowHeight","innerHeight","documentElement","clientHeight","getWindowWidth","innerWidth","clientWidth","isBlocked","needUnblock","isIgnored","isAncestorRemoved","mirror","isTouchEvent","changedTouches","isIframeINode","hasShadowRoot","isNodeInLinkedList","Proxy","Reflect","receiver","DoubleLinkedList","position","addNode","__ln","removeNode","moveKey","isINode","MutationBuffer","frozen","locked","texts","removes","mapRemoves","movedMap","addedSet","movedSet","droppedSet","processMutations","mutations","processMutation","adds","addList","getNextId","ns","nextId","pushAdd","_b","_c","_d","shadowHost","getRootNode","rootShadowHost","notInDoc","currentN","iframeManager","addIframe","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","shift","isParentRemoved","isAncestorInSet","candidate","_node","mutationCb","m","setAttribute","old","style","styleObj","pname","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","deepDelete","targetId","freeze","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","callbackWrapper","cb","__rrweb__","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","onMutation","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initScrollObserver","scrollCb","sampling","updatePosition","scrollEl","scrollingElement","scroll","wrapEventWithUserTriggeredFlag","v","userTriggered","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","unshift","parentStyleSheet","recurse","initObservers","o","hooks","currentWindow","defaultView","mousemoveCb","mouseInteractionCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","mutation","mousemove","mouseInteraction","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","mergeHooks","mutationObserver","mousemoveHandler","threshold","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","clientX","clientY","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","h","initMoveObserver","mouseInteractionHandler","disableMap","eventKey","getHandler","initMouseInteractionObserver","scrollHandler","viewportResizeHandler","lastH","lastW","updateDimension","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","isTrusted","parentElement","isChecked","hasInputMaskOptions","cbWithDedup","querySelectorAll","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","volume","muted","media","initMediaInteractionObserver","styleSheetObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","ownerNode","deleteRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","styleDeclarationObserver","setProperty","CSSStyleDeclaration","priority","removeProperty","initStyleDeclarationObserver","fontObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","restoreHandler","fonts","initFontObserver","pluginHandlers","plugin","plugins","disconnect","IframeManager","iframes","addLoadListener","loadListener","isAttachIframe","ShadowDomManager","restorePatches","manager","HTMLElement","ownerDocument","iframeElement","restorePatch","lookup","charCodeAt","webGLVarMap","saveWebGLVar","isInstanceOfWebGLObject","list","ctor","contextMap","variableListFor","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","ImageData","serializeArgs","supportedWebGLConstructorNames","patchGLPrototype","props","getOwnPropertyNames","recordArgs","hookHandler","setter","CanvasManager","pendingCanvasMutations","resetObservers","rafStamps","latestId","invokeId","initCanvasMutationObserver","startRAFTimestamping","startPendingCanvasMutationFlusher","canvasContextReset","HTMLCanvasElement","contextType","initCanvasContextObserver","canvas2DReset","props2D","CanvasRenderingContext2D","imgd","pix","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","flushPendingCanvasMutationFor","valuesWithType","getOwnPropertySymbols","propertyIsEnumerable","__rest","commands","wrapEvent","wrappedEmit","takeFullSnapshot","child","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","color","date","month","number","range","tel","time","week","textarea","select","radio","checkbox","lastFullSnapshotEvent","NodeList","DOMTokenList","Node","TypeError","polyfill","incrementalSnapshotCount","isCheckout","FullSnapshot","IncrementalSnapshot","Mutation","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","Scroll","wrappedCanvasMutationEmit","CanvasMutation","Meta","idNodeMap","slimDOM","snapshot","initialOffset","left","pageXOffset","top","pageYOffset","DomContentLoaded","MouseInteraction","ViewportResize","Input","MediaInteraction","StyleSheetRule","StyleDeclaration","Font","Plugin","Load","timestampToMs","addBreadcrumbEvent","replay","triggerUserActivity","checkAndHandleExpiredSession","addUpdate","throttledAddEvent","Custom","addCustomEvent","freezePage","getClickTargetNode","getTargetNode","isEventWithTarget","ClickDetector","_lastMutation","_lastScroll","_clicks","slowClickConfig","_addBreadcrumbEvent","_timeout","_threshold","_scollTimeout","scrollTimeout","_replay","_ignoreSelector","addListeners","nowInSeconds","cleanupWindowOpen","originalWindowOpen","clickHandler","_handleMultiClick","obs","_teardown","removeListeners","_checkClickTimeout","handleClick","SLOW_CLICK_TAGS","ignoreElement","isClickBreadcrumb","newClick","clickBreadcrumb","clickCount","_scheduleCheckClicks","_getClicks","click","_checkClicks","timedOutClicks","mutationAfter","scrollAfter","_generateBreadcrumbs","hadScroll","hadMutation","isSlowClick","timeAfterClickMs","endReason","route","getCurrentRoute","metric","createBreadcrumb","ATTRIBUTES_TO_RECORD","getAttributesToRecord","normalizedKey","getBaseDomBreadcrumb","NAVIGATION_ENTRY_KEYS","isNavigationEntryEqual","EventBufferSizeExceededError","EventBufferArray","_totalSize","events","hasEvents","destroy","eventSize","eventsRet","getEarliestTimestamp","WorkerHandler","worker","_worker","ensureReady","_ensureReadyPromise","success","once","terminate","postMessage","_getAndIncrementId","EventBufferCompressionWorker","_earliestTimestamp","addEvent","_sendEventToWorker","_finishRequest","EventBufferProxy","_fallback","_compression","_used","_ensureWorkerIsLoadedPromise","_ensureWorkerIsLoaded","ensureWorkerIsLoaded","_switchToCompressionWorker","addEventPromises","hasSessionStorage","sessionStorage","isExpired","initialTime","expiry","targetTime","isSessionExpired","timeouts","maxSessionLife","lastActivity","sessionIdleExpire","isSampled","saveSession","setItem","segmentId","shouldRefresh","createSession","sessionSampleRate","allowBuffering","stickySession","getSessionSampleType","sessionStringFromStorage","getItem","fetchSession","eventBuffer","isPaused","sessionIdlePause","eventAfterPossibleCallback","isCustomEvent","maybeApplyCallback","beforeAddRecordingEvent","stop","handleAfterSendEvent","enforceStatusCode","isBaseTransportSend","traceIds","errorIds","recordingMode","replayId","sendBufferedReplayOrFlush","createPerformanceSpans","start","end","addNetworkBreadcrumb","isEnabled","traceInternals","_isSentryRequest","shouldFilterRequest","OBJ","OBJ_KEY","OBJ_KEY_STR","OBJ_VAL","OBJ_VAL_STR","OBJ_VAL_COMPLETED","ARR","ARR_VAL","ARR_VAL_STR","ARR_VAL_COMPLETED","ALLOWED_PRIMITIVES","_evaluateJsonPos","json","curStep","char","_isEscaped","_handleObj","_handleArr","_handleColon","_handleComma","_handleObjClose","_handleArrClose","_handleQuote","fixJson","incompleteJson","lastPos","lastStep","startPos","lastIndexOf","_maybeFixIncompleteObjValue","_findLastArrayDelimiter","_maybeFixIncompleteArrValue","_fixLastStep","completeJson","evaluateJson","getBodySize","URLSearchParams","FormData","formDataStr","_serializeFormData","Blob","size","parseContentLengthHeader","getBodyString","makeNetworkReplayBreadcrumb","buildSkippedNetworkRequestOrResponse","bodySize","_meta","warnings","buildNetworkRequestOrResponse","info","normalizedBody","exceedsSizeLimit","first","last","_strIsProbablyJson","e3","normalizeNetworkBody","getAllowedHeaders","allowedHeaders","filteredHeaders","formData","urlMatches","urls","fullUrl","baseURI","fixedUrl","URL","getFullUrl","_getFetchRequestArgBody","getAllHeaders","allHeaders","getHeadersFromOptions","handleNetworkBreadcrumbs","networkDetailAllowUrls","networkDetailDenyUrls","networkCaptureBodies","networkRequestHeaders","networkResponseHeaders","_isXhrBreadcrumb","_isXhrHint","reqSize","resSize","request_body_size","response_body_size","enrichXhrBreadcrumb","requestBodySize","responseBodySize","getAllResponseHeaders","getResponseHeaders","responseText","_prepareXhrData","captureXhrBreadcrumbToReplay","_isFetchBreadcrumb","_isFetchHint","enrichFetchBreadcrumb","captureDetails","_getRequestInfo","res","bodyText","e2","_parseFetchBody","_getResponseInfo","_prepareFetchData","captureFetchBreadcrumbToReplay","beforeAddNetworkBreadcrumb","handleFetch","handleFetchSpanListener","handleXhr","handleXhrSpanListener","_LAST_BREADCRUMB","hasHooks","createMemoryEntry","memoryEntry","jsHeapSizeLimit","totalJSHeapSize","usedJSHeapSize","memory","ENTRY_TYPES","entry","entryType","initiatorType","responseEnd","startTime","decodedBodySize","encodedBodySize","responseStatus","transferSize","getAbsoluteTime","paint","navigation","domComplete","domContentLoadedEventStart","domContentLoadedEventEnd","domInteractive","loadEventStart","loadEventEnd","redirectCount","startTimeOrNavigationActivation","performance","navEntry","getEntriesByType","activationStart","createPerformanceEntry","timeOrigin","getHandleRecordingEmit","hadFirstEvent","_isCheckout","setInitialState","errorSampleRate","useCompressionOption","useCompression","blockAllMedia","networkDetailHasUrls","networkRequestHasHeaders","networkResponseHasHeaders","createOptionsEvent","addSettingsEvent","previousSessionId","earliestEvent","TransportStatusCodeError","sendReplay","replayData","retryConfig","count","recordingData","segment_id","eventContext","preparedRecordingData","payloadWithSequence","replayHeaders","sequence","prepareRecordingData","initialTimestamp","baseEvent","replay_start_timestamp","error_ids","trace_ids","replay_id","replay_type","replayEvent","preparedEvent","prepareReplayEvent","createReplayEnvelope","cause","sendReplayRequest","_retryCount","captureExceptions","THROTTLED","ReplayContainer","performanceEvents","_performanceObserver","_flushLock","_lastActivity","__init8","__init9","_isPaused","__init10","_hasInitializedCoreListeners","__init11","_stopRecording","__init12","_context","initialUrl","recordingOptions","__init13","__init14","__init15","__init16","__init17","__init18","_recordingOptions","_debouncedFlush","callbackReturnValue","timerId","maxTimerId","maxWait","invokeFunc","cancelTimers","debounced","cancel","debounce","_flush","flushMinDelay","flushMaxDelay","_throttledAddEvent","maxCount","durationSeconds","isThrottled","floor","_cleanup","wasThrottled","throttle","slowClickTimeout","slowClickIgnoreSelectors","clickDetector","initializeSampling","_loadAndCheckSession","_initializeRecording","_handleException","startBuffering","startRecording","_onMutationHandler","stopRecording","_removeListeners","force","removeItem","deleteSession","resume","continueRecording","flushImmediate","activityTime","hasStoppedRecording","_updateUserActivity","_updateSessionActivity","_maybeSaveSession","cbResult","updateUserActivity","conditionalFlush","cancelFlush","getSessionId","oldSessionId","_triggerFullSnapshot","urlPath","pathname","_clearContext","lastTransaction","Worker","workerUrl","createObjectURL","createEventBuffer","_addListeners","currentSessionId","_handleVisibilityChange","_handleWindowBlur","_handleWindowFocus","_handleKeyboardEvent","newBreadcrumb","isTruncated","normalizedArgs","normalizedArg","fixedJson","normalizeConsoleBreadcrumb","handleScope","handleScopeListener","isClick","getDomTarget","handleDom","altKey","metaKey","ctrlKey","shiftKey","handleDomListener","handleHistory","handleHistorySpanListener","includeAfterSendEventHandling","afterSendHandler","isReplayEvent","isRrwebError","isErrorEventSampled","shouldSampleForBufferEvent","handleGlobalEventListener","addGlobalListeners","performanceObserver","PerformanceObserver","newPerformanceEntries","currentList","newList","existingNavigationEntries","existingLcpEntries","existingEntries","newEntries","newNavigationEntries","newLcpEntry","navigationEntry","dedupePerformanceEntries","getEntries","buffered","setupPerformanceObserver","_doChangeToForegroundTasks","_doChangeToBackgroundTasks","isInputElement","hasModifierKey","isCharacterKey","getKeyboardBreadcrumb","handleKeyboardEvent","expired","_createCustomBreadcrumb","checkout","_addPerformanceEntries","createPerformanceEntries","_updateInitialTimestampFromEventBuffer","_popEventContext","addMemoryEntry","minReplayDuration","_runFlush","mutationLimit","overMutationLimit","mutationBreadcrumbLimit","getOption","selectors","defaultSelectors","deprecatedClassOption","deprecatedSelectorOption","allSelectors","getPrivacyOptions","mask","unmask","block","unblock","ignore","maskSelector","unmaskSelector","isBrowser","process","MEDIA_SELECTORS","DEFAULT_NETWORK_HEADERS","_initialized","Replay","maskFn","password","_initialOptions","_getMergedNetworkHeaders","_isInitialized","_setup","_initialize","getReplayId","finalOptions","initialOptions","opt","replaysSessionSampleRate","replaysOnErrorSampleRate","loadReplayOptionsFromClient","bindReporter","reportAllChanges","prevValue","delta","forceReport","getNavigationEntry","__WEB_VITALS_POLYFILL__","timing","navigationStart","getNavigationEntryFromPerformanceTiming","getActivationStart","initMetric","navigationType","prerendering","rating","opts","supportedEntryTypes","po","onHidden","onHiddenOrPageHide","firstHiddenTime","getVisibilityWatcher","Infinity","timeStamp","reportedMetricIDs","isMeasurementValue","isFinite","_startChild","msToSec","getBrowserPerformanceAPI","_lcpEntry","_clsEntry","_performanceCursor","startTrackingWebVitals","mark","onReport","visibilityWatcher","report","handleEntry","processingStart","handleEntries","takeRecords","onFID","clsCallback","sessionValue","sessionEntries","hadRecentInput","firstSessionEntry","lastSessionEntry","stopListening","onCLS","lcpCallback","lastEntry","onLCP","_addPerformanceNavigationTiming","eventEnd","DEFAULT_TRACE_PROPAGATION_TARGETS","defaultRequestInstrumentationOptions","traceFetch","traceXHR","enableHTTPTimings","tracingOrigins","tracePropagationTargets","instrumentOutgoingRequests","shouldCreateSpanForRequest","shouldCreateSpan","shouldAttachHeadersWithTargets","shouldAttachHeaders","createdSpan","shouldCreateSpanResult","__span","contentLength","contentLengthNum","sentryTraceHeader","sentryBaggageHeader","newHeaders","existingBaggageHeader","baggage","newBaggageHeaders","addTracingHeadersToFetchRequest","fetchCallback","addHTTPTimings","__sentry_xhr_span_id__","setHeaderOnXhr","xhrCallback","resourceTiming","nextHopProtocol","extractNetworkProtocol","timingSpanData","redirectStart","fetchStart","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","resourceTimingEntryToSpanData","entryTypes","DEFAULT_BROWSER_TRACING_OPTIONS","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","enableLongTask","BrowserTracing","_hasSetTracePropagationTargets","_collectWebVitals","enableInteractions","durationThreshold","_getCurrentHub","instrumentRouting","clientOptionsTracePropagationTargets","_createRouteTransaction","onStartRouteTransaction","statusType","_registerInteractionListener","beforeNavigate","isPageloadTransaction","sentryTrace","getMetaContent","traceparentData","baggageObject","curr","baggageHeaderToDynamicSamplingContext","tracingContextFromHeaders","expandedContext","modifiedContext","finalContext","_latestRouteName","_latestRouteSource","idleTransaction","performanceEntries","responseStartTimestamp","requestStartTimestamp","_addRequest","_addNavigationSpans","measureStartTimestamp","measureEndTimestamp","_addMeasureSpans","firstHidden","shouldRecord","resourceName","renderBlockingStatus","_addResourceSpans","connection","effectiveType","rtt","deviceMemory","hardwareConcurrency","_trackNavigator","measurementTimestamp","normalizedValue","abs","fidMark","cls","measurementName","sources","_tagMetricInfo","addPerformanceEntries","inflightInteractionTransaction","registerInteractionTransaction","currentTransaction","metaName","metaTag","selector","querySelector","MIN_DELAY","START_DELAY","MAX_DELAY","makeOfflineTransport","flushTimer","retryDelay","flushIn","found","unref","flushWithBackOff","shouldStore","shouldQueue","insert","flushAtStartup","promisifyRequest","oncomplete","onsuccess","onabort","getAllKeys","createIndexedDbStore","getStore","dbName","storeName","indexedDB","onupgradeneeded","createObjectStore","dbp","db","objectStore","maxQueueSize","put","deserialized","textDecoder","readBinary","bin","subarray","readJson","decode","envelopeHeader","itemHeader","binaryLength","parseEnvelope","TextDecoder","makeBrowserOfflineTransport","makeIndexedDbOfflineTransport","MS_TO_NS","THREAD_ID_STRING","THREAD_NAME","OS_PLATFORM","OS_PLATFORM_VERSION","OS_ARCH","OS_BROWSER","OS_MODEL","OS_LOCALE","language","languages","userAgentData","createProfilePayload","processedProfile","profile_id","getTraceId","enrichedThreadProfile","isProcessedJSSelfProfile","EMPTY_STACK_ID","STACK_ID","samples","stacks","thread_metadata","adjustForOriginChange","jsSample","stackId","elapsed_since_start_ns","toFixed","stack_id","thread_id","stackTop","frameId","resourceId","resources","convertJSSelfProfileToSampledFormat","transactionStartMs","transactionEndMs","os","build_number","device","locale","model","manufacturer","architecture","is_emulator","applyDebugMetadata","transactions","active_thread_id","relative_start_ns","relative_end_ns","getHighEntropyValues","ua","platformVersion","fullVersionList","firstUa","brand","resource_paths","file","createProfilingEvent","isValidProfile","PROFILE_MAP","MAX_PROFILE_DURATION_MS","PROFILING_CONSTRUCTOR_FAILED","onProfilingStartRouteTransaction","wrapTransactionWithProfiling","JSProfilerConstructor","Profiler","profilesSampleRate","maxSamples","profiler","sampleInterval","maxBufferSize","profileId","onProfileHandler","stopProfilerSpan","maxDurationTimeoutID","addProfileToMap","originalFinish","BrowserProfilingIntegration","profiledTransactionEvents","j","findProfiledTransactionsFromEnvelope","profilesToAddToEnvelope","profiledTransaction","profileEvent","profiles","addProfilesToEnvelope","windowIntegrations","Sentry","Integrations","INTEGRATIONS","__SENTRY_RELEASE__","SENTRY_RELEASE","autoSessionTracking","clientClass","debug","initialScope","initAndBind","startSessionTracking","REACT_RENDER_OP","REACT_MOUNT_OP","_jsxFileName","UNKNOWN_COMPONENT","_mountSpan","_updateSpan","defaultProps","disabled","includeRender","includeUpdates","componentDidMount","shouldComponentUpdate","updateProps","changedProps","componentDidUpdate","componentWillUnmount","render","children","withProfiler","WrappedComponent","componentDisplayName","displayName","Wrapped","__self","__source","fileName","lineNumber","useProfiler","hasRenderSpan","mountSpan","INITIAL_STATE","componentStack","ErrorBoundary","_openFallbackReportDialog","showDialog","componentDidCatch","beforeCapture","major","isAtLeastReact17","errorBoundaryError","seenErrors","setCause","react","setState","onMount","onUnmount","resetErrorBoundary","onReset","fallback","resetError","withErrorBoundary","errorBoundaryOptions","ACTION_BREADCRUMB_CATEGORY","ACTION_BREADCRUMB_TYPE","defaultOptions","actionTransformer","stateTransformer","createReduxEnhancer","enhancerOptions","initialState","newState","transformedAction","transformedState","newStateContext","configureScopeWithState","reactRouterV3Instrumentation","routes","prevName","normalizeTransactionName","localName","listen","appRoutes","_redirectLocation","renderProps","routePath","routesWithPaths","getRouteStringFromRoutes","reactRouterV4Instrumentation","matchPath","createReactRouterInstrumentation","reactRouterV5Instrumentation","allRoutes","branches","matchRoutes","isExact","initPathName","branch","params","computeRootMatch","withSentryRouting","Route","WrappedRoute","computedMatch","_useEffect","_useLocation","_useNavigationType","_createRoutesFromChildren","_matchRoutes","_customStartTransaction","_startTransactionOnLocationChange","SENTRY_TAGS","reactRouterV6Instrumentation","useEffect","useLocation","useNavigationType","createRoutesFromChildren","getNormalizedName","pathBuilder","newPath","updatePageloadTransaction","basename","handleNavigation","withSentryReactRouterV6Routing","Routes","isMountRenderPass","SentryRoutes","wrapUseRoutes","origUseRoutes","locationArg","stableLocationParam","normalizedLocation","wrapCreateBrowserRouter","createRouterFunction","router","historyAction","subscribe","isBrowserBundle","__SENTRY_BROWSER_BUNDLE__","getSDKSource","isNodeEnv","dynamicRequire","mod","require","dateTimestampSource","nowSeconds","platformPerformance","module","getNodePerformance","getBrowserPerformance","timestampSource","dateTimestampInSeconds","timestampInSeconds","_browserPerformanceTimeOriginMode","browserPerformanceTimeOrigin","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStartDelta","isGlobalObj","GLOBAL_OBJ","globalThis","getGlobalObject","getGlobalSingleton","creator","Backoff","ms","factor","jitter","attempts","exports","pow","rand","deviation","setMin","setMax","setJitter","prefix","Events","EE","addListener","emitter","_eventsCount","clearEvent","EventEmitter","create","__proto__","eventNames","names","listeners","ee","listenerCount","a1","a2","a3","a4","a5","removeListener","removeAllListeners","off","prefixed","equal","flags","valueOf","devAssert","condition","inspect","formatValue","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","seenValues","previouslySeenValues","isJSONable","jsonValue","array","formatArray","getObjectTag","properties","formatObject","formatObjectValue","Token","QueryDocumentKeys","OperationTypeNode","Location","isNode","maybeNode","maybeKind","kind","kindValues","startToken","endToken","toStringTag","Symbol","Name","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","dedentBlockStringLines","_firstNonEmptyLine2","commonIndent","MAX_SAFE_INTEGER","firstNonEmptyLine","lastNonEmptyLine","_firstNonEmptyLine","indent","leadingWhitespace","isPrintableAsBlockString","isEmptyLine","hasIndent","hasCommonIndent","seenNonEmptyLine","codePointAt","printBlockString","escapedValue","isSingleLine","forceLeadingNewLine","_characterClasses","isWhiteSpace","hasTrailingTripleQuotes","hasTrailingQuote","hasTrailingSlash","forceTrailingNewline","printAsMultipleLines","minimize","skipLeadingNewLine","isDigit","isLetter","isNameContinue","isNameStart","Kind","printString","escapedRegExp","escapedReplacer","escapeSequences","print","ast","_visitor","printDocASTReducer","_blockString","_printString","leave","definitions","varDefs","variableDefinitions","operation","directives","selectionSet","variable","defaultValue","selections","alias","argsLine","typeCondition","isBlockString","fields","operationTypes","interfaces","hasMultilineItems","repeatable","locations","_maybeArray$filter$jo","maybeString","_maybeArray$some","BREAK","getEnterLeaveForKind","getVisitFn","visitor","isLeaving","enter","root","visitorKeys","_ast","enterLeaveMap","_kinds","parent","inArray","edits","ancestors","isEdited","editOffset","editKey","editValue","arrayKey","getOwnPropertyDescriptors","_enterLeaveMap$get","_enterLeaveMap$get2","_devAssert","_inspect","visitFn","_node$kind","visitInParallel","visitors","skipping","mergedVisitor","hasVisitor","enterList","leaveList","mergedEnterLeave","_enterList$i","_leaveList$i","kindVisitor","getOperationAST","documentAST","operationName","definition","_definition$name","OPERATION_DEFINITION","__HLS_WORKER_BUNDLE__","__IN_WORKER__","ownKeys","_objectSpread2","_toPropertyKey","toPrimitive","_toPrimitive","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","_extends","_inheritsLoose","subClass","superClass","_setPrototypeOf","_getPrototypeOf","_construct","Parent","Class","construct","sham","_isNativeReflectConstruct","instance","_wrapNativeSuper","_cache","_isNativeFunction","Wrapper","_arrayLikeToArray","arr2","_createForOfIteratorHelperLoose","allowArrayLike","it","iterator","minLen","_unsupportedIterableToArray","done","getDefaultExportFromCjs","__esModule","urlToolkit","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","buildAbsoluteURL","baseURL","relativeURL","alwaysNormalize","basePartsForNormalise","parseURL","normalizePath","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","pathParts","builtParts","baseURLPath","urlToolkitExports","isFiniteNumber","isSafeInteger","ErrorTypes","ErrorDetails","fakeLogger","exportedLogger","exportLoggerFunctions","debugConfig","functions","consolePrintFn","enableLogs","DECIMAL_RESOLUTION_REGEX","ATTR_LIST_REGEX","AttrList","parseAttrList","_proto","decimalInteger","attrName","intValue","hexadecimalInteger","stringValue","hexadecimalIntegerAsNumber","decimalFloatingPoint","parseFloat","optionalFloat","enumeratedString","bool","decimalResolution","lastIndex","isSCTE35Attribute","DateRange","dateRangeAttr","dateRangeWithSameId","_startDate","_endDate","_badValueForSameId","previousAttr","ID","endDate","getTime","CLASS","startDate","endOnNext","LoadStats","aborted","loaded","retry","total","chunkCount","bwEstimate","loading","parsing","buffering","ElementaryStreamTypes","BaseSegment","baseurl","_this$elementaryStrea","_byteRange","_url","relurl","elementaryStreams","setByteRange","byteRangeEndOffset","byteRange","Fragment","_BaseSegment","_this","_decryptdata","rawProgramDateTime","programDateTime","tagList","levelkeys","loader","keyLoader","cc","startPTS","endPTS","startDTS","endDTS","deltaPTS","maxStartPTS","minEndPTS","stats","bitrateTest","title","initSegment","endList","gap","urlId","_proto2","setKeyFormat","keyFormat","getDecryptData","abortRequests","_this$loader","_this$keyLoader","abort","setElementaryStreamInfo","partial","clearElementaryStreamInfo","NONE","_key2","identity","keyFormats","_this$_decryptdata","encrypted","Part","_BaseSegment2","partAttrs","frag","_this2","fragOffset","independent","audio","video","audiovideo","LevelDetails","baseUrl","PTSKnown","alignedSliding","averagetargetduration","endCC","endSN","fragments","fragmentHint","partList","dateRanges","live","ageHeader","advancedDateTime","updated","advanced","availabilityDelay","misses","startCC","startSN","startTimeOffset","targetduration","totalduration","m3u8","canBlockReload","canSkipUntil","canSkipDateRanges","skippedSegments","recentlyRemovedDateranges","partHoldBack","holdBack","partTarget","preloadHint","renditionReports","tuneInGoal","deltaUpdateFailed","driftStartTime","driftEndTime","driftStart","driftEnd","encryptedFragments","playlistParsingError","variableList","hasVariableRefs","reloaded","partSnDiff","lastPartSn","partIndexDiff","lastPartIndex","runTime","partEnd","fragmentEnd","_this$partList","_this$fragments","_this$partList2","_this$partList3","base64Decode","base64encodedStr","atob","convertDataUriToArrayBytes","uri","keyIdbytes","paddedkeyIdbytes","colonsplit","keydata","semicolonsplit","commasplit","isbase64","strToUtf8array","unescape","optionalSelf","KeySystems","CLEARKEY","FAIRPLAY","PLAYREADY","WIDEVINE","KeySystemFormats","keySystemFormatToKeySystemDomain","format","KeySystemIds","keySystemDomainToKeySystemFormat","keySystem","getKeySystemsForConfig","drmSystems","widevineLicenseUrl","keySystemsToAttempt","_optionalSelf$navigat","requestMediaKeySystemAccess","sliceUint8","decoder","isHeader$2","isFooter","getID3Data","front","readSize","canParse$2","getTimeStamp","getID3Frames","isTimeStampFrame","readTimeStamp","getFrameData","fromCharCode","id3Data","frameData","decodeFrame","decodePrivFrame","decodeURLFrame","decodeTextFrame","owner","utf8ArrayToStr","privateData","timeStampFrame","pts33Bit","round","exitOnNull","getTextDecoder","decoded","idx","char2","char3","Hex","UINT32_MAX$1","RemuxerTrackIdConfig","id3","bin2str","readUint16","readUint32","readSint32","readUint64","writeUint32","findBox","results","endbox","subresults","parseSegmentIndex","sidx","references","timescale","earliestPresentationTime","firstOffset","startByte","referencesCount","referenceIndex","referenceInfo","referenceSize","subsegmentDuration","parseInitSegment","traks","trak","tkhd","trackId","mdhd","hdlr","hdlrType","soun","vide","stsdData","parseStsd","trex","track","default","stsd","sampleEntries","sampleEntriesEnd","fourCC","codec","encBox","sinf","schm","frma","avcCBox","toHex","codecBox","esdsBox","skipBERInteger","objectType","firstByte","audioObjectType","hvcCBox","profileByte","profileSpace","generalProfileIdc","profileCompat","tierFlag","levelIDC","constraintIndicator","constraintString","_i","_byte","dvcCBox","addLeadingZero","vpcCBox","_profile","bitDepth","av1CBox","_profile2","_level2","_tierFlag","highBitDepth","twelveBit","_bitDepth","monochrome","chromaSubsamplingX","chromaSubsamplingY","chromaSamplePosition","num","parseSinf","computeRawDurationFromSamples","trun","sampleCount","appendUint8Array","data1","data2","temp","parseSamples","seiSamples","videoData","isHEVCFlavor","moof","moofOffset","traf","baseTime","tfdt","tfhd","tfhdFlags","defaultSampleDuration","defaultSampleSizePresent","defaultSampleSize","defaultSampleFlagsPresent","tfhdOffset","delimit","baseCodec","isHEVC","dataOffsetPresent","dataOffset","firstSampleFlagsPresent","sampleDurationPresent","sampleDuration","sampleSizePresent","sampleSize","sampleFlagsPresent","sampleCompositionOffsetsPresent","compositionOffset","trunOffset","sampleOffset","ix","naluTotalSize","naluSize","isSEIMessage","parseSEIMessageFromNALu","naluHeader","naluType","unescapedData","headerSize","pts","discardEPB","seiPtr","payloadType","payloadSize","leftOver","payPtr","providerCode","userStructure","userDataType","totalBytes","byteArray","uuidStrArray","_i3","userDataBytes","_i4","uuid","userData","EPBPositions","newLength","sourceIndex","mp4pssh","keyids","RangeError","kids","kidCount","setUint32","dataSize","mp4Box","keyUriToKeyIdMap","LevelKey","formatversions","iv","keyFormatVersions","isCommonEncryption","keyId","pssh","clearKeyUriToKeyIdMap","isSupported","segmentNumber","uint8View","createInitializationVector","keyBytes","PlayReadyKeySystemUUID","keyBytesUtf16","keyByteStr","xmlKeyBytes","keyData","DOMParser","parseFromString","getElementsByTagName","nodeValue","keyIdArray","swap","cur","changeEndianness","padded","_keyId","VARIABLE_REPLACEMENT_REGEX","hasVariableReferences","substituteVariablesInAttributes","parsed","attributeNames","substituteVariables","variableReference","variableName","variableValue","addVariableDefinition","parentUrl","NAME","VALUE","QUERYPARAM","searchParams","importVariableDefinition","sourceVariableList","IMPORT","getMediaSource","preferManagedMediaSource","MediaSource","ManagedMediaSource","WebKitMediaSource","sampleEntryCodesISO","a3ds","alac","alaw","dra1","dtsc","dtse","dtsh","enca","fLaC","flac","FLAC","g719","g726","m4ae","mha1","mha2","mhm1","mhm2","mlpa","mp4a","Opus","opus","samr","sawb","sawp","sevc","sqcp","ssmv","twos","ulaw","avc1","avc2","avc3","avc4","avcp","av01","drac","dva1","dvav","dvh1","dvhe","encv","hev1","hvc1","mjp2","mp4v","mvc1","mvc2","mvc3","mvc4","resv","rv60","s263","svc1","svc2","vp08","vp09","stpp","wvtt","areCodecsMediaSourceSupported","codecs","isCodecMediaSourceSupported","_MediaSource$isTypeSu","isTypeSupported","mimeTypeForCodec","videoCodecPreferenceValue","videoCodec","codecsSetSelectionPreferenceValue","codecSet","preferenceValue","CODEC_COMPATIBLE_NAMES","AUDIO_CODEC_REGEXP","getCodecCompatibleName","lowerCaseCodec","codecsToCheck","getCodecCompatibleNameLower","pickMostCompleteCodecName","parsedCodec","levelCodec","MASTER_PLAYLIST_REGEX","MASTER_PLAYLIST_MEDIA_REGEX","IS_MEDIA_PLAYLIST","LEVEL_PLAYLIST_REGEX_FAST","LEVEL_PLAYLIST_REGEX_SLOW","M3U8Parser","findGroup","mediaGroupId","group","isMediaPlaylist","parseMasterPlaylist","string","contentSteering","levels","sessionData","sessionKeys","levelsWithKnownCodecs","_level$unknownCodecs","bitrate","resolution","setCodecs","CODECS","unknownCodecs","sessionAttrs","dataId","sessionKey","parseKey","variableAttributes","contentSteeringAttributes","pathwayId","parseStartTimeOffset","stripUnknownCodecLevels","parseMasterPlaylistMedia","groupsByType","AUDIO","audioCodec","SUBTITLES","textCodec","TYPE","medias","lang","LANGUAGE","assocLang","channels","CHANNELS","characteristics","CHARACTERISTICS","instreamId","groupId","autoselect","forced","URI","groupCodec","assignCodec","parseLevelPlaylist","levelUrlId","multivariantVariableList","currentInitSegment","currentSN","currentPart","discontinuityCounter","prevFrag","firstPdtIndex","createNextFrag","nextByteRange","setFragLevelKeys","assignProgramDateTime","value1","value2","skipAttrs","clientAttrs","dateRange","isValid","levelKey","mapAttrs","setInitSegment","byteRangeStartOffset","serverControlAttrs","partInfAttrs","previousFragmentPart","preloadHintAttrs","renditionReportAttrs","fragmentLength","firstFragment","lastFragment","lastSn","fragPrev","backfillProgramDateTimes","keyTagAttributes","_keyAttrs$METHOD","_keyAttrs$KEYFORMAT","decryptmethod","METHOD","decrypturi","decryptiv","decryptkeyformatversions","KEYFORMATVERSIONS","decryptkeyformat","KEYFORMAT","IV","resolvedUri","startAttributes","codecsAttributeValue","filtered","typeCodes","isCodecType","groupItem","codecProperty","codecValue","endProgramDateTime","BYTERANGE","PlaylistContextType","PlaylistLevelType","mapContextToLevelType","getResponseUrl","PlaylistLoader","hls","loaders","registerListeners","startLoad","startPosition","stopLoad","destroyInternalLoaders","MANIFEST_LOADING","onManifestLoading","LEVEL_LOADING","onLevelLoading","AUDIO_TRACK_LOADING","onAudioTrackLoading","SUBTITLE_TRACK_LOADING","onSubtitleTrackLoading","unregisterListeners","createInternalLoader","PLoader","pLoader","Loader","getInternalLoader","resetInternalLoader","load","responseType","deliveryDirectives","_context$deliveryDire","loadPolicy","levelDetails","loaderContext","manifestLoadPolicy","playlistLoadPolicy","timeoutRetry","errorRetry","details","audioTracks","subtitleTracks","targetDuration","maxLowLatencyPlaylistRefresh","maxTimeToFirstByteMs","maxLoadTimeMs","legacyRetryCompatibility","loaderConfig","maxRetry","maxNumRetry","retryDelayMs","maxRetryDelay","maxRetryDelayMs","loaderCallbacks","onSuccess","networkDetails","handleTrackOrLevelPlaylist","handleMasterPlaylist","handleManifestParsingError","handleNetworkError","onTimeout","parsedResult","_M3U8Parser$parseMast","_M3U8Parser$parseMast2","subtitles","captions","audioTrack","trigger","MANIFEST_LOADED","levelId","levelType","singleLevel","handlePlaylistLoaded","NETWORK_ERROR","MANIFEST_PARSING_ERROR","fatal","UNKNOWN","MANIFEST_LOAD_TIMEOUT","MANIFEST_LOAD_ERROR","LEVEL_LOAD_TIMEOUT","LEVEL_LOAD_ERROR","AUDIO_TRACK_LOAD_TIMEOUT","AUDIO_TRACK_LOAD_ERROR","SUBTITLE_TRACK_LOAD_TIMEOUT","SUBTITLE_LOAD_ERROR","errorData","levelIndex","LEVEL_PARSING_ERROR","getCacheAge","LEVEL_LOADED","AUDIO_TRACK_LOADED","SUBTITLE_TRACK_LOADED","_error","LEVEL_EMPTY_ERROR","sendAddTrackEvent","videoEl","createEvent","initEvent","dispatchEvent","addCueToTrack","cue","mode","cues","getCueById","addCue","textTrackCue","TextTrackCue","endTime","err2","clearCurrentCues","removeCue","removeCuesInRange","predicate","cuesFound","firstCueInRange","right","mid","getFirstCueIndexAfterTime","_cue","getCuesInRange","filterSubtitleTracks","textTrackList","tracks","label","MetadataSchema","getCueClass","VTTCue","createCueWithDataFields","Cue","MAX_CUE_ENDTIME","POSITIVE_INFINITY","MAX_VALUE","dateRangeDateToTimelineSeconds","ID3TrackController","id3Track","dateRangeCuesAppended","_registerListeners","_unregisterListeners","MEDIA_ATTACHED","onMediaAttached","MEDIA_DETACHING","onMediaDetaching","FRAG_PARSING_METADATA","onFragParsingMetadata","BUFFER_FLUSHING","onBufferFlushing","LEVEL_UPDATED","onLevelUpdated","createTrack","getID3Track","textTracks","textTrack","addTextTrack","_this$hls$config","enableEmsgMetadataCues","enableID3MetadataCues","updateId3CueEnds","_this$id3Track","_ref","startOffset","endOffset","_hls$config","_ref2","hasProgramDateTime","enableDateRangeMetadataCues","ids","idsToRemove","_loop","dateTimeOffset","_loop2","appendedDateRangeCues","durationKnown","nextDateRangeWithSameClass","candidateDateRange","otherDateRange","LatencyController","stallCount","_latency","timeupdateHandler","timeupdate","_this$levelDetails","BUFFER_STALLED_ERROR","computeLatency","_this$config","lowLatencyMode","maxLiveSyncPlaybackRate","targetLatency","distanceFromTarget","maxLatency","forwardBufferLength","exp","edgeStalled","playbackRate","estimateLiveEdge","edge","age","liveEdge","liveMaxLatencyDuration","liveMaxLatencyDurationCount","_this$config2","liveSyncDuration","liveSyncDurationCount","userConfig","maxLiveSyncOnStallIncrease","syncPosition","drift","maxLevelUpdateAge","bufferedRanges","HdcpLevels","VideoRangeValues","HlsSkip","getSkipValue","HlsUrlParameters","msn","skip","addDirectives","Level","_attrs","frameRate","fragmentError","loadError","realBitrate","supportedPromise","supportedResult","_avgBitrate","_audioGroups","_subtitleGroups","_urlId","addGroupId","hasAudioGroup","hasGroup","hasSubtitleGroup","audioGroups","subtitleGroups","addFallback","audioGroupId","textGroupId","_this$audioGroups","_this$subtitleGroups","updateFromToPTS","fragFrom","fragTo","fragToPTS","updateFragPTSDTS","fragStartPts","fragEndPts","fragIdx","mergeDetails","oldDetails","newDetails","oldFragments","oldInit","PTSFrag","oldDateRanges","deltaDateRanges","ccOffset","intersectionFn","newFrags","oldFrags","_oldFrag","_newFrag","mapFragmentIntersection","oldFrag","newFrag","_currentInitSegment","newFragments","_i2","oldParts","newParts","_oldPart","_newPart","mapPartIntersection","oldPart","newPart","adjustSliding","addSliding","getPartWith","partIndex","_level$details","findPart","reassignFragmentLevelIndexes","isTimeoutError","FRAG_LOAD_TIMEOUT","KEY_LOAD_TIMEOUT","getRetryConfig","isTimeout","getRetryDelay","retryCount","backoffFactor","backoff","getLoaderConfigWithoutReties","loderConfig","shouldRetry","loaderResponse","onLine","retryForHttpStatus","BinarySearch","comparisonFn","minIndex","maxIndex","currentElement","comparisonResult","findFragmentByPTS","fragPrevious","bufferEnd","maxFragLookUpTolerance","nextFragLookupTolerance","fragNext","bufferEdgeError","fragmentWithinToleranceTest","firstDuration","fragmentWithinFastStartSwitch","foundFragment","candidateLookupTolerance","pdtWithinToleranceTest","pdtBufferEnd","NetworkErrorAction","ErrorActionFlags","ErrorController","playlistError","penalizedRenditions","onErrorOut","getVariantLevelIndex","loadLevel","_data$frag","_data$level","FRAG_LOAD_ERROR","KEY_LOAD_ERROR","errorAction","getFragRetryOrSwitchAction","FRAG_PARSING_ERROR","FRAG_GAP","FRAG_DECRYPT_ERROR","_data$context","_data$context$levelDe","getPlaylistRetryOrSwitchAction","levelRetry","getLevelSwitchAction","KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED","restrictedHdcpLevel","hdcpLevel","keySystemError","BUFFER_ADD_CODEC_ERROR","REMUX_ALLOC_ERROR","BUFFER_APPEND_ERROR","INTERNAL_EXCEPTION","BUFFER_APPENDING_ERROR","BUFFER_FULL_ERROR","LEVEL_SWITCH_ERROR","BUFFER_SEEK_OVER_HOLE","BUFFER_NUDGE_ON_STALL","KEY_SYSTEM_ERROR","variantLevelIndex","fragLoadPolicy","keyLoadPolicy","fragmentErrors","_data$frag2","_data$context2","errorDetails","nextLevel","minAutoLevel","maxAutoLevel","autoLevelEnabled","_ret","fragErrorType","findAudioCodecAlternate","sourceBufferName","findVideoCodecAlternate","_ref3","playlistErrorType","playlistErrorGroupId","_level$audioGroups","_level$subtitleGroups","levelCandidate","fragCandidate","nextAutoLevel","_data$errorAction","sendAlternateToPenaltyBox","resolved","recoverMediaError","switchLevel","maxHdcpLevel","nextLoadLevel","BasePlaylistController","logPrefix","requestScheduled","canLoad","clearTimer","loadPlaylist","switchParams","playlistUri","foundIndex","_attr","currentGoal","hlsUrlParameters","shouldLoadPlaylist","playlist","shouldReloadPlaylist","playlistLoaded","previousDetails","elapsed","endSn","lastPart","lastAdvanced","cdnAge","segments","getDeliveryDirectives","bufferInfo","mainForwardBufferInfo","reloadInterval","distanceToLiveEdgeMs","lastSegmentDuration","computeReloadInterval","estimatedTimeUntilUpdate","previousDeliveryDirectives","checkRetry","errorEvent","_ref$retryCount","_errorEvent$context","EWMA","halfLife","estimate","weight","alpha_","estimate_","totalWeight_","adjAlpha","getTotalWeight","getEstimate","zeroFactor","EwmaBandWidthEstimator","slow","fast","defaultEstimate","defaultTTFB","defaultEstimate_","minWeight_","minDelayMs_","slow_","fast_","defaultTTFB_","ttfb_","durationMs","numBytes","durationS","bandwidthInBps","sampleTTFB","ttfb","seconds","sqrt","canEstimate","getEstimateTTFB","SUPPORTED_INFO_DEFAULT","supported","configurations","decodingInfoResults","powerEfficient","smooth","SUPPORTED_INFO_CACHE","getMediaDecodingInfoPromise","audioTracksByGroup","mediaCapabilities","videoCodecs","audioCodecs","baseVideoConfiguration","ceil","averageBitrate","framerate","videoRange","transferFunction","_audioTracksByGroup$g","channelsNumber","configuration","decodingInfoKey","mediaConfig","spatialRendering","getMediaDecodingInfoKey","decodingInfo","getVideoSelectionOptions","currentVideoRange","videoPreference","preferHDR","allowedVideoRanges","matchMedia","mediaQueryList","badQuery","isHdrSupported","logStartCodecCandidateIgnored","codeSet","findMatchingOption","option","matchPredicate","matchesOption","isDefault","characteristicsA","characteristicsB","arrA","arrB","characteristicsMatch","audioMatchPredicate","searchDownAndUpList","searchIndex","AbrController","_hls","lastLevelLoadSec","lastLoadedFragLevel","firstSelection","_nextAutoLevel","nextAutoLevelKey","codecTiers","fragCurrent","partCurrent","bitrateTestDelay","bwEstimator","_abandonRulesCheck","timeLoading","ttfbEstimate","bufferStarvationDelay","loadedFirstByte","getBwEstimate","expectedLen","timeStreaming","loadRate","fragLoadedDelay","bwe","fragLevelNextLoadedDelay","levelNextBitrate","maxBitrate","getTimeToLoadFrag","nextLoadLevelBitrate","abrBandWidthUpFactor","resetEstimator","FRAG_LOAD_EMERGENCY_ABORTED","initEstimator","abrEwmaDefaultEstimate","abrEwmaSlowVoD","abrEwmaFastVoD","FRAG_LOADING","onFragLoading","FRAG_LOADED","onFragLoaded","FRAG_BUFFERED","onFragBuffered","LEVEL_SWITCHING","onLevelSwitching","onLevelLoaded","LEVELS_UPDATED","onLevelsUpdated","MAX_AUTO_LEVEL_UPDATED","onMaxAutoLevelUpdated","_data$part","ignoreFragment","timeToFirstByteSec","bandwidth","fragSizeBits","isSwitch","timeLoadingMs","abrEwmaSlowLive","abrEwmaFastLive","abrMaxWithRealBitrate","loadedBytes","loadedDuration","fragBufferedData","processingMs","getAutoLevelKey","getStarvationDelay","getNextABRAutoLevel","currentFragDuration","avgbw","bwFactor","abrBandWidthFactor","bwUpFactor","_bestLevel","findBestLevel","maxStarvationDelay","maxLoadingDelay","bestLevel","minLevel","autoLevel","currentBw","maxFetchDuration","selectionBaseLevel","firstLevel","_this$hls","allAudioTracks","currentCodecSet","currentFrameRate","audioPreference","trackGroup","hasDefault","hasAutoSelect","channelsKey","hasDefaultAudio","hasAutoSelectAudio","getAudioTracksByGroup","startTier","codecSets","channelsPreference","audioCodecPreference","preferStereo","hasStereo","hasCurrentVideoRange","minHeight","minFramerate","minBitrate","selectedScore","videoRanges","_getVideoSelectionOpt","tier","matchingVideoRanges","maxHeight","maxFramerate","candidateTier","maxScore","getStartCodecTier","tiers","SDR","lesserWidthOrHeight","score","audioGroup","getCodecTiers","ttfbEstimateSec","levelsSkipped","_levelInfo$supportedR","levelInfo","upSwitch","useMediaCapabilities","maxChannels","audioChannels","audioTrackGroup","requiresMediaCapabilitiesDecodingInfo","removeLevel","adjustedbw","avgDuration","fetchDuration","forcedAutoLevel","_this$hls2","maxStartDelay","abrAutoLevel","clamped","useEstimate","loadedFirstFrag","nextABRAutoLevel","firstAutoLevel","_this$hls3","TaskLoop","_boundTick","_tickTimer","_tickInterval","_tickCallCount","tick","onHandlerDestroying","onHandlerDestroyed","clearNextTick","hasInterval","hasNextTick","millis","doTick","tickImmediate","FragmentState","FragmentTracker","activePartLists","endListFragments","timeRanges","bufferPadding","hasGaps","BUFFER_APPENDED","onBufferAppended","getAppendedFrag","activeParts","activePart","appendedPTS","getBufferedFrag","fragmentEntity","detectEvictedFragments","elementaryStream","timeRange","playlistType","appendedPart","appendedPartSn","esData","isNotBuffered","isTimeBuffered","removeFragment","detectPartialFragments","fragKey","getFragmentKey","isFragHint","streamInfo","getBufferedTimes","isPartial","removeParts","snToKeep","fragBuffered","getPartialFragment","timePadding","bestFragment","bestOverlap","isEndListAppended","lastFragmentEntity","_this3","hasFragment","hasParts","_this$activePartLists","removeFragmentsInRange","withGapOnly","unbufferedOnly","_this4","snToRemove","removeAllFragments","_fragmentEntity$range","_fragmentEntity$range2","_fragmentEntity$range3","noopBuffered","BufferHelper","isBuffered","getBuffered","maxHoleDuration","vbuffered","bufferedInfo","nextStart","buffered2","buf2len","buf2end","bufferStartNext","bufferLen","bufferStart","ChunkMetadata","transmuxing","executeStart","executeEnd","findFirstFragWithCC","_fragments$i","adjustFragmentStart","sliding","adjustSlidingStart","alignStream","lastFrag","switchDetails","shouldAlignOnDiscontinuities","referenceFrag","prevDetails","curDetails","prevFrags","curFrags","prevStartFrag","findDiscontinuousReferenceFrag","alignDiscontinuities","alignMediaPlaylistByPDT","refDetails","refFragments","refFrag","targetCC","refPDT","targetPDT","MIN_CHUNK_SIZE","FragmentLoader","partLoadTimeout","_onProgress","LoadError","FragmentILoader","fLoader","DefaultILoader","createGapLoadError","createLoaderContext","highWaterMark","resetLoader","resetIV","decryptdata","onAbort","INTERNAL_ABORTED","onProgress","loadPart","updateStatsFromPart","partLoadedData","fragStats","partStats","partTotal","estTotalParts","estLoadedParts","estRemainingBytes","fragLoading","partLoading","rangeStart","rangeEnd","_frag$decryptdata","byteRangeStart","byteRangeEnd","fragmentLen","MEDIA_ERROR","_Error","AESCrypto","subtle","aesIV","decrypt","FastAESKey","expandKey","importKey","AESDecryptor","rcon","subMix","invSubMix","sBox","invSBox","ksRows","keySize","keySchedule","invKeySchedule","initTable","uint8ArrayToUint32Array_","arrayBuffer","view","newArray","getUint32","subMix0","subMix1","subMix2","subMix3","invSubMix0","invSubMix1","invSubMix2","invSubMix3","xi","sx","x2","x4","x8","keyBuffer","sameKey","ksRow","invKsRow","sbox","networkToHostOrderSwap","word","inputArrayBuffer","t0","t1","t2","t3","s0","s1","s2","s3","inputWords0","inputWords1","inputWords2","inputWords3","nRounds","invSBOX","initVector","initVector0","initVector1","initVector2","initVector3","inputInt32","outputInt32","swapWord","Decrypter","_temp","_ref$removePKCS7Paddi","removePKCS7Padding","logEnabled","softwareDecrypter","fastAesKey","remainderData","currentIV","currentResult","useSoftware","enableSoftwareAES","browserCrypto","webkitSubtle","isSync","outputBytes","paddingBytes","getUint8","softwareDecrypt","decryptResult","webCryptoDecrypt","logOnce","currentChunk","getValidChunk","onWebCryptoError","aesKey","splitPoint","TimeRanges","State","BaseStreamController","_TaskLoop","fragmentTracker","transmuxer","mediaBuffer","lastCurrentTime","nextLoadPosition","loadedmetadata","retryDate","fragmentLoader","levelLastLoaded","startFragRequested","decrypter","initPTS","onvseeking","onvended","onManifestLoaded","ReferenceError","_assertThisInitialized","onTickEnd","resetTransmuxer","_streamEnded","getLevelDetails","_this$levelLastLoaded","onMediaSeeking","onMediaEnded","autoStartLoad","ended","detach","maxBufferHole","resetLoadingState","tolerance","fragStartOffset","fragEndOffset","pastFragment","loadFragment","targetBufferTime","_loadFragForPlayback","_doFragLoad","fragContextChanged","_handleFragmentLoadProgress","_handleFragmentLoadComplete","resetFragmentLoading","clearTrackerIfNeeded","_this$mediaBuffer","getFwdBufferInfo","minForwardBufferLength","maxBufferLength","backtrackFragment","reduceMaxBufferLength","checkLiveUpdate","flushMainBuffer","flushScope","_loadInitSegment","decryptData","decryptedData","FRAG_DECRYPTED","tstart","tdecrypt","completeInitSegmentLoad","fragBufferedComplete","_frag$startPTS","_frag$endPTS","_this$fragCurrent","_this$fragPrevious","NaN","_this$levels","seekToStartPos","fragLoadedEndData","partsLoaded","fragLoaded","chunkMeta","progressCallback","keyLoadingPromise","loadClear","keyLoadedData","KEY_LOADED","KEY_LOADING","getNextPart","_result","doFragPartsLoad","handleFragLoadError","loadedEndOfParts","dataOnProgress","progressive","fragLoadedData","fromPart","_this5","initialPartList","loadedPart","nextPart","handleFragLoadAborted","OTHER_ERROR","_handleTransmuxerFlush","getCurrentContext","updateLevelTiming","getFragmentWithSN","bufferFragmentData","noBacktracking","_buffer","BUFFER_APPENDING","dropped","flushBufferGap","fragDuration","segmentFraction","bufferable","getLoadPosition","getFwdBufferInfoAtPos","bufferedFragAtPos","getMaxBufferLength","levelBitrate","maxBufLen","maxMaxBufferLength","minLength","reducedLength","fragOrPart","getNextFragment","fragLen","initialLiveManifestSize","getInitialLiveFragment","liveSyncPosition","getFragmentAtPosition","mapToInitFragWhenRequired","isLoopLoading","trackerState","getNextFragmentLoopLoading","gapStart","nextFragment","nextbufferInfo","contiguous","independentAttrOmitted","PDTValue","seg","findFragmentByPDT","targetSN","findFragWithCC","liveStart","loadingParts","curSNIdx","fragState","nextFrag","synchronizeToLiveEdge","withinSlidingWindow","alignPlaylists","slidingStart","firstLevelLoad","aligned","alignedSlidingStart","waitForCdnTuneIn","setStartPosition","offsetInMultivariantPlaylist","onFragmentOrKeyLoadError","filterType","_this$fragCurrent2","gapTagEncountered","_ref2$retryCount","resetStartWhenNotLoaded","resetFragmentErrors","reduceLengthAndFlushBuffer","flushBuffer","afterBufferFlushed","bufferType","bufferedTimeRanges","resetWhenMissingContext","removeUnbufferedFrags","_this$transmuxer","_this6","parsedDuration","LEVEL_PTS_UPDATED","FRAG_PARSED","recoverWorkerError","nextState","previousState","ChunkCache","chunks","dataLength","chunk","concatUint8Arrays","dummyTrack","inputTimeScale","pid","sequenceNumber","BaseAudioDemuxer","_audioTrack","_id3Track","frameIndex","cachedData","basePTS","lastPTS","resetInitSegment","trackDuration","resetTimeStamp","deaultTimestamp","resetContiguity","canParse","appendFrame","demux","lastDataIndex","initPTSFn","dts","partialData","videoTrack","demuxSampleAes","isHeaderPattern$1","getHeaderLength","getFullFrameLength","isHeader$1","probe$1","headerLength","frameLength","newOffset","initTrackConfig","samplerate","adtsObjectType","adtsExtensionSamplingIndex","adtsChannelConfig","manifestCodec","adtsSamplingRates","adtsSamplingIndex","channelCount","getAudioConfig","getFrameDuration","appendFrame$1","stamp","parseFrameHeader","_length","missing","_sample","chromeVersion$1","BitratesMap","SamplingRateMap","SamplesCoefficients","BytesInSlot","parseHeader","samplesPerFrame","mpegVersion","mpegLayer","bitRateIndex","sampleRateIndex","paddingBit","channelMode","bitRate","sampleCoefficient","bytesInSlot","isHeaderPattern","isHeader","probe","AACDemuxer","_BaseAudioDemuxer","container","segmentCodec","canGetFrameLength","canParse$1","emsgSchemePattern","MP4Demuxer","txtTrack","captionTrack","initData","_initData$video","_initData$audio","_timescale","_codec","hasMoofData","videoSamples","segmentedData","segmentedRange","valid","remainder","moofs","segmentValidRange","extractID3Track","emsgs","emsgInfo","schemeIdUri","timeScale","presentationTimeDelta","presentationTime","eventDuration","leftPresentationTime","rightPresentationTime","parseEmsg","getAudioBSID","bsid","numBits","bits","AC3Demuxer","_appendFrame","samplingRateCode","frameSizeCode","skipCount","lfeon","bsmod","BaseVideoParser","VideoSample","createVideoSample","units","getLastNalUnit","_VideoSample","lastUnit","pushAccessUnit","nbSamples","lastSample","ExpGolomb","bytesAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","valu","skipLZ","leadingZeroCount","skipUEG","skipEG","readUEG","clz","readEG","readBoolean","readUByte","readUShort","readUInt","skipScalingList","lastScale","nextScale","readSPS","numRefFramesInPicOrderCntCycle","scalingListCount","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","profileIdc","chromaFormatIdc","picOrderCntType","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","pixelRatio","readSliceType","AvcVideoParser","_BaseVideoParser","parseAVCPES","pes","parseAVCNALu","spsfound","audFound","_VideoSample2","iskey","sliceType","_track$pixelRatio","_track$pixelRatio2","sps","codecarray","codecstring","pps","overflow","naluState","lastState","lastUnitStart","lastUnitType","_unit","_lastUnit","SampleAesDecrypter","decryptBuffer","encryptedData","decryptAacSample","sampleIndex","curUnit","encryptedBuffer","decryptedBuffer","decryptAacSamples","getAvcEncryptedData","decodedData","encryptedDataLen","outputPos","inputPos","getAvcDecryptedUnit","uint8DecryptedData","decryptAvcSample","unitIndex","decryptAvcSamples","curUnits","PACKET_LENGTH","TSDemuxer","typeSupported","sampleAes","pmtParsed","_duration","_pmtId","_videoTrack","_txtTrack","aacOverFlow","videoParser","syncOffset","scanwindow","foundPat","packetStart","tsPackets","parsePID","pesData","isSampleAes","videoPid","audioPid","id3Pid","audioData","unknownPID","pmtId","tsPacketErrors","stt","parsePES","parseAACPES","parseMPEGPES","parseAC3PES","parseID3PES","parsePAT","parsedPIDs","parsePMT","segmentVideoCodec","segmentAudioCodec","emitParsingError","demuxResult","extractRemainingSamples","frameMissingBytes","sampleLength","frameOverflowBytes","recoverable","frameDuration","id3Sample","tableEnd","esInfoLength","logEncryptedSamplesFoundInUnencryptedStream","mpeg","mp3","ac3","parsePos","descriptorLen","stream","pesLen","pesHdrLen","pesPts","pesDts","pesFlags","payloadStartOffset","dataLen","MP3Demuxer","AAC","getSilentFrame","UINT32_MAX","MP4","avcC","btrt","dinf","dref","esds","ftyp","mdat","mdia","mfhd","minf","moov","dac3","mvex","mvhd","pasp","sdtp","stbl","stco","stsc","stsz","stts","vmhd","smhd","videoHdlr","audioHdlr","HDLR_TYPES","STTS","STSC","STCO","STSZ","VMHD","SMHD","STSD","majorBrand","avc1Brand","minorVersion","FTYP","box","DINF","upperWordDuration","lowerWordDuration","baseMediaDecodeTime","boxes","dependsOn","isDependedOn","hasRedundancy","avcc","hSpacing","vSpacing","configlen","audioStsd","sampleDependencyTable","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","cts","arraylen","isLeading","paddingValue","isNonSync","degradPrio","movie","MPEG_TS_CLOCK_FREQ_HZ","toTimescaleFromBase","destScale","srcBase","toMsFromMpegTsClock","chromeVersion","safariWebkitVersion","MP4Remuxer","vendor","ISGenerated","_initPTS","_initDTS","nextAvcDts","nextAudioPts","videoSampleDuration","isAudioContiguous","isVideoContiguous","videoTrackConfig","defaultTimeStamp","resetNextTimestamp","getVideoStartPts","rolloverDetected","minPTS","normalizePts","remux","accurateTimeOffset","audioTimeOffset","videoTimeOffset","hasAudio","hasVideo","enoughAudioSamples","enoughVideoSamples","_videoTrack$pixelRati","_config$pixelRatio","_videoTrack$pixelRati2","_config$pixelRatio2","generateIS","firstKeyFramePTS","firstKeyFrameIndex","findKeyframeIndex","forceKeyFrameOnDiscontinuity","_startPTS","audiovideoTimestampDelta","remuxAudio","audioTrackLength","remuxVideo","firstKeyFrame","flushTextTrackMetadataCueSamples","flushTextTrackUserdataCueSamples","initDTS","audioSamples","computePTSDTS","firstDTS","lastDTS","inputSamples","outputSamples","mp4SampleDuration","maxPTS","NEGATIVE_INFINITY","sortSamples","initTime","deltadts","deltapts","inputDuration","averageSampleDuration","foundHole","foundOverlap","firstPTS","nbNalu","naluLen","dtsStep","nbUnits","sampleLen","mdatSize","MUX_ERROR","stretchedLastFrame","minDtsDelta","minPtsDelta","maxDtsDelta","maxPtsDelta","VideoSampleUnits","mp4SampleLength","_j","_nbUnits","unitData","unitDataLen","ptsDelta","lastFrameDuration","stretchShortVideoTrack","gapTolerance","deltaToFrameEnd","compositionTimeOffset","Mp4Sample","nextDts","_pts","nextPts","nb","getSamplesPerFrame","scaleFactor","inputSampleDuration","rawMPEG","alignedWithVideo","timeOffsetMpegTS","maxAudioFramesDrift","newStamp","fillFrame","_j2","_nbSamples","audioSample","_pts2","unitLen","remuxEmptyAudio","init90kHz","silentFrame","reference","isKeyframe","PassThroughRemuxer","emitInitSegment","initTracks","lastEndTime","defaultInitPTS","generateInitSegment","encBoxes","isAudio","enc","tenc","tencKeyId","patchEncyptionData","getParsedTrackCodec","_initData","_initData2","rawDuration","videoDuration","audioDuration","trafs","trackDefault","truns","sidxMinStart","sidxMaxEnd","sidxDuration","sidxs","subSegmentDuration","dur","ref","getDuration","fmp4","getStartDTS","decodeTime","minDuration","isInvalidInitPts","upper","lower","offsetStartDTS","muxConfig","Transmuxer","demuxer","remuxer","decryptionPromise","transmuxConfig","currentTransmuxState","configure","uintData","discontinuity","trackSwitch","initSegmentChange","defaultInitPts","initSegmentData","encryptionType","getEncryptionType","getDecrypter","emptyResult","resetMuxers","needsProbing","configureTransmuxer","resetInitialTimestamp","transmux","currentState","transmuxResults","demuxResultOrPromise","isPromise","flushRemux","_this$currentTransmux","remuxResult","transmuxSampleAes","transmuxUnencrypted","_demux","mux","_muxConfig$i$demux","Remuxer","Demuxer","TransmuxConfig","TransmuxState","eventemitter3","emitTransmuxComplete","transmuxResult","transferable","_transmuxResult$remux","addToTransferable","handleFlushResult","forwardMessage","cmd","logFn","logType","forwardWorkerLogs","_transmuxResult","startWorker","TransmuxerInterface","onTransmuxComplete","onFlush","useWorker","workerContext","onwmsg","enableWorker","blob","objectURL","scriptURL","m2tsTypeSupported","workerPath","onWorkerMessage","resetWorker","_this$workerContext","revokeObjectURL","_frag$initSegment","_lastFrag$initSegment","snDiff","partDiff","handleTransmuxComplete","transmuxerError","_transmuxResult2","_this$workerContext2","subtitleOptionsIdentical","trackList1","trackList2","mediaAttributesIdentical","attrs1","attrs2","customAttributes","stableRenditionId","subtitleAttribute","subtitleTrackMatchesTextTrack","subtitleTrack","AudioStreamController","_BaseStreamController","videoBuffer","videoTrackCC","waitingVideoCC","bufferedTrack","switchingTrack","waitingData","mainDetails","flushing","bufferFlushed","cachedTrackLoadedData","AUDIO_TRACKS_UPDATED","onAudioTracksUpdated","AUDIO_TRACK_SWITCHING","onAudioTrackSwitching","onAudioTrackLoaded","BUFFER_RESET","onBufferReset","BUFFER_CREATED","onBufferCreated","BUFFER_FLUSHED","onBufferFlushed","INIT_PTS_FOUND","onInitPtsFound","doTickIdle","_levels$trackId","_this$media","seeking","_levels","_trackId","cache","clearWaitingFragment","startFragPrefetch","trackDetails","BUFFER_EOS","mainBufferInfo","atGap","atBufferSyncLimit","mainFrag","mainBufferLength","maxConfigBuffer","mediaPlaylist","altAudio","flushAudioIfNeeded","_track$details","defaultAudioCodec","_handleTransmuxComplete","AUDIO_TRACK_SWITCHED","_ref4","_id3$samples","completeAudioSwitch","mapFragment","_bufferInitSegment","FRAG_PARSING_INIT_SEGMENT","emittedID3","emittedText","FRAG_PARSING_USERDATA","currentLevel","variantAudioCodecs","BUFFER_CODECS","_track$details2","bufferedAttributes","switchAttributes","AudioTrackController","_BasePlaylistControll","groupIds","tracksInGroup","currentTrack","selectDefaultTrack","MANIFEST_PARSED","onManifestParsed","trackInActiveGroup","currentGroups","groupIndex","allIndex","findTrackId","audioTracksUpdated","selectedTrackId","setAudioTrack","_this$groupIds","setAudioOption","audioOption","switchIndex","renditions","variantMap","currentVideoCodec","matchingVideo","findClosestLevelWithAudioGroup","withoutCodecAndChannelsMatch","newId","lastTrack","trackLoaded","_track2","_track3","SubtitleStreamController","currentTrackId","tracksBuffered","SUBTITLE_TRACKS_UPDATED","onSubtitleTracksUpdated","SUBTITLE_TRACK_SWITCH","onSubtitleTrackSwitch","onSubtitleTrackLoaded","SUBTITLE_FRAG_PROCESSED","onSubtitleFragProcessed","fragStart","fragEnd","endOffsetSubtitles","mediaBufferTimeRanges","mainSlidingStartFragment","levelTargetDuration","foundFrag","lookupTolerance","BufferableInstance","timeranges","getRange","DOMException","SubtitleTrackController","queuedDefaultTrack","asyncPollTrackChange","pollTrackChange","useTextTrackPolling","subtitlePollingInterval","_subtitleDisplay","onTextTracksChanged","renderTextTracksNatively","findTrackForTextTrack","setSubtitleTrack","subtitlePreference","subtitleTracksUpdated","selectDefault","_track","setSubtitleOption","subtitleOption","allSubtitleTracks","toggleTrackModes","nextTrack","subtitleDisplay","_track$groupId","BufferOperationQueue","sourceBufferReference","queues","pending","queue","executeNext","insertAbort","appendBlocker","execute","onStart","onComplete","sb","updating","shiftAndExecuteNext","VIDEO_CODEC_PROFILE_REPLACE","BufferController","_objectUrl","operationQueue","bufferCodecEventsExpected","_bufferCodecEventsTotal","mediaSource","lastMpegAudioChunk","appendSource","appendErrors","pendingTracks","sourceBuffer","_onEndStreaming","pauseBuffering","_onStartStreaming","resumeBuffering","_onMediaSourceOpen","_onMediaEmptied","updateMediaElementDuration","checkPendingTracks","_onMediaSourceClose","_onMediaSourceEnded","mediaSrc","_initSourceBuffer","hasSourceTypes","getSourceBufferTypes","MEDIA_ATTACHING","onMediaAttaching","onBufferAppending","onBufferCodecs","onBufferEos","onFragParsed","FRAG_CHANGED","onFragChanged","codecEvents","_ms$constructor","objectUrl","removeAttribute","MMS","disableRemotePlayback","removeSourceChildren","addSource","endOfStream","MEDIA_DETACHED","resetBuffer","_this$mediaSource","removeBufferListeners","sourceBuffers","removeSourceBuffer","sourceBufferCount","trackNames","trackName","changeType","_trackCodec","_data$trackName","currentCodecFull","currentCodec","trackCodec","nextCodec","mimeType","appendChangeType","eventData","chunkStats","bufferAppendingStart","fragBuffering","partBuffering","checkTimestampOffset","timestampOffset","appendExecutor","_type","QUOTA_EXCEEDED_ERR","appendErrorCount","appendErrorMaxRetry","flushOperation","removeExecutor","_this7","buffersAppendedTo","blockBuffers","trimBuffers","_this8","ending","backBufferLength","liveBackBufferLength","maxBackBufferLength","targetBackBufferPosition","flushBackBuffer","frontBufferFlushThreshold","frontBufferLength","maxFrontBufferLength","targetFrontBufferPosition","flushFrontBuffer","_this9","BACK_BUFFER_REACHED","LIVE_BACK_BUFFER_REACHED","_this10","numBufferedRanges","levelDuration","mediaDuration","msDuration","liveDurationInfinity","updateSeekableRange","setLiveSeekableRange","pendingTracksCount","createSourceBuffers","BUFFER_INCOMPATIBLE_CODECS_ERROR","_this11","_track$levelCodec","addSourceBuffer","sbName","addBufferListener","_onSBUpdateStart","_onSBUpdateEnd","_onSBUpdateError","removedRanges","_this$mediaSource2","_this$mediaSource3","removeStart","removeEnd","appendBuffer","onUnblocked","_this12","blockingOperations","firstChild","sourceChildren","specialCea608CharsCodes","getCharForByte","NR_ROWS","NR_COLS","rowsLowCh1","rowsHighCh1","rowsLowCh2","rowsHighCh2","backgroundColors","CaptionsLogger","verboseLevel","severity","numArrayToHexArray","numArray","hexArray","PenState","foreground","underline","italics","background","flash","setStyles","styles","attribs","equals","other","newPenState","StyledUnicodeChar","uchar","penState","_proto3","setChar","setPenState","newChar","isEmpty","Row","currPenState","cueStartTime","_proto4","empty","setCursor","absPos","moveCursor","relPos","newPos","backSpace","insertChar","_byte2","_char","clearFromPos","clearToEndOfRow","getTextString","_char2","setPenStyles","CaptionScreen","rows","currRow","nrRollUpRows","lastOutputScreen","_proto5","_char3","setPen","setPAC","pacData","newRow","row","topRowIndex","prevLineTime","prevPos","setBkgData","bkgData","setRollUpRows","nrRows","rollUp","getDisplayText","topRow","asOneRow","displayText","rowNr","rowText","getTextAndFormat","Cea608Channel","channelNumber","outputFilter","chNr","verbose","displayedMemory","nonDisplayedMemory","currRollUpRow","writeScreen","_proto6","setHandler","newHandler","setMode","newMode","insertChars","screen","outputDataUpdate","ccRCL","ccBS","ccAOF","ccAON","ccDER","ccRU","ccFON","ccRDC","ccTR","ccRTD","ccEDM","ccCR","ccENM","ccEOC","tmp","ccTO","nrCols","ccMIDROW","secondByte","colorIndex","newCue","dispatchCue","cueSplitAtTime","Cea608Parser","field","out1","out2","currentChannel","cmdHistory","_proto7","channel","addData","byteList","cmdFound","charsFound","hasCmdRepeated","setLastCmd","parseCmd","parseMidrow","parsePAC","parseBackgroundAttributes","parseChars","currChNr","interpretPAC","_byte3","pacIndex","channelNr","oneCode","charCodes","charCode1","OutputFilter","timelineController","cueRanges","addCues","createCaptionsTrack","AllowedDirections","AllowedAlignments","isAllowedValue","allowed","lcValue","findAlignSetting","extend","cobj","baseObj","hasBeenReset","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","findDirectionSetting","SyntaxError","displayState","getCueAsHTML","WebVTT","convertCueToDOMTree","StringDecoder","parseTimeStamp","computeSeconds","f","Settings","dflt","defaultKey","alt","integer","percent","parseOptions","keyValueDelim","groupDelim","kv","defaults","center","align","parseCue","regionList","oInput","consumeTimeStamp","ts","skipWhitespace","settings","vals","region","vertical","lineAlign","snapToLines","consumeCueSettings","fixLineBreaks","VTTParser","oncue","onparsingerror","onflush","collectNextLine","alreadyCollectedLine","hasSubstring","LINEBREAKS","inputString","searchString","generateCueId","parseWebVTT","vttByteArray","vttCCs","callBack","errorCallBack","parsingError","srcScale","vttLines","cueTime","timestampMapMPEGTS","timestampMapLOCAL","inHeader","currCC","cueOffset","webVttMpegTsMapOffset","new","prevCC","presentationOffset","_prevCC","calculateOffset","timeString","secs","mins","hours","cueString2millis","IMSC1_CODEC","HMSF_REGEX","TIME_UNIT_REGEX","textAlignToLineAlign","parseIMSC1","ttmlList","syncTime","ttml","tt","defaultRateInfo","subFrameRate","frameRateMultiplier","tickRate","rateInfo","styleElements","collectionToDictionary","getElementCollection","regionElements","cueElements","cueElement","cueText","getTextContent","parseTtmlTime","timestampParsingError","ttsNs","regionStyle","styleAttributes","regionStyleName","getAttributeNS","getTtmlStyles","textAlign","parseTTML","fromElement","parentName","childName","elementsWithId","dict","_node$childNodes","nodeName","hasAttributeNS","timeAttributeValue","parseHoursMinutesSecondsFrames","parseTimeUnits","TimelineController","Cues","unparsedVttFrags","captionsTracks","nonNativeCaptionsTracks","cea608Parser1","cea608Parser2","lastCc","captionsProperties","cueHandler","textTrack1","captionsTextTrack1Label","languageCode","captionsTextTrack1LanguageCode","textTrack2","captionsTextTrack2Label","captionsTextTrack2LanguageCode","textTrack3","captionsTextTrack3Label","captionsTextTrack3LanguageCode","textTrack4","captionsTextTrack4Label","captionsTextTrack4LanguageCode","onFragParsingUserdata","onFragDecrypted","SUBTITLE_TRACKS_CLEARED","onSubtitleTracksCleared","initCea608Parsers","enableCEA708Captions","channel1","channel2","channel3","channel4","cueRange","overlap","x1","y1","y2","CUES_PARSED","getExistingTrack","canReuseVttTextTrack","createNativeTrack","createNonNativeTrack","_captionsProperties$t","existingTrack","createTextTrack","trackProperties","closedCaptions","NON_NATIVE_TEXT_TRACKS_FOUND","_cleanTracks","hasIMSC1","enableWebVTT","enableIMSC1","inUseTracks","inUseTrack","textTrackKind","captionsOrSubtitlesFromCharacteristics","unusedTextTracks","tracksList","captionsTrack","instreamIdMatch","closedCaptionsForLevel","_data$part$index","decrypted","trackPlaylistMedia","_parseIMSC1","_parseVTTs","_appendCues","maxAvCC","missingInitPTS","_fallbackToIMSC1","fragLevel","ccBytes","ccdatas","extractCea608Data","actualCCBytes","tmpByte","ccbyte1","ccbyte2","ccType","manifestTrack","CapLevelController","autoLevelCapping","restrictedLevels","clientRect","streamController","setStreamController","unregisterListener","stopCapping","FPS_DROP_LEVEL_CAPPING","onFpsDropLevelCapping","droppedLevel","isLevelAllowed","HTMLVideoElement","detectPlayerSize","capLevelToPlayerSize","startCapping","mediaHeight","mediaWidth","maxLevel","getMaxLevel","nextLevelSwitch","capLevelIndex","validLevels","getMaxLevelByMediaSize","getDimensions","boundsRect","bottom","restrictedLevel","maxLevelIndex","squareSize","curLevel","contentScaleFactor","ignoreDevicePixelRatio","devicePixelRatio","FPSController","isVideoPlaybackQualityAvailable","lastTime","lastDroppedFrames","lastDecodedFrames","capLevelOnFPSDrop","getVideoPlaybackQuality","checkFPSInterval","fpsDroppedMonitoringPeriod","checkFPS","decodedFrames","droppedFrames","currentPeriod","currentDropped","currentDecoded","droppedFPS","FPS_DROP","totalDroppedFrames","fpsDroppedMonitoringThreshold","videoPlaybackQuality","totalVideoFrames","droppedVideoFrames","webkitDecodedFrameCount","webkitDroppedFrameCount","LOGGER_PREFIX","EMEController","keyFormatPromise","keySystemAccessPromises","_requestLicenseFailureCount","mediaKeySessions","keyIdToKeySessionPromise","setMediaKeysQueue","CDMCleanupPromise","onMediaEncrypted","_onMediaEncrypted","onWaitingForKey","_onWaitingForKey","onMediaDetached","requestMediaKeySystemAccessFunc","licenseXhrSetup","licenseResponseCallback","drmSystemOptions","getLicenseServerUrl","keySystemConfiguration","licenseUrl","getServerCertificateUrl","serverCertificateUrl","attemptKeySystemAccess","uniqueCodec","attempt","keySystems","getMediaKeysPromise","mediaKeys","EMEKeyError","KEY_SYSTEM_NO_ACCESS","supportedConfigurations","errMessage","mediaKeySystemConfigs","initDataTypes","persistentState","distinctiveIdentifier","sessionTypes","sessionType","audioCapabilities","robustness","audioRobustness","encryptionScheme","audioEncryptionScheme","videoCapabilities","videoRobustness","videoEncryptionScheme","createMediaKeySystemConfigurations","getSupportedMediaKeySystemConfigurations","keySystemAccess","_keySystemAccessPromises","mediaKeySystemAccess","certificateRequest","fetchServerCertificate","createMediaKeys","certificate","setMediaKeysServerCertificate","createMediaKeySessionContext","mediaKeysSession","mediaKeySessionContext","keyStatus","renewKeySession","keySessionContext","getKeyIdString","generateRequestWithPreferredKeySession","removeSession","updateKeySession","_mediaKeySessionConte","keySession","sessionId","selectKeySystemFormat","getKeyFormatPromise","keySystemsInConfig","getKeySystemSelectionPromise","keySystemFormat","loadKey","keyInfo","keyDetails","keySessionContextPromise","getKeySystemForKeyPromise","throwIfDestroyed","attemptSetMediaKeys","handleError","KEY_SYSTEM_NO_KEYS","KEY_SYSTEM_NO_CONFIGURED_LICENSE","initDataType","keySystemDomain","psshInfo","boxSize","dataSizeOrKidCount","parsePssh","keySystemIdToKeySystemDomain","keyIdHex","keyContext","oldKeyIdHex","_keySystemToKeySystem","setMediaKeysPromise","setMediaKeys","_this$config$drmSyste","_this$config$drmSyste2","generateRequestFilter","generateRequest","mappedInitData","licenseStatus","onmessage","_onmessage","messageType","renewLicense","onkeystatuseschange","_onkeystatuseschange","onKeyStatusChange","keyUsablePromise","KEY_SYSTEM_STATUS_INTERNAL_ERROR","_context$mediaKeysSes","KEY_SYSTEM_NO_SESSION","keyStatuses","certLoader","certLoadPolicy","contex","KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED","cert","setServerCertificate","KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED","keyMessage","requestLicense","KEY_SYSTEM_SESSION_UPDATE_FAILED","unpackPlayReadyKeyMessage","licenseChallenge","xmlString","keyMessageXml","_header$querySelector","_header$querySelector2","challengeElement","challengeText","setupLicenseXHR","keysListItem","licenseXhrSetupResult","KEY_SYSTEM_LICENSE_REQUEST_FAILED","statusText","attemptsLeft","licenseXhr","DONE","_ref5","emeEnabled","_this13","mediaKeysList","keySessionCount","_ref6","formats","_this14","CmObjectType","CmStreamingFormat","CmcdHeaderField","_CmcdHeaderMap","_this15","CmcdHeaderMap","OBJECT","REQUEST","SESSION","STATUS","SfItem","SfToken","DICT","throwError","BARE_ITEM","BOOLEAN","BYTES","DECIMAL","INTEGER","STRING_REGEX","TOKEN","KEY","serializeError","serializeByteSequence","isView","binary","btoa","serializeInteger","isInvalidInt","roundToEven","precision","decimalShift","EPSILON","flooredValue","serializeDecimal","roundedValue","STRING","serializeToken","token","symbol","serializeBareItem","isInteger","serializeString","serializeBoolean","serializeDate","serializeKey","serializeParams","serializeItem","serializeDict","whitespace","optionalWhiteSpace","isTokenField","toRounded","toHundred","CmcdFormatters","br","bl","dl","mtp","nor","toPath","fromPath","urlToRelativePath","rtp","tb","encodeCmcd","cmcd","encodeSfDict","formatters","formatter","processCmcd","appendCmcdHeaders","headerMap","customHeaderMap","shards","_headerMap$find","toCmcdHeaders","CMCD_PARAM","REGEX","appendCmcdQuery","toCmcdQuery","CMCDController","cid","useHeaders","includeKeys","initialized","starved","audioBuffer","onWaiting","onPlaying","applyPlaylistData","ot","MANIFEST","su","applyFragmentData","getObjectType","VIDEO","MUXED","getTopBandwidth","getBufferLength","createPlaylistLoader","createFragmentLoader","_uuid","dt","contentId","_data$tracks$audio","_data$tracks$video","createData","sf","HLS","pr","bandwidthEstimate","isVideo","INIT","bs","TIMED_TEXT","_step","_iterator","Ctor","CmcdPlaylistLoader","callbacks","CmcdFragmentLoader","ContentSteeringController","pathwayPriority","timeToLoad","reloadTimer","penalizedPathways","ttl","scheduleRefresh","loadSteeringManifest","levelToRemove","errorPathway","_pathwayId","getPathwayForGroupId","pathways","updatePathwayPriority","filterParsedLevels","pathwayLevels","getLevelsForPathway","_pathwayId2","_pathwayId3","selectedIndex","selectedLevel","levelAfterChange","defaultPathway","clonePathways","pathwayClones","audioGroupCloneMap","subtitleGroupCloneMap","pathwayClone","cloneId","baseId","uriReplacement","clonedVariants","baseLevel","clonedAudioGroupId","clonedSubtitleGroupId","performUriReplacement","clonedLevel","cloneRenditionGroups","throughput","steeringManifestLoadPolicy","steeringData","VERSION","TTL","reloadUri","loadedSteeringData","steeringManifest","STEERING_MANIFEST_LOADED","ttlMs","_this3$hls","groupCloneMap","clonedTracks","clonedTrack","stableId","perOptionKey","perVariantUri","HOST","PARAMS","perOptionUris","AGE_HEADER_LINE_REGEX","XhrLoader","xhrSetup","requestTimeout","retryTimeout","abortInternal","onprogress","_this$callbacks","loadInternal","openAndSendXhr","_config$loadPolicy","readystatechange","loadprogress","loadtimeout","_status","useResponse","responseURL","_this$context","lengthComputable","FetchLoader","fetchSetup","controller","getRequest","AbortController","initParams","signal","credentials","getRequestParameters","isArrayBuffer","LENGTH","ok","FetchError","contentRange","byteRangeLength","byteRangeHeader","getByteRangeLength","getContentLength","loadProgressively","responseData","chunkCache","reader","getReader","pump","read","chromeOrFirefox","WHITESPACE_CHAR","hlsDefaultConfig","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startLevel","abrController","bufferController","capLevelController","errorController","fpsController","abrEwmaDefaultEstimateMax","minAutoBitrate","testBandwidth","manifestLoadingTimeOut","manifestLoadingMaxRetry","manifestLoadingRetryDelay","manifestLoadingMaxRetryTimeout","levelLoadingTimeOut","levelLoadingMaxRetry","levelLoadingRetryDelay","levelLoadingMaxRetryTimeout","fragLoadingTimeOut","fragLoadingMaxRetry","fragLoadingRetryDelay","fragLoadingMaxRetryTimeout","captionScreen","indenting","_track$cues","cueA","cueB","subtitleStreamController","subtitleTrackController","audioStreamController","audioTrackController","emeController","cmcdController","contentSteeringController","deepCpy","enableStreamingMode","currentLoader","ReadableStream","fetchSupported","LevelController","_firstLevel","_maxAutoLevel","_startLevel","currentLevelIndex","manualLevelIndex","steering","onParsedComplete","resetLevels","redundantSet","generatePathwaySet","resolutionFound","videoCodecFound","audioCodecFound","levelParsed","_audioCodec","_videoCodec","avcdata","convertAVC1ToAVCOTI","FRAMERATE","HDCP","PATHWAY","RESOLUTION","VIDEO_RANGE","pathwayCount","filterAndSortMediaOptions","filteredLevels","assignTrackIdsByGroup","unsortedLevels","valueA","valueB","_valueA","_valueB","firstLevelInPlaylist","_this$hls$userConfig","firstLevelBitrate","startingBwEstimate","audioOnly","edata","forceStartLoad","MANIFEST_INCOMPATIBLE_CODECS_ERROR","_data$deliveryDirecti2","_data$deliveryDirecti","_this$currentLevel","checkMaxAutoUpdated","newLevel","lastLevelIndex","lastLevel","lastPathwayId","levelSwitchingData","audioGroupIds","textGroupIds","configStartLevel","KeyLoader","keyUriToKeyInfo","_loader$context","createKeyLoadError","loadingFrag","_keyInfo","_keyInfo2","_keyInfo$mediaKeySess","keyLoadPromise","loadKeyHTTP","loadKeyEME","getSourceBuffer","SourceBuffer","WebKitSourceBuffer","isMSESupported","GapController","nudgeRetry","stallReported","stalled","moved","poll","activeFrag","seeked","beginSeek","hasEnoughBuffer","noBufferGap","startJump","maxStartGapJump","partialOrGap","_trySkipBufferHole","tnow","stalledDuration","_reportStall","bufferedWithHoles","_tryFixBufferStall","_stalledDuration","stalledDurationMs","_tryNudgeBuffer","bufferStarved","waiting","gapLength","startGap","startFrag","startProvisioned","moreToLoad","provisioned","StreamController","audioCodecSwap","gapController","_forceStartLoad","fragPlaying","onvplaying","onvseeked","fragLastKbps","couldBacktrack","audioCodecSwitch","onFragLoadEmergencyAborted","onAudioTrackSwitched","_currentLevel","checkBuffer","checkFragmentChanged","getMainFwdBufferInfo","lastDetails","manualLevel","_this$backtrackFragme","backtrackFrag","_loadBitrateTestFrag","followingBufferedFrag","immediateLevelSwitch","abortCurrentFrag","fetchdelay","fragPlayingCurrent","bufferedFrag","nextBufferedFrag","maxStart","startPts","onMediaPlaying","onMediaSeeked","_sourceBuffer$prototy","aac","heaac","_curLevel$details","newLevelId","_getAudioCodec","fromAltAudio","mediaTrack","alternate","swapAudioCodec","isFirstFragment","isFirstInDiscontinuity","backtrack","_endPTS","_startDTS","_endDTS","audioMetadata","fragCurrentLevel","LEVEL_SWITCHED","currentFrag","epocMs","Hls","coreComponents","networkControllers","_emitter","_autoLevelCapping","_maxHdcpLevel","latencyController","levelController","_media","triggeringException","defaultConfig","defaultsCopy","deprecatedSettings","policyName","policyNotSet","deprecatedSetting","mergeConfig","DefaultConfig","ConfigAbrController","ConfigBufferController","ConfigCapLevelController","ConfigErrorController","ConfigFpsController","playListLoader","id3TrackController","ConfigContentSteeringController","createController","AudioStreamControllerClass","SubtitleStreamControllerClass","codecsForVideoContainer","codecForAudioContainer","ControllerClass","controllerInstance","eventObject","DESTROYING","detachMedia","attachMedia","loadSource","loadedSource","loadingSource","_this$audioTrackContr","_this$subtitleTrackCo","shouldStartCapping","newCapLevelToPlayerSize","isHdcpLevel","currentProgramDateTime","audioTrackId","subtitleTrackId","factory","reactIs","REACT_STATICS","childContextTypes","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","C","E","w","u","isReactComponent","__f","isPureReactComponent","R","__b","N","for","$$typeof","A","O","only","toArray","T","__e","__","__c","__k","I","unmount","L","__H","__P","U","__v","insertBefore","__d","D","__u","F","__a","M","V","__R","__h","__O","forceUpdate","W","revealOrder","P","getChildContext","z","containerInfo","B","H","Z","Y","q","G","J","K","Q","X","cancelBubble","nn","defaultPrevented","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","tn","en","rn","vnode","multiple","un","__r","diffed","ln","ReactCurrentDispatcher","readContext","__n","cn","an","hn","vn","dn","pn","mn","yn","_n","bn","Sn","gn","Cn","useState","useId","useReducer","useLayoutEffect","useInsertionEffect","useTransition","useDeferredValue","useSyncExternalStore","startTransition","useRef","useImperativeHandle","useMemo","useCallback","useContext","useDebugValue","Children","hydrate","unmountComponentAtNode","createPortal","createContext","createFactory","cloneElement","createRef","isValidElement","findDOMNode","Component","PureComponent","forwardRef","flushSync","unstable_batchedUpdates","StrictMode","Suspense","SuspenseList","lazy","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","debounceRendering","S","__E","sub","_sb","__s","componentWillMount","componentWillReceiveProps","componentWillUpdate","getSnapshotBeforeUpdate","createTextNode","createElementNS","is","dangerouslySetInnerHTML","__html","innerHTML","Consumer","Provider","__V","__N","__m","cancelAnimationFrame","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","ReactReduxContext","batch","getBatch","nullListeners","notify","createSubscription","parentSub","unsubscribe","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","isSubscribed","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","useIsomorphicLayoutEffect","contextValue","Context","_objectWithoutPropertiesLoose","excluded","sourceKeys","_excluded","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","connectOptions","wrappedComponentName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","forwarded","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","actionCreators","boundActionCreators","actionCreator","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","handleSubsequentCalls","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","createStoreHook","useReduxContext","createDispatchHook","useStore","useDispatch","refEquality","createSelectorHook","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","newBatch","useSelector","_typeof","_defineProperty","prim","enumerableOnly","symbols","sym","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","REPLACE","PROBE_UNKNOWN_ACTION","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","legacy_createStore","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","bindActionCreator","applyMiddleware","middlewares","_dispatch","middlewareAPI","chain","middleware","__assign","__awaiter","_arguments","generator","fulfilled","step","rejected","__generator","sent","trys","ops","verb","__spreadArrays","il","jl","SubscriptionClient","_global","NativeWebSocket","WebSocket","MozWebSocket","eventemitter3_1","is_string_1","is_object_1","printer_1","getOperationAST_1","symbol_observable_1","protocol_1","defaults_1","message_types_1","webSocketImpl","webSocketProtocols","connectionCallback","connectionParams","minTimeout","MIN_WS_TIMEOUT","WS_TIMEOUT","_f","reconnect","_g","reconnectionAttempts","_h","inactivityTimeout","_k","wsOptionArguments","wsImpl","wsProtocols","GRAPHQL_WS","operations","nextOperationId","minWsTimeout","wsTimeout","unsentMessagesQueue","reconnecting","closedByUser","eventEmitter","maxConnectTimeGenerator","createMaxConnectTimeGenerator","getConnectionParams","CLOSED","isForced","clearInactivityTimeout","clearCheckConnectionInterval","clearMaxConnectTimeout","clearTryReconnectTimeout","unsubscribeAll","sendMessage","GQL_CONNECTION_TERMINATE","onopen","onclose","tryReconnect","opId","getObserver","executeOperation","observerOrNext","onConnected","onConnecting","onDisconnected","onReconnected","onReconnecting","subId","applyMiddlewares","use","generateOperationId","processedOptions","checkOperationOptions","GQL_START","formatErrors","minValue","maxValue","checkConnectionIntervalId","maxConnectTimeoutId","tryReconnectTimeoutId","inactivityTimeoutId","setInactivityTimeout","variables","buildMessage","originalError","sendMessageRaw","OPEN","serializedMessage","CONNECTING","flushUnsentMessagesQueue","checkConnection","wasKeepAliveReceived","checkMaxConnectTimeout","error_1","GQL_CONNECTION_INIT","GQL_CONNECTION_ERROR","processReceivedData","receivedData","parsedMessage","GQL_DATA","GQL_COMPLETE","GQL_ERROR","GQL_CONNECTION_ACK","parsedPayload","GQL_CONNECTION_KEEP_ALIVE","firstKA","GQL_STOP","MessageTypes","SUBSCRIPTION_START","SUBSCRIPTION_DATA","SUBSCRIPTION_SUCCESS","SUBSCRIPTION_FAIL","SUBSCRIPTION_END","INIT_SUCCESS","INIT_FAIL","KEEP_ALIVE","GRAPHQL_SUBSCRIPTIONS","_App","useNativeMobileAppOpen","useAppMessages","useToggleNoConnectionBanner","theme","useTheme","local","useLocalization","focus","useActiveAppLayer","hasBottomBanner","useBottomBanner","loginStateIsKnown","useLoginState","LoginState","Unknown","mobileHeader","setMobileHeader","loginFallback","setLoginFallback","useAppLayerFocus","pagesRef","pageRef","modalRef","contextMenuRef","isOsWindows","getOSName","OperatingSystemName","Windows","handleRouteChange","isFrontPage","isMobile","useShowNativeMobileAppPrompt","AppPromptPage","DefaultTemplate","onChange","PrivateRoute","MyMusicAlbumsPage","MyMusicArtistsPage","MyMusicPlaylistsPage","MyMusicTracksPage","SettingsPage","EditProfilePage","ProfilesPage","FrontPage","AlbumPage","AlbumArtistAlbumsShowAllPage","UserRecommendationsPage","RecommendationPage","FrontPageItemShowAllPage","UserHistoryPage","ChartPage","ArtistRadioPage","ArtistPage","ArtistAlbumsShowAllPage","ArtistSimilarArtistsShowAllPage","ArtistSinglesShowAllPage","ArtistAllTracksShowAllPage","LiveRadioCategoryPage","LiveRadioPage","MixRadioCategoryPage","MixRadiosPage","PlaylistCategoryPage","PlaylistPage","RadioPage","RadioPageItemShowAllPage","TrackRadioPage","LayoutPage","LayoutPageItemShowAllPage","pageType","ContentType","ThemePageShowAll","SearchPage","formatUrlToUTF8","SearchAlbumResultsShowAllPage","SearchArtistResultsShowAllPage","SearchPlaylistResultsShowAllPage","SearchTrackResultsShowAllPage","ArtistPopularTracksShowAllPage","ArtistAppearsOnShowAllPage","UnhandledRoute","NotFoundPage","PageLoadSpinner","AppBanner","AppToast","AppModal","AppContextMenu","DragLabel","SessionFrame","App","ApolloProvider","graphqlClient","useContextMenus","menu","getContextMenuAppSheets","visible","isOpen","trySetFocusWithin","activeElement","hasFocusWithin","focusable","preventScroll","useRefUpdate","pagesEl","pageEl","modalEl","contextMenuEl","active","setFocus","AppLayer","Page","Modal","ContextMenu","getLocalization","browserLang","LanguageSetting","Danish","Language","English","Auto","ui","localizationSetting","browserLanguage","getBrowserLang","getLanguageSettingFromState","getOsTheme","Theme","Dark","Light","getThemeSettingFromState","getTheme","osTheme","ThemeSetting","setTheme","darkChange","newTheme","darkQuery","online","useOnline","show","NOTIFICATION_BANNER_TOGGLE","warning","BannerWarning","NoConnection","Badge","backgroundColor","BasicRange","handleOnInput","progressStyle","onInput","ButtonDesign","MouseButton","getIconSize","design","DefaultMicro","DefaultSmall","LightBrandSmall","LightMicro","LightSmall","PrimaryMicro","PrimarySmall","SecondarySmall","TextBrandSmall","TextSmall","IconSize","Small","ContextMenuBottom","Cover","DefaultBig","LightBig","LightBrandBig","NavBarLink","None","PlayableLinkMaxiPrimary","PlayableLinkMaxiSecondary","PlayableLinkPrimary2Lines","PlayableLinkPrimary","PlayableLinkSecondary","PlayableRow","PlayerSecondary","PrimaryBig","SecondaryBig","SideBarLinkBig","SideBarLinkBigMinimal","SideBarLinkMedium","TextBrandInline","TextBrandMedium","TextInline","TextInlineMedium","Default","PlayerPrimary","ProfileGiant","Big","preventActionTimeoutId","preventAction","Button","activated","allowModifierKeys","propChildren","draggableItemFn","hover","propIcon","inheritStates","inline","link","onContextMenu","onPointerEnter","onPointerLeave","testLocator","ariaLabel","toggled","linkIcon","linkText","propOnClick","externalUrl","tabIndex","icon","getIcon","hasPrimaryAction","hasContextMenuAction","setActive","onClick","navigateForward","PAGE_CLICK","stopPropagation","preventDefault","inlineClassNames","draggable","elementProps","button","Main","onMouseDown","onMouseUp","onDragEnd","SET_USER_DRAGGING","onDragStart","draggableItem","dataTransfer","stringifiedItem","getElementById","effectAllowed","dropEffect","setDragImage","DefaultLogMessage","UnexpectedNull","content","Content","LinkElement","ExternalLinkElement","ButtonElement","Link","linkRef","activeClassName","childs","flat","Icon","ButtonClearSearchHistory","translations","useTranslations","USER_CLEAR_SEARCH_HISTORY","TestLocator","SearchClearHistory","ClearSearchHistory","ButtonFavorite","favorite","isFavorite","useFavoriteStatus","IconName","FavoritesActive","Favorites","section","toggle","PLAYER_TOGGLE_FAVORITE","playables","VoiceOverRemoveFromMyMusic","VoiceOverAddToMyMusic","ButtonGoToArtistRadio","useLinkContext","ArtistRadio","Sound","ContextOptionGoToArtistRadioAction","ButtonMore","closeContextMenuOnNavigation","disabledProp","Meatballs","onOpen","getHasContextMenu","useContextMenu","ResourceContextMenu","resourceType","getIsLoggedInFromState","ButtonMoreMyMusicPlaylists","MyMusicPlaylistsContextMenu","loggedIn","useDisplayLoggedIn","notificationFeedEnabled","isNotificationFeedEnabled","notificationFeedButtonRef","notificationFeed","NotificationFeedContextMenu","ContextMenuSheetWidth","Wide","currentUnseen","useCurrentUnseenNotificationsExist","openNotificationFeed","fetchAndMarkNotifications","openAtPosition","DotNotification","Notification","PageHeaderNotificationFeedButton","ButtonPlayBig","playable","PlaySmall","createAndStartUserPlayTraceModel","TraceName","ClickToSound","AUDIO_INPUT_SET_AND_PLAY","shuffle","ShuffleState","Off","playableContext","AudioContextAction","UserPageSetAndPlay","Play","ButtonPlayRadio","StartRadio","ButtonPlayShuffleBig","Shuffle","ButtonSort","sortOptions","SortContextMenu","Sort","CheckBoxButton","Checkmark16","CheckMark","Checkmark","FormState","InputLabel","RangeType","PlayRange","onSeekPositionChange","usePlayRange","audioProperties","useAudioProperties","playState","inputRef","inputRange","drag","setDrag","setRandom","setProgressStyle","isTabActive","useTabIsActive","isInputLiveRadio","player","AudioInputType","LiveRadio","getDelay","getAudioItemPositionDelay","getAudioItemPositionPercent","PlayState","Playing","animationPlayState","Buffering","Paused","Stopped","animationDuration","animationDelay","playStartMs","getPercentFromInput","PLAYER_UI_SEEKING","handleOnChange","animation","MobileMini","onTouchEnd","RadioButton","Select","TextInputState","onFocus","hasFocus","setHasFocus","onBlur","seleced","ArrowDown","Switch","TextArea","spellcheck","propVal","placeholder","setValue","TextInput","autoComplete","autoFocus","onKeyDown","rightRef","rightWidth","useResizeObserver","UnexpectedValue","Delete16","paddingLeft","paddingRight","SearchTextInput","Search","VolumeRange","volumeLevel","toggleMute","PLAYER_SET_MUTE","setVolume","PLAYER_SET_VOLUME","getVolumeIcon","CoverSize","CoverRounding","getPlaceholderPath","assetPaths","coverPlaceholderLight","coverPlaceholderDark","disabledAction","dynamicSize","navigate","rounding","disableLazyLoad","highlight","useLinkContextFromPreview","preview","template","getResourceCoverTemplate","srcSet","sizes","xDesciptor","getCoverSizes","mainSize","Size48","getCoverSrcFromTemplate","sets","sizeSrc","getCoverSrcSet","useCoverUrl","roundingStr","Circle","hasSrc","fallbackPath","onlineChage","setError","highlighted","setHighlighed","imageOK","getToolTip","getAltText","srcSetPath","CoverTestLocator","ResourceCover","spinner","getIsCoverRounded","PlayableLoadSpinner","getStoreUrl","NativeMobileAppStore","AppleAppStore","appStore","GooglePlayStore","googlePlay","getAppLink","WebAppBrand","Telmore","YouSee","DownloadAppButton","getNativeMobileAppStore","appLink","webAppBrand","imgUrl","xlinkHref","iconSprites","Line","logoLight","logoDark","useSectionContext","SideBar","useLinkAndPreviewContext","SoundbarState","SoundbarStyle","Soundbars","svg","unpauseAnimations","pauseAnimations","viewBox","xmlns","stroke","strokeWidth","strokeLinecap","repeatCount","PlayableSoundbars","usePlayablePropertiesFromState","Spinner","SpinnerSize","Size24","useDelay","DelayType","AnimationFrame","SpinnerState","In","Out","xmlnsXlink","xmlSpace","cx","cy","useBufferingSpinner","ContentLoadSpinner","setVisible","timeoutId","animations","spinnerPageLoad","should","timeOutId","ScrollingText","useScrollingText","contentRef","running","duration1","duration2","move","fade","ActionRow","banner","latest","setLatest","useLatestBanner","hasWarning","setHasWarning","closedDelay","setClosedDelay","TimeOut","msec","useBannerOpen","MaintenanceBanner","NoConnectionBanner","SentryCutoff","SentryCutoffBanner","notifications","maintenanceBannerData","AppMaintenanceBannerTitle","showMaintenanceModal","MaintenanceBannerReadMore","Banner","inviteFlowReadMoreLink","useInviteFlowHelpUrl","SentryCutOffReadMoreOption","SentryCutOffTitle","serious","ErrorBannerNoNetworkExternal","bannerWarningPriority","banners","CastButton","isAvailable","cast","isControllerChromecast","AudioControllerType","Chromecast","userToggleCastSession","PlayerChromecastButton","ControlStyle","Control","ControlGroup","DropPin","customClass","DropZone","allowDrop","onDropFn","onHoverChange","dragHover","setDragHover","userDragging","dragOver","userDraggingItem","dragEnter","dragLeave","drop","getData","showDropZone","onDragOver","onDragLeave","onDragEnter","onDrop","EmptyState","subtitle","InputSection","IconGroup","ItemGroup","scrollingText","LiveRadioTitle","soundbarPlayState","LocalizationSettingControl","change","SET_LOCALIZATION_SETTING","settingsLanguageDanish","SettingsLanguageDanish","settingsLanguageEnglish","SettingsLanguageEnglish","settingsLanguageSystem","SettingsLanguageSystem","SettingsLanguageSystemDescription","PageTopBar","useAppMediaSize","MediaSize","Mobile","MobileTopBar","DesktopTopBar","showRight","page","getLink","middle","up","back","disableMobileTitle","onClose","backButton","ArrowLeftAndroid","upButton","closeButton","MaxiPlayerTopBar","showQueue","trackParent","currentRadio","liveRadio","trackParentTitle","getLinkFromResource","SET_MAXIPLAYER_OPEN","MobileMaxiPlayerOpen","Closed","VolumeExpandButton","direction","ExpandDirection","Down","DesktopPlayerPrimaryControls","canPlay","canPause","Next","Previous","isTabletLarge","useMatchMedia","maxWidth","loginStateIsUnknown","playerNext","PLAYER_NEXT","UserPlayerNext","playerPreviousOrRewind","PLAYER_PREVIOUS_OR_REWIND","UserPlayerPreviousOrRewind","playerShuffle","PLAYER_SHUFFLE","UserPlayerShuffle","playerTogglePlay","PLAYER_TOGGLE_PLAY","UserPlayerTogglePlay","playerRepeat","PLAYER_REPEAT","getShuffleIcon","isShuffleDisabled","PlayerShuffleButton","isPreviousDisabled","PlayerPreviousButton","getPlayIcon","PlayerPlayPauseButton","Pause","isNextDisabled","PlayerNextButton","RepeatStatus","isRepeatDisabled","getRepeatIcon","PlayerRepeatButton","MaxiPlayerPrimaryControl","rewindOrPlayPrevious","DesktopPlayerSecondaryControls","toggleQueue","seekPosition","useSecondsPlayedFromState","secondsPlayed","isDesktopSmall","minWidth","isDesktopLarge","useLyricsState","isLyricsEnabled","isLyricsAvailable","isLyricsOpen","buttonMoreRef","menuButtonMoreClick","PlayerDesktopContextMenu","onToggleLyrics","toggleLyrics","isQueueDisabled","isQueueViewDisabled","getShortTimeSpanFromSecondsHHMMSS","Up","isFeatureEnabled","Feature","LyricsIconWhenNotAvailable","Lyrics","PlayerLyricsToggleButton","Queue","PlayerQueueToggleButton","MaxiPlayerSecondaryControl","TOGGLE_MAXIPLAYER_QUEUE_OPEN","DesktopPlayerTrackControl","useCurrentAudioSecondaryResourceFromState","useCurrentLanePrimaryResourceFromState","imageResource","imageType","sectionContext","Player","usePreviewContext","imageContext","useOnRightClickContextMenu","ResourceCard","Size96","LiveRadioPlayable","PlayerFavoriteButton","PlayerMoreButton","MaxiPlayerTrackControl","ResourceCardMaxiPlayer","PreviewDisplayType","PreviewLinksDesign","getPrimaryTextDesign","displayType","ResourceTextDesign","Single","PrimarySmall2Lines","getSecondaryTextDesign","AlbumRecommendation","TrackRecommendation","SecondarySmall2Lines","PreviewLinks","onNavigate","primaryTextDesign","secondaryTextDesign","useLinkContextsFromPreview","nobreak","ResourceLink","links","testLocatorName","PreviewTexts","ResourceText","PreviewAction","PreviewRow","available","editable","buttons","columns","dropProps","mainAction","onAction","expandContent","multiselect","usePreviewScrollToHighlight","PreviewRowTestLocator","Navigate","PreviewSquare","PreviewSquareTestLocator","SmallPreviewPlayButton","isPlayingOrBuffering","playPauseIconPlayQueue","Pause16","Play16","playPauseIconLiveRadio","Stop16","playPauseIcon","PreviewPlayButton","play","isPlayable","getPlayablePropertiesFromState","isLoaded","getAudioPropertiesFromState","PLAYER_SET_PLAY","UserPreviewTogglePlay","UserPreviewSetAndPlay","PlayablePreviewRowCover","soundbars","TrackPlayable","CoverOverlay","playButton","hasButtons","QueueTrackRow","queueTrack","dragProps","scrollOnTrackClickFn","onCurrentCoverClick","onCurrentTrackClick","isCurrentLanePreview","queueId","lane","useQueueTrackPlayableFromState","getTitles","isCurrent","QueueLane","Current","moreOpen","setMoreOpen","menuRightClick","rightClick","openByMouse","playTrack","PLAYQUEUE_PLAY_TRACK","isPreviewLane","Preview","trackClickFn","compareableTrackId","handleRemoveFromQueue","PLAYQUEUE_REMOVE_TRACK","UserPlayQueueRemove","togglePlay","Size64","ResourceTextPart","allLinks","getVisibleLinks","createDraggablePlayableModel","dragSourceId","ResourcePreviewRow","customIcon","customIconAction","onActionProp","rank","moreButtonIsOpen","setMoreButtonIsOpen","hasContextMenu","disableContextMenu","useResourcePreviewExpandContent","usedWidth","getShowRowNumber","getShowRowCover","getPreviewRowColumnCount","getResourceMainAction","usePreviewAction","expandAction","onMainAction","onCustomAction","LiveRadioTrack","PlayableRowNumberAndCover","RowNumberAndCover","menuButton","RightButton","customButton","updateSelection","isActivated","isSelected","isMultiselecting","selectedItems","propNumber","showNumber","showCover","NumberCell","ResourcePreviewRowCover","isTrack","NumberWithSoundBarsCell","hasNavigate","navigateLink","ArrowRightAndroid","maxInFirstColumn","Playlist","Album","getMaxInFirstColumn","maxInAllColumns","maxLinks","setOpen","hasExpandContent","getIsExpandResource","ResourcePreviewRowExpandContent","iconName","ArrowUpSmall","ArrowDownSmall","NotificationAction","conversion","NotificationConversion","InstallPWA","NotificationDirectAction","NotificationLink","getNavigationConversionResourceType","useOptionalLinkContext","promptUserForPWAInstall","getPWAInstallOption","PWAInstallOption","Installed","ArtistRadioPreviewSingle","PreviewSingleTestLocator","BannerSingle","setIsLoaded","setIsError","img","useImagePreload","cover","Size80","backgroundImage","getThemeFromState","primaryLink","PreviewSingle","Size144","ResourcePreviewSquare","ResourcePreviewSquareCover","disableMoreButton","isDraggable","Square","trackCount","getResourceAvailableInSubscription","moreButton","Meatballs16","PreviewMoreButton","onPropAction","playPlayablePreview","Expand","setDone","hasNavigated","scrollIntoView","behavior","linkModels","closeMaxiPlayer","MaxiPlayerPrimary","MaxiPlayerSecondary","ResourceLinkGroup","linkIndex","ResourceLinkPart","ResourceLinkGroupTestLocator","clickable","buttonDesign","useText","ResourceLinkTestLocator","SearchResultAreaSource","SearchResultArea","SearchViewState","Failed","SearchResultAreaFailed","History","SearchResultAreaHistory","Results","SearchResultAreaResults","NoResults","SearchResultAreaNoResults","Searching","SearchResultAreaSearching","SearchResultAreaDefault","SearchPlaceHolderTitle","SearchPlaceholderText","ErrorStateErrorTitle","ErrorStateErrorTryAgainText","SearchNoResult","SearchNoResultHint","GlobalSearchingName","pageContext","SearchRecentResults","ResourceDisplayType","List","useUserRecentSearches","ResourceSection","showTitle","mixedResults","artists","albums","playlists","useFakePageContext","NavigationPageRootName","mixedContext","SearchMixedResults","tracksContext","SearchTrackResults","artistsContext","SearchArtistResults","albumsContext","SearchAlbumResults","playlistsContext","SearchPlaylistResults","onActionFn","previewContext","showAll","SeekBar","setSeekPosition","hasPlayRange","MobileMaxi","SortControl","onChangeProp","getRandomUUID","setSelected","useCallbackMap","getSortOptionName","usePageClick","toggleOpen","PLAYER_TOGGLE_VOLUME_EXPAND","ConcurrencyModal","deviceId","deviceName","dismissModal","ConcurrencyModalSubTitle","ConcurrencyModalSubTitleLegacy","hasXCloseButton","ConcurrencyModalTitle","messageBus","subscribeEvery","PLAYER_STARTED_BY_USER","dismiss","openModal","ConcurrencyResume","ContextMenuMode","ContextMenuSheetContext","ContextMenuLinkContext","ContextMenuManagerContext","appMediaSize","BottomSheetMenus","BottomSheet","Floating","Tablet","Desktop","sheets","distinct","CONTEXT_MENU_CLOSE_ALL","OpenMenuResultAction","Cancel","usePageKey","KeyboardKeyName","Escape","SheetRender","setCount","FloatingSheet","openSmooth","scroll1Ref","scroll2Ref","rootOpen","isContextMenuSheetOpen","scrollState","useScrollState","ScrollAxis","scrollChanged","setScrollChanged","visibleNow","setVisibleNow","CONTEXT_MENU_SET_VISIBLE","ScrollState","Start","NoScroll","scrollTo","prevent","zIndex","placement","useContextMenuPlacement","sheetPos","parentSheetPos","sheetRef","inBackground","isContextMenuChildOpenWithAnotherLayer","ContextMenuPositionType","Anchor","CONTEXT_MENU_UPDATE_POSITION","CONTEXT_MENU_HOVER","itemId","hoverOn","hoverOff","CONTEXT_MENU_OPEN","closeOnClick","innerOnClick","Click","LinkWithSubmenu","submenu","appMenu","createContextMenuLink","tree","layer","setSheet","isActive","isContextMenuLinkActive","hovers","isSubOpen","isContextMenuSheetOpenOrVisible","openSub","newSheet","openSubmenu","openParent","timeOut","ArrowRightSmall","ShowSheetTop","Sheet","showTop","InBottonSheet","renderTop","Always","ContextMenuSide","getPlacement","viewMargin","box1","box2","side","availableHeight","availableWidth","menuGap","vw","vh","Top","Bottom","Right","Left","fitWidth","fitHeight","ContextMenuPositionBox","getBestPlacement","getPosBox","ContextMenuAlign","p1","p2","Below","UpperRight","ScreenCorner","screenPosition","ScreenPosition","setPlacement","useAppResize","useMessageBus","CONTEXT_MENU_REPOSITION","AccountLink","AddMultipleToLastQueueLink","showIcon","PlayAsLast","getMultiselectPlayModel","PLAYQUEUE_ADD_TO_LAST","UserContextMenuAddToQueue","QueuePlayAsLast","AddMultipleToMyMusicLink","productType","MyMusicTracks","onRemoveFavorites","clearSelection","onAddFavoritesOrLogin","activeItem","ContextOptionRemoveFromMyMusic","ContextOptionAddToMyMusic","AddMultipleToPlaylistLink","onAdd","playlistId","addTracksToPlaylist","AddToPlaylist","AddToPlaylistContextMenu","AddMultipleToQueueLink","isPriorityLaneEmpty","playQueue","Priority","PlayAsNext","PLAYQUEUE_ADD","QueuePlayAsNext","QueuePlayAsPriority","AddMultipleToQueueReplaceLink","PLAYQUEUE_SET_AND_PLAY","AddProfileLink","templates","addProfilesPage","onAddProfile","setProfileEntrypoint","tooltip","NavBarLogin","Plus16","AccountMenuAddProfileButton","AddProfile","AddToLastQueueLink","AddToMyMusicLink","assumedFavorite","addFavoritesOrLogin","removeFavorites","availableInSubscription","AddToPlaylistLink","addPlayableToPlaylist","canBeAddedToPlaylist","AddToQueueLink","CopyIdLink","copyToClipBoard","clipboard","writeText","openToast","CopyIdSuccessToast","CopyIdFailedToast","copyTrackIdToClipboard","CreatePlaylistLink","CreatePlaylist","CurrentProfileLink","AccountMenuProfileButton","Avatar","TopHeaderLink","ProfileDefaultTitle","Profile","PageHeaderAccountButton","FavoritesSortingLink","sorting","currentSorting","SET_MY_MUSIC_SORTING","FollowArtistLink","Radio","NotImplemented","ContextOptionFollowArtist","GetDesktopAppLink","InstallPromptOpen","Download","AccountMenuGetDeskopAppActionWeb","GiveFeedbackLink","Feedback","showInAppFeedbackModal","SettingsFeedbackTitle","GoToAlbumLink","album","Albums","ContextOptionGoToAlbum","GoToArtistLink","artist","Artist","ContextOptionGoToArtist","GoToArtistRadioLink","artistRadio","GoToProfilesLink","ManageProfiles","GoToSettingsLink","SettingsTitle","GoToTrackRadioLink","trackRadio","TrackRadio","ContextOptionGoToTrackRadioAction","LanguageLink","SettingsLanguage","LogInOutLink","logoutFn","logout","LogoutTrigger","Manual","SettingsLogoutPrompTitle","SignOut","AccountMenuLogoutButton","showLoginUi","SignIn","AccountMenuLoginButton","PlaylistDeleteLink","showDeletePlaylistDialog","showDeletePlaylistModal","ModalOpenResult","Submit","mutateDeletePlaylist","PLAYLIST_DELETED","PlaylistDeletedToast","isOnPage","navigateForwardTo","MyMusicPlaylists","PlaylistNotDeletedToast","Trash","ContextOptionDeletePlaylist","PlaylistLink","PlaylistRemoveTrackLink","onRemoveTrack","removeTrackFromPlaylist","ContextOptionRemoveFromPlaylist","PlaylistRenameLink","showRenamePlaylistModal","RenamePlaylist","ContextOptionRenamePlaylist","PlaylistVisibilityLink","isPublic","isPlaylistPublic","Private","Public","doToggleVisibility","mutateModifyPlaylist","visibility","PlaylistVisibility","PLAYLIST_MODIFIED","PlaylistMadePrivateToast","PlaylistMadePublicToast","PlaylistErrorStateChangeToast","ContextOptionMakePrivate","ContextOptionMakePlaylistPublic","ProfileLink","onSwitchProfile","changeUserProfile","RemoveMultipleFromPlaylistLink","onRemoveTracks","removeTracksFromPlaylist","ShareLink","ShareAndroid","ShareContextMenu","ContextOptionShare","ShareUrlLink","copySharingLinkToClipboard","ShareUrl","ShareUrlAction","ShowLyricsLink","lyricsId","useTrackLyricsId","isLoggedIn","LoggedIn","SET_DESKTOP_LYRICS_VISIBLE","startingPoint","ContextOptionShowLyrics","profilesLimit","profilesNumberLimit","showProfiles","hasPermissionFromToken","Profiles","IconMenuTop","AccountMenuTitleWeb","AddQueueToPlaylistContextMenu","userPlaylistPreviews","promptLoginIfRequired","showCustomCreatePlaylistModal","SaveQueueAsPlaylist2","newPlaylistResult","addQueueToPlaylist","AddToMyMusicContextMenu","ResourceMenuTop","useUserPlaylists","CombinedPlaylistsSorting","ModifiedDate","showCreatePlaylistModal","AlbumContextMenu","ArtistContextMenu","LiveRadioContextMenu","MixRadioContextMenu","MixedContentContextMenu","mixedContent","mixedContentId","mixedContentType","TrackChart","getAlbumPreview","getArtistPreview","getPlaylistPreview","getTrackPreview","getTrackChartPreview","getLiveRadioPlay","getMixedContentResource","useDomainQueryResult","MyMusicAlbumsSortingContextMenu","SortingMenuTop","SortByLastAdded","FavoriteAlbumsSorting","LatestAdded","SortByNameTitle","Alphabetically","SortByArtist","ArtistName","SortByReleaseYear","ReleaseDate","MyMusicArtistsSortingContextMenu","FavoriteArtistsSorting","SortAlphabetically","MyMusicTracksSortingContextMenu","FavoriteTracksSorting","MyPlaylistsSortingContextMenu","sortModifiedDate","sortCreatedDate","CreatedDate","sortAlphabetically","Title","SortByLatestUpdated","showHeadline","NotificationFeedTitle","NotificationFeed","NotificationPlayableContextMenu","notification","shuffleToggled","repeatToggled","GlobalRepeatName","GlobalChromecastName","PlaylistContextMenu","isOwned","isPlaylistEmpty","TracksContextMenu","MixRadio","mixRadio","MixedContent","TrackChartContextMenu","trackChart","TrackContextMenu","TrackRecommendationContextMenu","trackRecommendation","nowPlaying","SortTitle","contentEditorMode","isLiveRadioTrack","FilterUi","initialValue","onExpandedChanged","isExpanded","setIsExpanded","currentValue","setCurrentValue","innerOnChange","keyHandler","blurHandler","useNavigation","hasForward","hasBackward","searchRef","accountMenuButtonRef","accountMenu","AccountContextMenu","loginState","loggedOut","shouldDisplayAsLoggedIn","openAccountMenu","resultsDisplay","SearchResultDisplay","WhenFocus","searchBackground","documentWidth","searchRect","searchLeftOptimal","searchLeft","searchLeftOffset","forward","PageHeaderLoginButton","ButtonNotificationFeed","Logo","feedbackDraft","InAppFeedback","submit","onFromStateChange","formState","setFormState","Submiting","responseEnabled","isFeedbackResponseEnabled","setResponse","formStateChange","FeedbackCategory","setCategory","categoryState","setCategoryState","categoryLabel","setCategoryLabel","getSelectOption","SettingsFeedbackTopicDefaultOptionWeb","SettingsFeedbackTopicFunction","Stability","SettingsFeedbackTopicStability","SettingsFeedbackTopicContent","Other","SettingsFeedbackTopicOther","useSelectOptions","setMessage","messageState","setMessageState","messageLabel","setMessageLabel","setEmail","emailState","setEmailState","emailLabel","setEmailLabel","onCategoryFocus","onMessageFocusOrBlur","formatInputText","onEmailFocusOrBlur","saveFeedbackDraft","responseEmail","closed","setCategoryError","setMessageError","setEmailError","messageVal","validateFeedbackText","FeedbackTextValidation","TooLong","emailVal","validateEmail","categoryOK","messageOK","OK","emailOK","InputEmailValidation","FeedbackModalTopicValidationEmptyWeb","FeedbackModalMessageValidationEmptyWeb","Empty","FeedbackModalEmailValidationEmptyWeb","Invalid","FeedbackModalEmailValidationInvalidWeb","submitInAppFeedback","showInAppFeedbackSubmitModal","showErrorTryAgainModal","FeedbackModalTopicTitleWeb","FeedbackModalMessageTitleWeb","FeedbackModalMessagePlaceholderWeb","InAppFeedbackResponseRequest","onOpenChange","_hasPrivacyLabel","isNullOrEmpty","FeedbackModalPrivacyTextWeb","InAppFeedbackPrivacyLabel","link1","FeedbackModalPrivacyAction1UrlWeb","FeedbackModalPrivacyAction1Web","link2","FeedbackModalPrivacyAction2UrlWeb","FeedbackModalPrivacyAction2Web","replaceStringsWithCompoenents","controlPanel","enableFeedbackResponse","check","onBlurFn","FeedbackModalEmailTitleWeb","FeedbackModalEmailTextWeb","FeedbackModalEmailPlaceholderWeb","LayoutPageGroup","LayoutPageItem","getComparableId","getLayoutPageItemConnectionModelItems","useResourcesFromUnions","skeletonItems","DelegatedLogin","scrolling","getDelegatedLoginUrl","ForceRemoteBackend","apiDelegatedLoginPath","hostname","addQueryParameterToUrl","getInstallationId","addEnvironmentVariablesToUrl","LogTag","User","subscribeOne","USER_LOGGED_IN","USER_LOGIN_ERROR","showLoginErrorModal","unsubscribeA","unsubscribeB","loginMode","LoginMode","OauthPopup","openDelegatedLoginWindow","OauthEmbedded","showDelegatedLoginModal","OauthNavigation","navigateToDelegatedLogin","establishSessionFromLogin","refreshToken","accessToken","errorcode","setUrl","sessionHackUrl","USER_LOGGING_OUT","isLineActive","internalState","enableAutoscroll","isAutoscrolling","autoscrollTimer","lyricsTrackId","layout","lyricsStartingPoint","lyricsStart","isLyricsForCurrentTrack","PlayQueue","getCurrentLaneFromState","useLyrics","synchronizationType","author","publisher","provider","dragSecondsPlayer","setDragSecondsPlayerd","positionMs","activeIndex","fromMs","toMs","findLast","firstIndex","findActiveIndex","currentLane","DISPLAYED_LYRICS","sync","SynchronizationType","PLAYER_SEEK","UserPlayerSeek","AUDIO_INPUT_AUDIO_PLAY_CHANGE","Open","getClassForLine","scrollListener","wheelListener","Close","translate","getLyricsState","currentQueueLyricsId","currentQueueTrackId","mapLyric","startInMs","durationInMs","setResult","getTrackLyrics","lrc","credits","writer","pageInfo","hasNextPage","endCursor","getTrackLyricsPagination","after","isPlayQueue","useDesktopLyricsOpen","getQueueCurrentLaneFromState","getTrackLyricsId","lyricsOpen","CreatePlaylistButton","minimal","isHovering","setIsHovering","Section","useIcon","NavigationHomeButton","NavigationSearchButton","NavigationRadioButton","MyMusic","addFavorites","allowDropToPlaylists","onDropToPlaylists","allowDropToArtists","MyMusicArtists","onDropToArtists","allowDropToAlbums","MyMusicAlbums","onDropToAlbums","allowDropToTracks","QueueTrack","onDropToTracks","getQueueTrackPlayable","NavBarMyMusic","NavigationPlaylistsButton","NavigationArtistsButton","NavigationAlbumsButton","NavigationTracksButton","useMyPlaylistsSortingButtonWithMenu","buttonRef","getNextUUID","Playlists","sidebarConfig","playlistShortcutLimit","PlaylistSidebarButton","sortingMenuHook","NavigationPlaylistButton","ScrollerWithFade","disableFade","openModal2","modal","isModalOpen","MODAL_OPEN","closeModal","Dismiss","MODAL_CLOSE","modalButtonTryAgain","customAction","modalButtonSubmitAdd","modalButtonSubmitAddAll","modalButtonSubmitAddMissing","modalButtonSubmitOK","modalButtonSubmitMaintenance","modalButtonSubmitClose","modalButtonSubmitSend","modalButtonSubmitContinue","modalButtonSubmitContinueAnyways","modalButtonSubmitGetStarted","modalButtonDismissCancel","modalButtonEditPlaylistSave","submitModal","canClose","onRequestClose","AddDuplicatesModal","isContainedCollection","isCollection","DuplicatesHandling","AllowDuplicates","SkipDuplicates","MyMusicDuplicateTrackPrompTitle","BrowserCompatibilityModal","MessagesBrowserCompatibilityModalTitleWeb","MessagesBrowserCompatibilityModalText1Web","MessagesBrowserCompatibilityModalText2Web","SettingsHelpUrl","MessagesBrowserCompatibilityModalHelpButtonTextWeb","BrowserTooOldModal","MessagesBrowserTooOldModalTitleWeb","MessagesBrowserTooOldModalText1Web","MessagesBrowserTooOldModalText2Web","MessagesBrowserTooOldModalHelpButtonTextWeb","ChromecastNotAvailableOnPWA","productName","urlName","ClearQueueModal","QueueClearPrompTitle","QueueClearPrompSubtitle","initialName","playlistIdRef","CreatePlaylistModal","resultRef","errorMessage","setErrorMessage","doCreatePlaylist","CreatePlaylistAlertText","mutateCreatePlaylist","PLAYLIST_CREATED","PlaylistCreatedToast","PlaylistNotCreatedToast","CreatePlaylistTitle","CreatePlaylistSubtitle","catalog","playlistTitleMaxLength","TypePlaylistName","DeletePlaylistModal","MyMusicDeletePlaylistTitle","MyMusicDeletePlaylistSubtitle","DeleteProfileModal","translateWithReplacement","ErrorModal","FeedbackFailedTitle","DialogBoxErrorText","ErrorTryAgainModal","FeedbackFailedSubtitle","InAppFeedbackModal","submitFn","dismissFn","hasPrivacyLabel","useHasPrivacyLabel","InAppFeedbackSubmitModal","FeedbackSuccessModalTitleWeb","FeedbackSuccessModalTextWeb","GeneralLoginErrorModal","LoginErrorHeader","LoginErrorTextSomethingWentWrong","NoMusicRightsPokedBeforeModal","noMusicRightsButtons","SentryCutOffNoMusicRightsTitle","SentryCutOffNoMusicRightsSubtitle","NoMusicRightsModal","hasBeenPoked","LoginNoMusicRights","LoginNoMusicRightsSubTitle","MaintenanceModal","AppMaintenanceLinkTitle","AppMaintenanceLinkUrl","AppMaintenancePopupText","AppMaintenancePopupTitle","showButton","INVITE_NEEDED_MODAL_PROMPTED","showInviteFlowModal","lastInvite","getCookie","lastInviteDate","setCookie","InviteFlowModal","SENTRY_CUTOFF_SHOWN","PwaInstallMessageModal","NOTIFICATION_PWA_INSTALL_MESSAGE_WAITING","MessagesPwaInstallModalTitleWeb","MessagesPwaInstallModalTextWeb","RenamePlaylistModal","originalTitle","doRenamePlaylist","PlaylistSavedToast","PlaylistNotSavedToast","MyMusicRenamePlaylistTitle","MyMusicRenamePlaylistSubtitle","MyMusicRenamePlaylistHint","showYourYearModal","YourYearModal","containerRef","useCurrentNotifications","feed","newNotifications","lastWeeksNotifications","thisMonthsNotifications","lastMonthsNotifications","previousNotifications","hasNew","hasLastWeek","hasThisMonth","hasLastMonth","hasPreviously","onPreviewAction","converted","Notifications","NOTIFICATION_FEED_NOTIFICATION_CONVERTED","NotificationFeedNewNotificationsTitle","NotificationFeedLastWeekTitle","NotificationFeedThisMonthTitle","NotificationFeedLastMonthTitle","NotificationFeedPreviousNotificationsTitle","PlayerDesktop","PlayerMaxi","openFromState","mobileMaxiPlayerOpen","setShowQueue","durationLong","openDelay","playerRef","queueOpen","Size512","PlayerMini","handlePlayerClick","SET_MINIPLAYER_OPEN","playerTogglePLay","getPlayIconMobileMini","LiveRadioQueue","TrackQueue","LiveRadioQueueTopBar","Headline","radioPreview","recentlyPlayed","recentlyPlayedTracks","scrollRef","useTrackPlayables","mapper","animateQueue","LiveRadioTracksHistoryHeader","LiveRadioTracksHistoryEmpty","QueueListView","CurrentLane","disableHeaderDrop","isDraggableCurrentLane","Memory","QueueCurrentTitle","WebEmptyQueueTitle","WebEmptyQueueSubtext","Flow","FlowLane","useQueueLaneTrackParentFromState","flowLaneTitle","QueueNextFrom","MemoryLane","QueueHistoryPageTitleMobile","PreviewLane","expandDropZone","isEndlessPlayOn","useIsEndlessPlayOnFromState","handleToggleEndlessPlay","PLAYQUEUE_ENDLESSPLAY_TOGGLE","EndlessPlaySwitchTestLocator","SettingsEndlessPlayTitle","PriorityLane","historyOpen","QueuePriorityLaneTitle","useQueueLanes","isQueueEmpty","flow","isFlowLaneEmpty","isMemoryLaneEmpty","useEndlessPlayFromState","endlessPlay","isEndlessPlayEmpty","toggleHistory","PLAYQUEUE_HISTORY_TOGGLE","historyScrollLength","PLAYQUEUE_DROP","atEnd","UserPreviewDragDrop","queueIndex","TrackQueueActions","disableHistoryButton","historyClick","CurrentLanePreview","EmptyQueue","ANALYTICS_PLAYQUEUE_CLEAR_QUEUE","showClearQueueModal","SET_DESKTOP_QUEUE_OPEN","DesktopQueueOpen","timeOutMs","PLAYQUEUE_CLEAR","UserPlayQueueClear","QueueClearButton","QueueHistoryButton","QueueHistoryButtonTextMobile","ANALYTICS_PLAYQUEUE_SAVE_TO_PLAYLIST","openMenuByElement","QueueSaveButton","QueueSave","shared","rowIndex","isHighlight","setLabelCount","getDropProps","createPreviewContext","getLinks","labelCount","itemIndex","Size320","GridView","pagination","viewRef","margin","useResizeRowsColumns","calculateGrid","rowHeight","isReady","getRows","firstRowInView","lastRowInView","resourceLenght","rowChunks","useSplitArrayIntoChunksWithReuse","scrollYPosition","useScrollYPosition","totalCount","totalRows","topSpacerHeight","bottomSpacerHeight","hasAutoscrolled","setHasAutoscrolled","highlightRow","pixelHeight","more","GridRow","containerHeight","containerWidth","minItemSize","maxItemSize","scale","itemSize","GenericListView","totalItems","paginationCallback","display","getParent","coverSize","ListMedium","ListLarge","useListSizes","resourcesLength","paginationLength","setParent","ResourceListView","visibleRows","visibleBuffer","fromTop","startRow","setScrollYPosition","handleScroll","onScrollerNavigatePropertiesChange","scrollerNavigateRef","highlightId","Scroller","LargeScroller","ResourceSectionScroller","navigateRef","onNavigatePropertiesChange","Grid","LargeSingle","PromoSingle","Deeplink","highlightedId","navigateScrollerRef","navigateProperties","setNavigateProperties","isHidden","useSectionIsHidden","disableUi","getLinkFromContext","showAllLink","useSkeletonItems","ResourceSectionTestLocator","ResourceSectionShowAllButton","ShowAll","ArrowLeft16","ResourceSectionBackwardButton","ArrowRight16","ResourceSectionForwardButton","restoration","useSectionScrollRestoration","scrollerSize","ScrollerSize","Medium","MediumLarge","Size208","Large","Size256","getSizes","ScrollerAlign","purpose","ScrollerPurpose","effect","ScrollerEffect","estimatedCount","getResourceDisplayCount","createSkeletonPreviewModels","scrollSnap","Center","padding","getItemSize","olStyle","scrollIndexDecimal","scrollSnapFix","adjustSize","adjustTransform","scrollIndex","itemAjust1","getAjustedItemSize","itemAjust2","transform","onSelectedChange","Selection","ScrollerSnapType","Mandatory","ScrollerSnapStop","Normal","ActiveGrow","appSize","ScrollerState","ComponentLoad","getEffectAjust","gapSize","setSelectedIndex","useScrollZone","zoneCount","canvasCount","getMaxIndex","useUserScroll","inUserScroll","inTouch","useScrollIndex","useScrollerNavigateProperties","useScrollTo","ExternalChange","UserScroll","UserScrollStop","ButtonClick","getNewIndex","getActiveItemIndex","ajust","childSize","getAlignOffset","getActiveItemScrollLeft","adjust","itemCount","useScrollPosition","setScrollIndex","setScrollIndexDecimal","indexDecimal","jsSnap","onScroll","canvasCountDecimal","computed","getComputedStyle","getPadding","navigationProperties","setNavigationProperties","newLeft","newRight","InBetween","End","newNavProps","inMove","setInMove","setInTouch","touchEnd","touchStart","mouseUp","mouseDown","maxiPlayerScrollerOptions","searchDebounceMs","useDebouncedState","criterion","setCriterion","setCriterionInstant","useSearch","hasHistory","viewState","getSearchViewState","showResults","Hide","onFocusFn","isSearchMixedResultPreviewModel","USER_CLICK_SEARCH_RESULT","USER_ADD_SEARCH_HISTORY","SearchDropDown","SearchState","useCancellingEffect","cancellationToken","main","promise1","getLimitedSearchResultMain","promise2","getLimitedSearchResultPlaylists","any","delayTask","initialDelayBeforeSpinnerMs","isCancelled","isEmptyResult","Success","Fetching","mainSearchPriorityMs","mergeSearchResultModel","hasEitherResults","hasBothResults","ToastDuration","toast","setToast","unsubscribe1","TOAST_OPEN","newToast","Short","toastDurationShort","Long","toastDurationLong","getDurationMs","unsubscribe2","TOAST_CLOSE","ToastState","Toast","onCancel","cancelText","Fail","onCancelFn","closeToast","AddMusicToQueueSuccessToast","AddMusicToQueueFailToast","AddMusicToPlaylistSuccessToast","AddMusicToPlaylistFailToast","RemoveTrackFromPlaylistSuccessToast","RemoveTrackFromPlaylistFailToast","AddMusicToMyMusicSuccessToast","AddMusicToMyMusicFailToast","AddMusicToMyMusicLimitExceededToast","PlayableContext","Track","RemoveMusicFromMyMusicSuccessToast","ProfileChangedToast","RemoveMusicFromMyMusicFailToast","PlaybackFailToast","LoadMorePageContentFailToast","TrackRemovedToast","TrackNotRemovedToast","AddedToPlaylistToast","NotAddedToPlaylistToast","ShareUrlCopySuccessToast","ShareUrlCopyFailedToast","getCombinedQueryParams","albumId","getAlbumHeaderSection","fillAlbumPageModelWithBasicSection","essential","getAlbumTracksSection","getPaginationInit","fillAlbumPageModelWithTracksSection","getAlbumArtistAlbumsSection","fillAlbumPageModelWithAlbumArtistAlbumsSectionData","getCombinedQueryParamsByTrack","getAlbumHeaderSectionByTrack","getAlbumTracksSectionByTrack","getAlbumArtistAlbumsByTrackSection","combined","createEmptyAlbumPageModel","useCombinedQuery","QueryError","NotAvailableInSubscriptionError","product","fetchFn","getAlbumTracksPagination","usePageContext","AlbumArtistAlbums","artistAlbums","usePagination","showLabel","setPlayable","setType","useAlbumPageAutoPlay","useAutoPlay","ProductPageTemplate","isUserOwned","FooterText","AppStoreWebTitle","artistId","createEmptyArtistPageModel","fillArtistPage_headerSection","fillArtistPageModel_basicSectionAndRadio","fillArtistPage_artistTracks","fillArtistPageModel_artistTracks","fillArtistPage_artistAlbums","fillArtistPageModel_artistAlbums","fillArtistPage_artistSingles","fillArtistPageModel_artistSingles","fillArtistPage_similarArtists","fillArtistPageModel_similarArtists","fillArtistPage_appearsOn","fillArtistPageModel_appearsOn","ArtistTracks","tracksSection","ArtistAlbums","singles","ArtistSingles","ArtistSimilarArtists","similarArtists","appearsOn","ArtistAppearsOn","trackPlayables","useArtistRadioPage","pageContent","artistRadioPageItemsLimit","chartId","useChartPage","getChartItems","Chart","AlbumChart","useDisplayType","getChartModelItems","getErrorPageType","PageLoadAppErrorType","UrlSchemaNotRecognizedError","ContentNotFoundError","ErrorPageType","ContentNotFoundErrorPage","BrowserOfflineError","NoConnectionErrorPage","NetworkServerDownError","BackendDownErrorPage","NetworkClientError","NetworkServerError","NetworkUnknownError","MapError","MultipleErrors","UnknownError","DefaultErrorPage","ErrorPage","useErrorPageContext","PageLoadError","ContentNotFoundPage","RefetchButton","refetch","TryAgain","MessagePageTemplate","ErrorStatePageNoConnectionTitle","ErrorStatePageBackendDownTitle","ErrorStatePageBackendDownText","ErrorStatePageDefaultTitle","frontPageLink","GlobalGoToFrontPageAction","ErrorStatePageNotFoundTitle","NotFound","pageId","apiFrontPageId","personalized","usePageQuery","usePageScrollRestoration","usePageLoadState","reloadGuard","setReloadGuard","userId","pageQuery","useLayoutPageSkeleton","pageLoading","refetching","pageError","guard","sectionParams","getLayoutItemPage","fillLayoutPageWithItemSection","refreshFrequency","sectionsQuery","setAutoUpdate","tabActive","combinedParams","useCombinedQueryResult","anyOK","queries","errorReason","liveRadioCategoryId","useLiveRadioCategoryPage","getLiveRadioCategoryLiveRadiosPagination","ShowAllPageTemplate","LiveRadioCategory","radios","liveRadioId","useLiveRadioCategoryPageByLiveRadio","getLiveRadioCategoryByLiveRadioLiveRadiosPagination","getAutoPlayRadio","alternateAutoPlayFn","mixRadioCategoryId","mixRadioId","useMixRadioCategoryPage","getMixRadioCategoryPagination","MixRadioCategory","useMixRadiosPage","MixRadios","orderBy","albumsSorting","useFavoriteAlbumsPage","getFavoriteAlbums","useCoalesced","isNewUser","FAVORITES_UPDATED","changes","MyMusicPageTemplate","onFilterChanged","placeholderTitle","MyMusicAlbumPlaceholderTitle","placeholderSubtitle","MyMusicAlbumPlaceholderSubtitle","placeholderFilter","FilterAlbums","placeholderFilterNoResult","FilterNoAlbumsFound","placeholderFilterNoResultSubtitle","resourcesFetchFn","sortingMenu","artistsSorting","useFavoriteArtistsPage","getFavoriteArtists","MyMusicArtistPlaceholderTitle","MyMusicArtistPlaceholderSubtitle","FilterArtists","FilterNoArtistsFound","playableViewModels","playlistsSorting","setIsOwned","useFavoritePlaylistsPage","getCombinedPlaylistsPagination","modifyRef","updateMetadata","playlistFromChange","onToggleMyPlaylists","SET_MY_PLAYLISTS_SELECTION","onToggleOtherPlaylists","PLAYLIST_COLLECTION_ADDED","PLAYLIST_TRACK_ADDED","PLAYLIST_TRACKS_REMOVED","newItems","placeholders","FilterNoOwnPlaylists","SubtitleFilterNoOwnPlaylists","FilterPlaylists","FilterNoPlaylistsFound","FilterNoFollowedPlaylists","SubtitleFilterNoFollowedPlaylists","MyMusicPlaylistPlaceholderTitle","MyMusicPlaylistPlaceholderSubtitle","getPlaceholders","placeholderButton","topItem","topItem2","tracksSorting","useFavoriteTracksPage","getFavoriteTracks","useMultiselect","unSelect","MyMusicTracksPlaceholderTitle","MyMusicTracksPlaceholderSubtitle","FilterTracks","FilterNoTracksFound","playlistCategoryId","usePlaylistCategoryPage","getPlaylistCategoryPlaylistsPagination","PlaylistCategory","ExperimentalProductLoader","PlaylistPageInner","isSaving","setIsSaving","setFilter","useCachedUserPlaylistPreview","defaultSortOptions","getSortOptions","ownPlaylistTracksSorting","convertToPlaylistTracksSortOption","initial","isReorderingAllowed","SortOption","UserDefined","loaderCallback","setProduct","modifyQuery","modify","SET_MY_PLAYLIST_TRACKS_SORTING","lastModified","lastModifiedStr","getShortDateDDMMYYYY","contentPlaylistType","ContentPlaylistType","Own","Follow","contentPlaylistTypeObj","extraInfo","topContext","reload","myMusicPlaylists","updateMetadataAndTracks","PLAYLIST_TRACKS_ADDED","alreadyHandledByPlaylistPage","alsoFetchTracks","toIndex","fromIndex","uniqueId","moveTrackInPlaylist","insertQueueTrackInPlaylist","insertPlayableInPlaylist","modifyTracks","remappedColl","removedItems","mutateModifyTracksInPlaylist","modifications","TrackModificationType","Move","positionFrom","positionTo","PLAYLIST_TRACK_REORDERED","fromPosition","toPosition","mustReloadTracks","Insert","duplicateTracksAdded","getTracks","newTrackIndex","LoggingOut","LoggedOut","ProductPageTemplate2","isLoadingTracks","Delete","PlaylistLastUpdated","isLoadingProduct","clearModel","clearTracks","lastKey","getPlaylistPage","PlaylistTracksSorting","TrackPosition","getPlaylistTracksPagination","canLoadMore","ProfileColorSelector","colors","col","onColorSelected","defaultColors","profileDefaultColors","actualDefaultColors","isNew","setTitle","setColor","isChanged","onChangeTitle","onChangeColor","onBack","profilesPage","onDelete","master","showDeleteProfileModal","masterProfile","mutateRemoveProfile","reloadProfiles","PROFILE_DELETED","showErrorModal2","onSave","mutateAddProfile","PROFILE_CREATED","entrypoint","getAndClearProfileEntrypoint","mutateUpdateProfile","PROFILE_UPDATED","oldProfile","frontPage","AddProfilePageTitle","EditProfilePageTitle","ProfilesNameHint","GlobalSaveName","PrimaryProfileCantBeDeleted","addProfileLink","EditProfile40","Plus40","apiRadioPageId","recommendationId","useRecommendationPage","getRecommendationContentPagination","Recommendation","PlaylistRecommendation","getItemsFromRecommendation","unfilteredItems","useFilter","hasLoadedOnce","ClientsideFiltering","MobileSearchPageView","inSearch","setInSearch","closeSeach","onInputFocus","MobileSearchPage","DesktopSearchPage","usePlaylistCategoriesPage","getPlaylistCategoriesPagination","playlistCategoriesContext","PlaylistCategories","playlistCategories","Explore","disableFiltering","Accordion","ArrowRight","AccordionLink","FeedbackSettings","Header","FeedBackTitle","Setting","SettingsDirectFeedback","SettingsFeedbackInfoText","ForceLogoutSettings","useForceLogoutUrl","goToForceLogout","SettingsForceLogoutTitle","HelpSettings","GuidedHelp","SettingsHelpButton","LanguageSettings","buttonDanish","LanguageButton","buttonEnglish","buttonAuto","SettingsAppearanceAutomaticSubTitle","PlaybackSettings","priorityLaneWarning","handleTogglePriorityLaneWarning","PLAYQUEUE_PRIORITY_LANE_WARNING_TOGGLE","priorityLaneWarningButton","Playback","SettingsPlayer","SettingsEndlessPlaySubTitle","PriorityQueueWarningSettingsTitle","PriorityQueueWarningSettingsSubTitle","ThemeSettings","SoundQualitySettings","ForceLogout","SignOutSettings","UsernameSetting","VersionSettings","LogOut","SoundQuality","buttonHigh","SoundQualityButton","SoundQualitySetting","High","buttonNormal","buttonLow","Low","VolumeUp","SettingsSoundQualityTitle","SettingsSoundQualityHighTitle","SettingsSoundQualityHighDescription","SettingsSoundQualityNormalTitle","SettingsSoundQualityNormalDescription","SettingsSoundQualityLowTitle","SettingsSoundQualityLowDescription","soundQualitySetting","SET_SOUNDQUALITY_SETTING","buttonDarkTheme","ThemeButton","buttonLightTheme","buttonBrowserTheme","Appearance","SettingsAppearanceTitle","SettingsAppearanceLight","SettingsAppearanceDark","SettingsAppearanceAutomaticTitle","SET_THEME_SETTING","shortcut","minor","build","useSortOptions","convertToAlbumSortOption","useAlbumArtistAlbumsPage","getAlbumArtistAlbumsPagination","useArtistAlbumsPage","getArtistAlbumsPagination","useArtistAppearsOnPage","getArtistAppearsOnAlbumsPagination","ArtistTracksShowAllPage","convertToTracksSortOption","Popularity","useArtistTracksPage","getArtistTracksPagination","artistPopularTracksShowAllPageItemsLimit","useArtistSimilarArtistsPage","getArtistSimilarArtistsPagination","useArtistSinglesPage","getArtistSinglesPagination","FrontPageShowAll","useLayoutItemPage","getLayoutItemContentPagination","LayoutItem","AlbumsLayoutItemContent","ArtistsLayoutItemContent","ChartsLayoutItemContent","LiveRadioCategoriesLayoutItemContent","LiveRadiosLayoutItemContent","MixRadiosLayoutItemContent","MixedContentLayoutItemContent","PlaylistCategoriesLayoutItemContent","PlaylistsLayoutItemContent","RecommendationsLayoutItemContent","BannerLayoutItemContent","TracksLayoutItemContent","autoPlayResource","getResourceFromUnion","useAutoPlayResource","getAutoPlayItem","RadioPageShowAll","encodedCriterion","decodeUrlSearchString","criterianOK","searchAlbumPageItemsLimit","useSearchAlbumsPage","getSearchAlbumsPagination","searchArtistPageItemsLimit","useSearchArtistsPage","getSearchArtistsPagination","searchPlaylistPageItemsLimit","useSearchPlaylistsPage","getSearchPlaylistsPagination","searchTracksPageItemsLimit","useSearchTracksPage","getSearchTracksPagination","useTrackRadioPage","trackRadioPageItemsLimit","useHistoryRecommendationsPage","getHistoryRecommendationsPagination","UserHistory","collections","useDiscoverRecommendationsPage","getDiscoverRecommendationsPagination","UserRecommendations","callbackFn","resizeObserver","ResizeObserver","contentRect","isContextMenuOpen","breakpointMobileTablet","breakpointTabletDesktop","mobileQuery","tabletQuery","desktopQuery","mobile","tablet","desktop","getAppMediaSize","setSize","onMobile","onTablet","onDesktop","nativeAppMobileAppPrompt","getBrowserCompatibility","BrowserCompatibility","Compatible","TooOld","showBrowserTooOldModal","showBrowserCompatibilityModal","pwaInstallMessageWaiting","isPWA","useIsAppRunAsPWA","showPwaInstallMessageModal","usePWAInstallMessage","isAppRunAsPWAChange","setCompare","isEqual","getAudioProperties","pausePosition","useCurrentInputAudioItemFromState","getCurrentInputAudioItemFromState","hasDoneAutoPlay","shouldAutoPlay","autoplay","DeeplinkPlay","cancelled","sameFn","maps","connectionProp","eagerLoadingCount","connection1","setConnection1","connection2","setConnection2","connectionHandler","setConnectionHandler","createConnectionHandler","dispose","ConnectionState","updatePageSectionsVisualRank","sections","visibleRank","updateActivePageContext","NAVIGATION_PAGECONTEXT_UPDATE","createPageContext","alternateScrollId","createSectionContext","addSectionToPage","removeSectionFromPage","useSectionContextFromPage","updateSectionIsHidden","createLinkContext","createLinkContexts","closeOnNavigation","setIsOpen","openByElement","openMenuByMouse","openMenuAtPosition","useCurrentLiveRadioFromState","useDelayValue","useArrayDelay","setEntries","removeTime","delayed","setDelayed","isDesktopQueueOpen","hasItems","desktopQueueOpen","isQueueModeMixRadio","useQueueProperties","QueueMode","getQueueProperties","rootMargin","IntersectionObserver","getIsEndlessPlayOn","endlessPlayFromState","useArrayMemo","getIsEndlessPlayOnFromState","setIsTabActive","onVisibilityChange","BreakPoint","onMediaChange","useMemoAsync2","deps","refreshDeps","refresh","setRefreshDeps","formatUrlFromUTF8","getNativeMobileAppProtocol","getNativeMobileAppUrl","getResourceEditable","enableOnContextMenu","setOnline","setTrue","setFalse","pageLoadError","refetchFn","useErrorPage","coalesced","usePageLoadSpinner","showContent","useShowContent","connctionProp","paginationOn","isPlayableContentType","eagerLoadingTrackCount","useConnectionHandler","getPlayableProperties","currentLaneParent","isPlaying","isResourceEqual","getLiveRadioProperties","getLiveRadioPlayableProperties","isLoadedTrack","isLoadedContext","isResourceSimilar","getPlayQueuePlayableProperties","resource1","resource2","isArtist","isArtistSimilar","useQueueCurrentLaneFromState","useQueueCurrentLaneParent","getCurrentLiveRadioFromState","getCurrentLaneTrackParentFromState","getCurrentLane","useQueueMixRadio","mixRadioSession","getQueueMixRadioFromState","useQueueCurrentLaneTrackFromState","getQueueCurrentLaneTrackFromState","getCurrentAudioSecondaryResource","queueMode","trackParents","getTrackParent","getPlayQueueMemoryLane","getPlayQueueCurrentLane","isCurrentLaneEmpty","getPlayQueueFlowLane","getPlayQueuePriorityLane","setCurrent","CustomRef","getValue","setToken","rect","setRect","setColumns","setRows","setRowHeight","setIsReady","CustomResizeObserver","getTrackPlayablePreviews","useResourceFromUnion","union","getNormalizedResourceFromUnion","playableOrTracks","getResourcesFromUnions","axis","setPos","useScrollRestoration","scrollSize","contentSize","restore","setRestore","canScrollToContentOnAxis","canScrollToContent","containerSize","savePageScrollState","readPageScrollState","saveSectionScrollState","readSectionScrollState","getScrollState","scrollPosition","scrollWidth","scrollHeight","elementSize","isStart","isEnd","setScrollState","contentSizeObs","scrollingGroup","scrollingTextGroup","setDuration1","setDuration2","animationFn","stopTimeoutId","recentSearches","setSecondsPlayed","updateSecondsPlayed","getSecondsPlayed","getShowNativeMobileAppPrompt","BlankTemplate","PageTemplate","queueLoaded","templateRef","useDesktopProperties","templateWidth","DesktopTemplateWidth","Step3","MobileHeader","DesktopHeader","setTemplateWidth","useDesktopQueueOpen","setLoaded","useDesktopQueueLoaded","resize","minSidebarWidth","Step2","Step1","Controls","getMyMusicRoot","filterIsExpanded","setFilterIsExpanded","getProductPageSize","hasEmptyCollection","hasFilteredItems","PlayableActions","isRadio","ProductPagePlayButton","ProductPageShufflePlayButton","ProductPageSize","ProductPageTemplateBase","isFavoriteContentType","hasMoreBtn","hasMenu","isRadioContentType","getCanPlay","sortButton","Texts","ResourceContextActions","h1Link","h2Link","getProductPageTexts","text1Link","text2Link","h1","h2","text3","text4","hasInfos","ProductPageFavoriteButton","ProductPageMoreButton","VeryLarge","unfiltererResourceItems","resourceItems","alternateAutoPlay","autoPlayType","UrlTransformVersion","TracksSorting","StreamQuality","RecommendationMode","PageItemDisplayType","OwnPlaylistsSorting","NotificationType","MixedContentType","LiveRadioStreamingProtocol","HeartbeatType","FeedbackOperatingSystem","FavoriteContentType","DisplayType","ChartContentType","AlbumsSorting","AlbumTypeFilter","AlbumType","FavoritePlaylistsSorting","AlbumLinkFragmentDoc","ArtistLinkFragmentDoc","AlbumPreviewFragmentDoc","PageInfoFragmentDoc","TrackLinkFragmentDoc","TrackWithoutAlbumPreviewFragmentDoc","TrackWithoutAlbumPreviewConnectionFragmentDoc","AlbumPlayFragmentDoc","AlbumHeaderSectionFragmentDoc","AlbumTracksSectionFragmentDoc","AlbumArtistAlbumsLinkFragmentDoc","AlbumPreviewConnectionFragmentDoc","AlbumArtistAlbumsSectionFragmentDoc","AlbumPageFragmentDoc","FavouriteAlbumPreviewFragmentDoc","FavouriteAlbumPreviewConnectionFragmentDoc","AlbumArtistAlbumsPageFragmentDoc","ArtistPreviewFragmentDoc","ArtistHeaderSectionFragmentDoc","TrackPreviewFragmentDoc","TrackPreviewConnectionFragmentDoc","ArtistPopularTracksSectionFragmentDoc","ArtistAlbumsLinkFragmentDoc","ArtistAlbumsSectionFragmentDoc","ArtistSinglesSectionFragmentDoc","ArtistPreviewConnectionFragmentDoc","ArtistSimilarArtistsSectionFragmentDoc","ArtistAppearsOnAlbumsSectionFragmentDoc","ArtistPageFragmentDoc","ArtistPlayFragmentDoc","FavoriteArtistPreviewFragmentDoc","FavouriteArtistPreviewConnectionFragmentDoc","ArtistAlbumsPageFragmentDoc","ArtistAppearsOnAlbumsPageFragmentDoc","ArtistRadioLinkFragmentDoc","ArtistRadioPreviewFragmentDoc","ArtistRadioPageFragmentDoc","ArtistRadioPlayFragmentDoc","ArtistSimilarArtistsPageFragmentDoc","ArtistSinglesPageFragmentDoc","ArtistTracksPageFragmentDoc","ArtistTracksPlayFragmentDoc","ChartLinkFragmentDoc","ChartPreviewFragmentDoc","ChartPageFragmentDoc","TrackChartPlayFragmentDoc","PlaylistLinkFragmentDoc","PlaylistPreviewFragmentDoc","FavoritePlaylistPreviewFragmentDoc","FavoritePlaylistPreviewConnectionFragmentDoc","LayoutLinkFragmentDoc","LayoutItemLinkFragmentDoc","LayoutItemSectionFragmentDoc","LayoutItemSectionConnectionFragmentDoc","LayoutPageFragmentDoc","ChartPreviewConnectionFragmentDoc","LiveRadioCategoryLinkFragmentDoc","LiveRadioCategoryPreviewFragmentDoc","LiveRadioCategoryPreviewConnectionFragmentDoc","LiveRadioLinkFragmentDoc","LiveRadioPreviewFragmentDoc","LiveRadioPreviewConnectionFragmentDoc","PlaylistCategoryLinkFragmentDoc","PlaylistCategoryPreviewFragmentDoc","PlaylistCategoryPreviewConnectionFragmentDoc","PlaylistPreviewConnectionFragmentDoc","MixRadioLinkFragmentDoc","MixRadioPreviewFragmentDoc","MixRadioPreviewConnectionFragmentDoc","RecommendationLinkFragmentDoc","RecommendationPreviewFragmentDoc","RecommendationPreviewConnectionFragmentDoc","MixedContentPreviewFragmentDoc","MixedContentPreviewConnectionFragmentDoc","BannerLinkFragmentDoc","MixRadioCategoryLinkFragmentDoc","MixRadioCategoryPreviewFragmentDoc","BannerPreviewFragmentDoc","BannerPreviewConnectionFragmentDoc","StatisticsLinkFragmentDoc","NameValueFragmentDoc","StatisticsItemFragmentDoc","StatisticsItemConnectionFragmentDoc","LayoutItemContentFragmentDoc","LayoutItemPageFragmentDoc","LayoutItemTracksPlayFragmentDoc","LiveRadioCategoryPageFragmentDoc","LiveRadioPageFragmentDoc","LiveRadioPlayFragmentDoc","LiveRadioCategoriesPageFragmentDoc","MixRadioPlayFragmentDoc","MixRadioCategoryPageFragmentDoc","MixRadioCategoryPreviewConnectionFragmentDoc","MixRadiosPageFragmentDoc","DiscoverRecommendationsPageFragmentDoc","HistoryRecommendationsPageFragmentDoc","NotificationLinkFragmentDoc","NotificationPreviewFragmentDoc","NotificationPreviewConnectionFragmentDoc","PlaylistTrackPreviewFragmentDoc","PlaylistTrackPreviewConnectionFragmentDoc","PlaylistPageFragmentDoc","PlaylistPlayFragmentDoc","PlaylistCategoriesPageFragmentDoc","PlaylistCategoriesPaginationFragmentDoc","PlaylistCategoryPageFragmentDoc","ProfileFragmentDoc","RecommendationPageFragmentDoc","RecommendationPlayFragmentDoc","MixedSearchResultConnectionFragmentDoc","SearchMixedSectionsFragmentDoc","SearchPlaylistsSectionFragmentDoc","SearchTracksPageFragmentDoc","SearchAlbumsPageFragmentDoc","SearchArtistsPageFragmentDoc","SearchPlaylistsPageFragmentDoc","FavoriteTrackWithoutAlbumPreviewFragmentDoc","FavoriteTrackPreviewFragmentDoc","FavoriteTrackPreviewConnectionFragmentDoc","TrackLyricsItemsFragmentDoc","TrackLyricsPageFragmentDoc","TrackRadioLinkFragmentDoc","TrackRadioPreviewFragmentDoc","TrackRadioPageFragmentDoc","TrackRadioPlayFragmentDoc","AlbumPreviewDocument","AlbumPageDocument","AlbumHeaderSectionDocument","AlbumHeaderSectionByTrackDocument","AlbumTracksSectionDocument","AlbumTracksSectionByTrackDocument","AlbumTracksPaginationDocument","Temp_AlbumTracksPaginationWithPreviewDocument","AlbumTracksByTrackPaginationDocument","AlbumPlayDocument","AlbumArtistAlbumsSectionDocument","AlbumArtistAlbumsByTrackSectionDocument","AlbumArtistAlbumsPageDocument","AlbumArtistAlbumsPaginationDocument","ArtistLinkDocument","ArtistPreviewDocument","ArtistPageDocument","ArtistPageHeaderSectionDocument","ArtistPopularTracksSectionDocument","ArtistAlbumsSectionDocument","ArtistSinglesSectionDocument","ArtistSimilarArtistsSectionDocument","ArtistAppearsOnAlbumsSectionDocument","ArtistPlayDocument","ArtistAlbumsPageDocument","ArtistAlbumsPaginationDocument","ArtistAppearsOnAlbumsPageDocument","ArtistAppearsOnAlbumsPaginationDocument","ArtistRadioPageDocument","ArtistSimilarArtistsPageDocument","ArtistSimilarArtistsPaginationDocument","ArtistSinglesPageDocument","ArtistSinglesPaginationDocument","ArtistTracksPageDocument","ArtistTracksPaginationDocument","ArtistTracksPlayDocument","AuthorizeUrisDocument","DeviceAuthorizeDocument","LogoutAllDevicesDocument","InviteFlowHelpUrlDocument","ChartLinkDocument","ChartPreviewDocument","ChartPageDocument","ChartItemsPaginationDocument","FirstTrackChartDocument","TrackChartPlayDocument","EndlessPlayDocument","FavoriteTracksDocument","FavoriteTracksDeltaDocument","FavoriteAlbumsDeltaDocument","FavoriteAlbumsDocument","FavoriteArtistsDocument","FavoriteArtistsDeltaDocument","CombinedPlaylistsPaginationDocument","CombinedPlaylistDocument","IsCombinedPlaylistDocument","IsFavoriteDocument","OwnPlaylistsDocument","FavoritesStatisticsDocument","FavoriteTracksFullSyncInHoursDocument","FavoriteArtistsFullSyncInHoursDocument","FavoriteAlbumsFullSyncInHoursDocument","LayoutItemSectionDocument","LayoutItemPageDocument","LayoutItemContentPaginationDocument","LayoutItemPlayDocument","LayoutPageDocument","LayoutPageLinkDocument","LiveRadioPlayDocument","LiveRadioPreviewDocument","LiveRadioNowAndRecentlyPlayedDocument","LiveRadioHeartbeatInSecondsDocument","LiveRadioCategoryLinkDocument","LiveRadioCategoryPreviewDocument","LiveRadioCategoryPageDocument","LiveRadioCategoryLiveRadiosPaginationDocument","LiveRadioCategoryPageByLiveRadioDocument","LiveRadioCategoryByLiveRadioLiveRadiosPaginationDocument","LiveRadioLiveRadioCategoryLinkDocument","MixRadioPreviewDocument","MixRadioTracksPaginationDocument","MixRadioPlayDocument","MixRadioCategoryPageDocument","MixRadioCategoryPaginationDocument","MixRadiosPageDocument","RecentTracksDocument","NotificationsPollDocument","NotificationsDocument","RecommendationsPageDocument","RecommendationsPaginationDocument","HistoryRecommendationsPageDocument","HistoryRecommendationsPaginationDocument","DiscoverRecommendationsPageDocument","DiscoverRecommendationsPaginationDocument","PlaylistNotificationCheckDocument","TrackRecommendationNotificationCheckDocument","TrackChartNotificationCheckDocument","TrackRecommendationPreviewDocument","PlaybackFullDocument","PlaybackSampleDocument","PlaylistPreviewDocument","PlaylistPageDocument","PlaylistTracksPaginationDocument","PlaylistPlayDocument","PlaylistCategoriesPageDocument","PlaylistCategoriesPaginationDocument","PlaylistCategoryPageDocument","PlaylistCategoryPlaylistsPaginationDocument","UserProfilesDocument","ProfilesColorsDocument","RecentlyAddedDocument","RecommendationLinkDocument","RecommendationPageDocument","RecommendationContentPaginationDocument","RecommendationPlayDocument","SearchMixedSectionsDocument","SearchPlaylistsSectionDocument","SearchTracksPageDocument","SearchAlbumsPageDocument","SearchArtistsPageDocument","SearchPlaylistsPageDocument","SearchTracksPaginationDocument","SearchAlbumsPaginationDocument","SearchArtistsPaginationDocument","SearchPlaylistsPaginationDocument","TrackLinkDocument","TrackPreviewDocument","TrackLyricsIdDocument","TrackLyricsPageDocument","TrackLyricsPaginationDocument","TrackRadioPageDocument","TrackRadioPlayDocument","UrlTransformDocument","UserIdDocument","UserId2Document","UserHistoryRecentContextDocument","UseInviteFlowDocument","ReportLyricsDocument","ConcurrencyCanPlayDocument","ConcurrencyCreateTicketDocument","AddAlbumToFavoritesDocument","AddPlaylistToFavoritesDocument","AddArtistToFavoritesDocument","AddTrackToFavoritesDocument","RemoveAlbumFromFavoritesDocument","RemovePlaylistFromFavoritesDocument","RemoveTrackFromFavoritesDocument","RemoveArtistFromFavoritesDocument","SendFeedbackDocument","LiveRadioHeartbeatDocument","MarkNotificationsAsSeenDocument","CreatePlaylistDocument","UpdatePlaylistDocument","DeletePlaylistDocument","ModifyTracksInPlaylistDocument","AddTracksToPlaylistDocument","AddAlbumToPlaylistDocument","AddPlaylistToPlaylistDocument","AddRecommendationToPlaylistDocument","AddTrackChartToPlaylistDocument","CreateProfileDocument","UpdateProfileDocument","RemoveProfileDocument","ReportPlaybackDocument","AUDIO_INPUT_AUDIOS_CHANGE","AUDIO_INPUT_AUDIO_END_REASON","AUDIO_INPUT_AUDIO_POSITION_RESET","AUDIO_INPUT_AUDIO_SRC_CHANGE","AUDIO_INPUT_PLAY_AUDIO","AUDIO_INPUT_TYPE_CHANGE","PLAYQUEUE_CLEAR_PRIORITY_LANE","PLAYQUEUE_KEEP_PRIORITY_LANE","PLAYQUEUE_UPDATE","PLAYQUEUE_UPDATE_MIXRADIO_SESSION","LIVERADIO_NOW_AND_RECENTLY_PLAYED_UPDATE","LIVERADIO_SET_AND_PLAY","LIVERADIO_UPDATE","PLAYQUEUE_ENDLESSPLAY_TRACK_ID_UPDATE","PLAYQUEUE_ENDLESSPLAY_UPDATE","AUDIO_OUTPUT_AUDIO_DURATION_CHANGE","AUDIO_OUTPUT_AUDIO_ENDED","AUDIO_OUTPUT_AUDIO_PLAY_CHANGE","AUDIO_OUTPUT_AUDIO_FAILED","PLAYER_CONCURRENCY_LOST","PLAYER_PREVIOUS","PLAYER_REWIND","PLAYER_SET_CONTROLLER_AND_OUTPUT_TYPE","RECENT_TRACKS_UPDATE","RECENT_TRACKS_ADD_ID","CLEAR_APP_STATE","UPDATE_CONTROL_PANEL","ENABLE_LOGTYPE","NAVIGATION_NAVIGATED","NOTIFICATION_MAINTENANCE_DATA_UPDATE","NOTIFICATION_WELCOME_MESSAGE_SHOWN","NOTIFICATION_FEED_SET_NOTIFICATIONS","NOTIFICATION_FEED_NOTIFICATIONS_SEEN","CAST_SET_AVAILABLE","CONTEXT_MENU_CLOSE","ANALYTICS_PLAYED_ERROR_EVENT","ANALYTICS_PLAYED_EVENT","UPDATE_APP_VERSION","REHYDRATE","USER_CHANGED","USER_LOGGED_OUT","USER_UPDATED_TOKENS","USER_HAS_BAD_TOKENS","USER_PROFILES_CHANGED","ROUTER_REDIRECTING","SET_ALBUMS_SORTING","SET_BROWSER_LANGUAGE","EVENT_MESSAGE","LOGGING_EVENT_MESSAGE","LOGGING_EVENT_ANALYTICS","LOGGING_EVENT_PLAYBACK_REPORT_FINISHED","LOGGING_EVENT_PLAYBACK_REPORT_FORCE_FINISHED","LOGGING_EVENT_PLAYBACK_REPORT_SENT","PLAYLIST_CANCELLED_ADDING_DUPLICATE_ITEMS","UPDATE_CACHED_PLAYLISTS","TAB_FOCUS_CHANGE","TRACING_NEW_TRACE","wasLoggedIn","setWasLoggedIn","getRedirectedUrl","wholeUrl","getRedirectUrl","transformTo","V_2","redirectUrl","setRedirectUrl","hasResult","setHasResult","getCurrentUrl","appInit","appInit1","appInit2","isUnloading","initEnvironment","isBuildDevelopment","buildEnvironment","WebAppEnvironment","Development","appVersion","getAppVersionString","dsnFromBrand","targets","getTraceTargets","initSentry","sessionTask","initAppSession","initNavigationStack","initEventLogService","initAnalyticsService","initConsoleLoggerService","initMpLoggerService","initStoreAndPersist","initKibanaLoggerService","initRemoteConfigService","initAppVersionService","initControlPanelService","initGraphqlCacheService","initFbPerformance","configcmsInit","initServiceWorker","initPWAService","unloadTokenLock","initTabActiveService","initLanguageService","deleteSessionDbState","initLoginFromPageLoad","initUserService","initGraphqlSubscriptions","initConcurrencyPolling","initConcurrency","initRecentTracksService","initFavorites","initializeCachedFavoritesStatistics","initCachedUserPlaylists","initMediaSessionService","initShortcutService","playerControllerService","initLocalPlayerControllerService","initLiveRadioHeartbeatService","initPlayerDebug","initInputAudioService","initPlayQueueAudioInputService","initLiveRadioAudioInputService","initNotificationFeedService","initPlaybackReportService","initPlaybackReportSendService","initLyricsReportService","initBrowserAudio","initCastService","startPlaybackReporting","initDelegatedLoginListener","initCacheQuotaService","initUserDebug","unloadStoreAndPersist","unloadAppSesssion","analyticsKeys","_analyticsKeys","setTranslations","getLangFromState","analyticKey","translationsPromise","TypedMessageBus","preLoadedStore","createNewStore","getSessionCache","getAll","keyValues","newStore","rootReducer","persistMiddleware","setMany","createMessageBusMiddleware","storeDispatch","saveSessionState","initiator","saveCurrentState","databaseName","getSessionDbKey","getConfiguredCache","deleteDatabase","fromDatabaseName","toDatabaseName","getMany","idbKeyVal","closeAndDeleteDatabase","database","txMode","createDatabaseAndStore","del","feature","LiveradioHeartbeat","Multiselect","APQ","requestIdleCallbackFn","requestIdleCallback","firstLoad","dbCompareState","saveStateChanges","cacheFn","compareState","removeBlacklistedReducers","reducersToUpdate","reducerKey","getReducersWithChanges","reducersToSave","convertToDbKeyValues","convertToObject","convertToObjectFromState","durationStandard","timingStandard","api","graphqlMaxItemsFetchFallback","graphqlMaxPlayItemsFetch","mixRadioCountFetch","mixRadioMinFetch","fbaseConfig","MaxTraceValueLength","liveRadioConstant","recentlyPlayedTracksPollInterval","mpanelConfigDevelopment","apiKey","mpanelConfigProduction","resourceHighlightCap","searchHistoryItemLength","paginationDefaultInit","paginationDefaultMore","paginationBufferHeight","initCount","playerConfig","rewindLimit","endlessPlayLength","lastPositionUpdateIntervalMs","playbackReportChunkUpdateIntervalMs","playerMultiSkipTimeoutMs","hlsRetryTimeoutMs","smallPreloadDurationSec","maxPreloadDuratioSec","expectedHlsStreamValidSec","chromecastQueueMaxCount","chromecastQueueMaxLookbackCount","preloadOrderConfig","order","BrowserAudioItemPreloadSize","Full","playQueueShuffleCoefficients","relativeWeightMax","relativeWeightMin","filterDebounceMs","expirationMs","maxCriterionLength","sessionStorageKeys","lastPosition","domainItemType","subscribeAll","setStoreSync","evaluate","getCurrentAppVersion","installationId","getNewInstallationId","dbVersion","newXClientId","audios","analytics2","errorCount","url2","tryUpdateArray","audioId","queueAdded","updateNormalizedAnalyticsQueueAdded","audioInput","getLastPositionFromSessionStorage","pauseAndRecoverPositionOnPageLoad","resetErrorCountOnPageLoad","chromecastId","getNewCastItemId","contextMenuReducer","openContextMenu","closeContextMenuSheet","closeAllContextMenus","updateContextMenuPosition","hoverContextMenuItem","setVisibleContextMenu","onNavigated","enabledLogTypes","Info","enableAudioCachePool","enableAudioPreload","enableNotificationFeed","enableNotificationFeedTestMode","controlPanelState","cleanedControlPanelState","cleanHydrateState","rehydrateState","keep","discard","keysToKeep","keysToDiscard","arrayDifference","currentRadioContext","currentRadioAnalytics","stateCurrentRadio","currentLiveRadioTrack","recentlyPlayedLiveRadioTracks","DomainModelType","endCursorIndex","radioContext","analytics","modalReducer","notSeenCount","notificationState","appFeed","welcomeMessageShown","newBanners","endlessPlayTrackId","firstQueueSession","recentTracksLastUpdated","recentTrackIds","recentTrackIdsSet","lastUpdated","autoOpen","Local","PlayerOutputType","Browser","restoreVolume","mute","One","_repeat","newRepeat","getNextRepeatStatus","newShuffleState","getShuffleStateWhenSetAndPlay","getNextShuffleState","_rootReducer","appReducer","audioInputReducer","cacheReducer","castReducer","controlPanelReducer","liveRadioReducer","notificationsReducer","notificationFeedReducer","playerReducer","playQueueReducer","uiReducer","userReducer","ownPlaylistsSorting","sidebarPlaylistsSorting","localization","cloneWithDefaultValues","playQueueLength","trackingId","hasBadToken","TemporaryError","DragDropItemType","removePageSectionsFromPreviewContext","getDragTitle","TraceState","startPlayUserTrace","Initial","Started","startCallbacks","putAttributePlayUserTrace","putAttributeCallbacks","stopCallbacks","UserPlayTrace","StreamUrlType","urlType","fetchedTime","Mp3","createQueueTrackModel","originalIndex","addedDataId","playableData","getAnalyticsPlayableProperties","graphType","getComparableTrackPlayableId","BrowserAudioLoadState","PreloadFetchResultStatus","ErrorType","scrollId","newPreview","createAlbumArtistAlbums","removeSelf","createAlbumPreviewConnectionModel","__typename","artistName","createAlbum","releaseDate","tracksCount","sharingUrl","share","createArtistLinkModel","createTrackNoAlbumPreviewConnectionModel","createAlbumArtistAlbumsSectionModel","createAlbumRecommendations","createRecommendations","createArtistAlbumsSectionModel","createArtistAlbumsAppearsOnSectionModel","appearsOnAlbums","createArtist","createArtistRadioLinkModel","featuredArtists","createTrackPreviewConnectionModel","createArtistRadioPreviewModel","createArtistTracksSectionModel","createArtistSinglesSectionModel","createArtistSimilarArtistsSectionModel","radioTracks","getDurationFromTracks","createArtistPreviewConnectionModel","createBannerTarget","createLiveRadioPreviewModel","createMixRadioPreviewModel","MixRadioLinkParentType","createAlbumPreviewModel","createArtistPreviewModel","createLayoutPagePreviewModel","mixRadioCategory","createMixRadioCategoryPreviewModel","createPlaylistPreviewModel","playlistCategory","createPlaylistCategoryPreviewModel","externalLink","createExternalLinkModel","createBanner","createChart","createTrackChartPageModel","createAlbumChartPreviewModel","createTrackChartPreviewModel","createAlbumChartPageModel","chart","createConnection","createStaticConnection","createTrackPreviewModel","createPlaylistPreviewConnectionModel","createLiveRadioTrackPreviewModel","createTrackNoAlbumPreviewModel","createMixedContentPreviewModel","createBannerPreviewModel","createChartPreviewModel","createLiveRadioCategoryPreviewModel","createNotificationPreviewModel","createRecommendationPreviewModel","createSearchMixedResultPreviewModel","createTrackPlayablePreviewModelFromSearchTrackResult","createLayoutItemGroupModel","createLayoutItemSkeletonSectionModel","recommendations","createRecommendationPreviewConnectionModel","EndlessPlay","ExternalLink","createLiveRadioPreviewConnectionModel","getTracksFromLiveRadioModel","recentTracks","liveRadioTracks","categoryId","radioId","playbackContext","createStaticPreviewConnectionModel","mp3Url","liveRadioPreview","createLiveRadioTrackPreviewConnectionModel","createMixRadioPreviewConnectionModel","createMixRadio","FavoriteTracks","Genre","PrivatePlaylist","PublicPlaylist","Recommendations","YourHistory","YourMixes","YourMixesPage","getMixedContentDomainType","contextId","createMixedContentTrackPlayModel","MixedContentTrack","playContextTrack","createTrackPlayablePreview","TrackSelection","createMultiselectTrackPreviewConnectionModel","combinedPlaylists","createMyMusicTracks","createMyMusicTrackPreviewConnectionModel","NotificationKind","getNotificationKind","TryMixRadio","PlaylistUpdated","TrackRecommendationUpdated","TrackChartUpdated","RecommendedTracks","WelcomeToWeb","Social","getPlayable","playContextId","notificationType","getMixRadioPreview","getTrackRecommendationPreview","recommendation","notificationId","createNotificationPreviewModelLocally","availableBegin","availableEnd","seen","notificationKind","NavigateToFrontPage","NavigateToRadio","NavigateToMixRadios","getNotificationType","eligibilityReasons","seenAt","subTitle","replaceAllBackwardsCompatible","trackChartId","getChartPreview","createPlaylistCategoryPreviewConnectionModel","createdAt","createPlaylistPlayModel","createPlaylistTrackPreviewConnectionModel","followersCount","modifiedAt","trackIds","createAlbumRecommendationsPreviewModel","createPlaylistRecommendationsPreviewModel","createTrackRecommendationsPreviewModel","createTrackRecommendationsPlayModel","createAlbumRecommendationsPageModel","createPlaylistRecommendationsPageModel","createTrackRecommendationsPageModel","createSearchAlbumResults","createSearchArtistResults","mixed","createSearchMixedResultPreviewConnectionModel","createSearchPlaylistResults","SearchResult","createSearchMixedResultsSectionModel","createSearchTrackResultsSectionModel","createSearchAlbumResultsSectionModel","createSearchArtistResultsSectionModel","createSearchPlaylistResultsSectionModel","searchTrack","SearchResultTrack","createSearchTrackResultPreviewModel","createSearchTrackResults","createTrackPlayablePreviewConnectionModelFromSearchTrackResult","createSkeletonPreviewModel","parentType","estimatedType","Skeleton","getEstimatedContentType","skeletons","skeleton","availableToStream","playbackReportContext","genre","createFeaturedArtistOnTrackLinkModel","createTrackRadioLinkModel","createAlbumLinkModel","_album","createTrackRadio","similarRadioTracks","createTrackRecommendations","charts","liveRadioCategories","liveRadios","mixRadios","mixedContents","userRecommendations","createLayoutPageItemTracksSectionModel","createLayoutPageItemAlbumsSectionModel","createLayoutPageItemArtistsSectionModel","createChartPreviewConnectionModel","createLayoutPageItemChartsSectionModel","createLiveRadioCategoryPreviewConnectionModel","createLayoutPageItemLiveRadioCategoriesSectionModel","createLayoutPageItemLiveRadiosSectionModel","createMixedContentPreviewConnectionModel","createLayoutPageItemMixedContentsSectionModel","createLayoutPageItemPlaylistCategoriesSectionModel","createLayoutPageItemPlaylistsSectionModel","createLayoutPageItemMixRadiosSectionModel","createLayoutPageItemRecommendationsSectionModel","createBannerPreviewConnectionModel","createLayoutPageItemBannersSectionModel","createLayoutItemConnectionModel","createItem","getDomainItemType","getResourceDisplayTypeFromItemDisplayType","createLayoutItemContentModel","getDisplayType","createLayoutPageGroupConnectionModel","getGroupAndItemIndex","newPage","newGroup","ContextMenuItemType","ContextMenuType","sessionsKey","sessionsInvalidateUpdateInterval","getAppSession","getOrCreateSession","tokenStorageId","tokens","getTokensNow","storageId","findTokenStorageIdWithRefreshToken","saveTokensNow","addTokenStorageIdToExistingAppSessions","getOrCreateSessionHandler","tryGetSession","tryGetSessionFromWindowName","relevant","tryGetLatestSession","tryGetRelevantSession","isSessionLoaded","activity","created","saveAppSessionHandler","claimSession","copySession","setCurrentSession","sorted","copySessionStorage","unloadSession","getCurrentHandlerAndSession","isLatestSession","createHandler","sessionsStr","localStorage","runSessionActivityUpdate","tryTransferReportsFromSharedStorageAndFinishInCurrentSession","initDebug","runSessionsInvalidateUpdate","prefixes","databases","cleanupOrphanSessionData","seperateTokenSession","lastSleepCheck","inSleepTimeout","isInSleepTimeout","restoreSessionStorage","restorePlaybackReports","restoreSession","deleteSessionStorage","sessionDebug","simulateRestoreSession","key1","getAccessTokenStorageKey","key2","getRefreshTokenStorageKey","key3","getLoadedPlaybackReportsStorageKey","key4","getFinishedPlaybackReportsStorageKey","getAppSessionHandler","simulateRestoreSessionFn","getStateDbName","getAppSessionHandlerKey","parseData","saveData","finishedReports","getFinishedPlaybackReports","mySession","isMySession","reports","getSessionFinishedPlaybackReports","saveFinishedPlaybackReports","saveSessionFinishedPlaybackReports","finished","sendReport","reportId","loadedReports","getLoadedPlaybackReports","saveLoadedPlaybackReports","saveSessionLoadedPlaybackReports","pendingReports","getPendingLyricsReportsStorageKey","getSharedLoadedPlaybackReports","getSharedFinishedPlaybackReports","saveSharedLoadedPlaybackReports","saveSharedFinishedPlaybackReports","loadedShared","loadedAll","finishedShared","finishedAll","restoreLoadedPlaybackReports","restoreFinishedPlaybackReports","transferReportsToSharedStorage","tryTransferAndFinishReportsInCurrentSession","deleteDbState","storageIdFrom","storageIdTo","dbNameFrom","dbNameTo","copyDbState","getTokenSessionRefreshTokenKey","getRefreshTokenNow","refreshTokenDate","getTokenSessionRefreshTokenDateKey","getRefreshTokenDateNow","getTokenSessionAccessTokenKey","getAccessTokenNow","saveTokens","tokenSource","inRefreshBlock","dateKey","removeRefreshTokenDateNow","removeRefreshTokenDate","isRefresh","saveRefreshTokenNow","saveRefreshToken","saveAccessTokenNow","saveAccessToken","tokenKey","getTokenSessionInTokenRefreshKey","tokenRefreshBlock","inBlock","_setTokenRefreshLock","inTokenSessionRefresh","inRefreshLock","_saveInTokenRefresh","getSharedFinishedPlaybackReportsStorageKey","getSharedLoadedPlaybackReportsStorageKey","getSharedRefreshTokenStorageKey","getSharedAccessTokenStorageKey","getSharedAccessToken","saveSharedAccessToken","AppVersionCompare","appVersionCompare","compareTo","ignoreBuildVersion","appVersionCompareFn","Lower","Higher","Same","LanguageCode","ISOLanguageCode","Platform","BrowserName","getLanguageCode","daDK","enUs","getLanguageCodeFromState","getPlatform","isAppRunAsPWA","Web","getUserAgent","keyword","Android","Linux","iOS","iPadOS","iPodOS","macOS","da","Production","browsers","Crawler","must","Opera","Edge","Firefox","not","Chrome","Chromium","Safari","InternetExplorer","getBrowserNameAndVersion","browser","versionStr","parseIntAsNormalPositiveNumberOrNull","detected","_updateArray","findFn","changeFn","_log","arrayCopy","splitArrayIntoChunksWithReuse","arrayOldChunks","newChunk","oldChunk","isSame","array1","array2","removeIndex","chunkSize","setArrayOldChunks","useQueryDomainModel","createAlbumArtistAlbumsPageModel","queryDomainModel","createArtistAlbumsPageModel","createArtistAlbumsAppearsOnPageModel","createArtistSimilarArtistsPageModel","createArtistSinglesPageModel","createArtistTracksPageModel","createSearchAlbumResultsPageModel","createSearchArtistResultsPageModel","createSearchPlaylistResultsPageModel","createSearchTrackResultsPageModel","me","createHistoryRecommendationsPage","system","urlTransform","createDiscoverRecommendationsPage","createArtistRadioPageModel","createChartPageModel","createChartItemPreviewConnectionModel","createLiveRadioCategoryPageModel","createMixRadioCategoryPageModel","createMixRadiosPageModel","createPlaylistCategoryPageModel","usePlaylistPage","createPlaylistPageModel","createRecommendationPageModel","createRecommendationItemPreviewConnectionModel","createPlaylistCategoriesPageModel","createTrackRadioPageModel","createMyMusicAlbumsPageModel","favorites","createMyMusicArtistsPageModel","createMyMusicPlaylistsPageModel","createMyMusicTracksPageModel","getFavoritesStatistics","createLayoutPageModel","useLayoutPage","createLayoutItemPageModel","getMixedContentTrackPlay","getRecommendationPlay","createRecommendationPlayModel","createTrackPlayablePreviewModelFromMixedContentTrack","getPlaybackSample","playback","createStreamUrl","getPlaybackFull","full","getPlaylistNotificationCheck","getTrackRecommendationNotificationCheck","getTrackChartNotificationCheck","getNotifications","notificationsState","createNotificationPreviewConnectionModel","getNotificationsStatus","mutateMarkNotificationsAsSeen","mutateDomainModel","markAsSeen","getAlbumPlay","createAlbumPlayModel","getAlbumArtistAlbumsPage","getArtistPlay","createArtistPlayModel","getArtistRadioPage","createArtistRadioPlayModel","getArtistSinglesPage","getTrackChartPlay","createTrackChartPlayModel","getLayoutItemPlay","createTracksLayoutItemPlayModel","getPlaylistPlay","getMixRadioPlay","createMixRadioPlayModel","getMixRadioTracksPagination","createLiveRadioPlayModel","getLiveRadioNowAndRecentlyPlayed","createLiveRadioPlayTracks","getMyMusicTracksPlay","createMyMusicTracksPlayModel","getRecentTracks","createRecentTracksModel","getMeEndlessPlay","createEndlessPlayModel","includeProfiles","needInvite","useInviteFlow","createUserProfileModel","getUserProfiles","createSearchLimitedMainModel","createSearchLimitedPlaylistModel","getTrackRadioPlay","createTrackRadioPlayModel","getIsFavorite","favorite_cache","cacheId","getIsMeFavorite","favoritesStatus","getOwnPlaylists","ownPlaylists","mutateProvideFeedback","feedbacks","mutateAddTrackToFavorites","mutateDomainModelWithErrors","addTrack","limitExceeded","addProfile","updateProfile","removeProfile","lyricsIdCache","lyrics","mutateRemoveTrackFromFavorites","removeTrack","mutateAddAlbumToFavorites","addAlbum","mutateRemoveAlbumFromFavorites","removeAlbum","mutateAddArtistToFavorites","addArtist","mutateRemoveArtistFromFavorites","removeArtist","mutateAddPlaylistToFavorites","addPlaylist","mutateRemovePlaylistFromFavorites","removePlaylist","mutateReportLyrics","reportLyricsDisplay","mutateReportPlayback","reportPlayback","mutateSetActivePlaybackStream","playbackConcurrency","createTicket","mutateGetPlaybackStream","mutateAddTracksToPlaylist","wasAdded","addTracks","addedCount","duplicates","duplicatesCount","duplicatedTrackIds","mutateAddAlbumToPlaylist","mutateAddPlaylistToPlaylist","mutateAddTrackChartToPlaylist","addChart","mutateAddRecommendationToPlaylist","addRecommendation","getLiveRadioHeartbeatInSeconds","deviceSettings","liveRadioHeartbeatInSeconds","mutateReportLiveRadioHeartbeat","reportHeartbeat","getBackendBaseUrl","portPath","authorize","logoutAllDevices","inviteFlowHelpUrl","apiTokenPath","apiClientlogPath","getQueryError","networkError","graphQLErrors","mapDomainModel","errorPolicy","logQueryError","errorQueries","essentialQueries","errorFirst","errorType","errorAll","errorEssential","getCombinedQueryResult","modified","setModified","queryResult","mapModel","reloadOnLanguageChange","coalesce","useQuery","queryError","useQueryError","useMapDomainModel","parseError","parserErrorReason","setRefetching","manual","useRefetch","coalescedModel","combine","setModel","setQueries","createdIntervalCallbackGroup","autoUpdate","param","updatedModel","updateInterval","begin","removeAll","webSocketClient","webSocketCurrentUserId","closeWebsocket","createApolloLink","graphqlEnvironmentName","apiPortalId","GraphqlEnvironmentName","Dev","Prod","Stage","Test","standardHeadersLink","ApolloLink","getAppProperties","correlationId","getNewCorrelationId","acceptLanguage","getGraphQlLanguageCode","headerNames","operationHeadersLink","operationType","authHeadersLink","getOrWaitForTokens","getTokens","tryRefreshToken","refreshResult","fromPromise","flatMap","authorizationValue","getGraphqlClientId","authorization","correlationIdHeaderLink","refreshTokenLink","isAuthenticationError","onGqlUnauthenticated","Observable","of","createHttpLink","httpLink","HttpLink","fetchGraphqlContent","createPersistedQueryLink","sha256","createWsLink","getUserIdFromState","WebSocketLink","isWsSubscription","getMainDefinition","errorLink","isLoggedError","InMemoryCache","ApolloClient","watchQuery","fetchPolicy","myMusicSubscription","gql","subscription1","subscription2","enableGraphQlSubscriptions","ensureWebsocketRoutesToUser","subscribedAccessToken","Subscriptions","observable1","favoritesUpdates","updateType","fakeTrack","enableErrorLog","mutate","enforceCacheQuotas","tryEnforceCacheQuota","serviceWorkerConfig","cacheNameGraphql","maxCacheEntriesGraphql","cacheNameHls","maxCacheEntriesHls","cacheNameNavigate","maxCacheEntriesNavigate","cacheName","enforceCacheQuota","caches","clearPersonalizedCache","entryUserId","cacheType","CacheType","GraphQL","_isCancelled","throwIfCancelled","CancellationToken","setStateInstant","teardown","externalSetStateInstant","useDebounce","debouncedFun","timedCallback","lastRun","schedule","intervalMs","createdIntervalCallback","registrations","lookBackMs","timeMs","shouldStop","register","inputs","throttled","onPlaybackTriggered","ticket","currentPlaybackStreamTicket","setActivePlayback","onPlaybackLost","ConcurrencyLost","showConcurrencyModal","friendlyDeviceName","initPlayerStartedByUserEvent","lastPoll","secondsSinceEpoch","pollIfPlaying","isPollThrottled","minSecondsSinceLast","enableConcurrencyPolling","_currentPlaybackStreamTicket","onPlaybackTriggeredIfPlaying","clearThrottle","currentlyPlaying","inCall","getMore","defaultMore","getDefaultMore","newConnection","Ok","convert","getAllContextMenuChildren","getAllContextMenuParents","parents","isContextMenuLayerHover","hoverIds","isContextMenuHover","isContextMenuChildHover","isContextMenuChildOpen","openId","isContextMenuSheetVisible","appMenus","layers","openMenu","createContextMenuSheet","menuId","isContextMenuTreeVisible","getContextMenuSheetChildrenLayers","closeContextMenuChildren","enableLogType","getCacheStats","cacheGraphqlLength","cacheHlsLength","cacheNameInstallation","cacheInstallationLength","cacheNavigateLength","getReduxState","getReduxDump","getReduxDumpLength","getSettings","setNotifications","logPlayback","logChromecast","logRemoteConfig","RemoteConfig","logDispatches","Dispatch","logInfo","logPlaylist","logAppSetting","AppSetting","logNotifications","logNavigationStack","NavigationStack","logUser","logCollection","Collection","logSubscriptions","logAll","sendLog","simple","getNotificationFeedFromState","setEnvironmentPreset","setEnvironmentPresetFromControlPanel","setEnvironmentProperties","setEnvironmentPropertiesFromControlPanel","expires","domain","cookie","toUTCString","EnvironmentPreset","chromecastRecieverAppIds","telmoreDev","telmoreProd","youSeeDev","youSeeProd","environmentSessionStorageKey","logAndReload","updateSessionEnvironmentFromPreset","preset","getEnvironmentConfigDefault","updateSessionEnvironment","getEnvironmentConfigTelmoreProd","getEnvironmentConfigYouSeeProd","getEnvironmentConfigProd","getEnvironmentConfigTelmoreStage","getEnvironmentConfigYouSeeStage","getEnvironmentConfigStage","envStr","tryReadSessionEnvironment","readEnvironmentPropertiesFromUrl","isDevBuildEnvironment","getEnvironmentConfigTelmoreDefault","getEnvironmentConfigYouSeeDefault","runtimeEnvironment","getRuntimeEnvironment","chromecastPortal","chromecastRecieverAppId","apiMoreStationsCategoryId","addedPlayables","notAddedCount","clearTemporaryFavoriteCache","getFavoriteType","removedPlayables","notRemovedCount","userState","getIsMeFavoriteWithCustomCache","entryGuard","ConcurrentEntryGuard","tryUpdateCache","playlistCount","artistCount","albumCount","expire","expirationInSeconds","stripCasing","useFilteredItems","toLocaleLowerCase","filterItem","setHasLoadedOnce","setFilterDebounced","setFilterInstant","filteredItems","addToStringWithSeperator","seperator","toLocaleString","minutes","padStart","getLongTimeSpanFromSecondsHHMM","minuteUnit","yearStr","getFullYear","monthStr","getMonth","dateStr","getDate","monthNamesDa","monthNamesEn","getAppDateDDMMMM","getYearYYYY","getShortTimeSpanFromSecondsTIMEAGO","long","Intl","RelativeTimeFormat","relativeTime","neg","days","months","years","getNotificationsDateOrTimeAgo","today","UTC","getBackendCategory","Contents","OtherThings","getFeedbackOS","Apple","MacOs","deviceInfo","getBrowserName","operatingSystem","applicationInfo","supportKey","browserLanguageChange","updateHtmlLang","getLang","isoLangCode","getISOLanguageCode","initPlayerActionAnalyticsService","initQueueActionAnalyticsService","redirect","getAnalyticsFeedNotificationsSeenEvent","getAnalyticsSingleNotificationSeenEvent","getAnalyticsSingleNotificationConvertedEvent","queueData","loadData","stopData","getAnalyticsPlayedContentEvent","getAnalyticsPlayedContentErrorEvent","getChangeSettingEndlessPlayData","getChangeSettingThemeSettingData","getChangeSettingLanguageSettingData","getAnalyticsPlaylistCreatedEvent","getAnalyticsPlaylistDeletedEvent","getAddToPlaylistEvent","getCreateProfileEvent","getEditProfileEvent","getDeleteProfileEvent","getAnalyticsMyMusicChangedEvent","onPageContextReady","getAnalyticsLogInEvent","getAnalyticsSentryCutoffEvent","getAnalyticsLogOutEvent","onNavigation","redirectFrom","getAnalyticsViewPageEvent","getAnalyticsSearchContentEvent","reducedStartingPoint","getAnalyticsLyricsDisplayedEvent","flattenArrayOfPromisesOrData","allowNull","endlessPlayData","getAnalyticsChangeSettingProperties","getAnalyticsSettingChangedEvent","languageSettingData","convertThemeSetting","themeSettingData","combineAnalyticsData","convertAnalyticsAppProperties","getAnalyticsAppProperties","getAndConvertAnalyticsNavigationProperties","getAnalyticsUserProperties","getAnalyticsLoginProperties","getAnalyticsLogoutProperties","convertPlayableProperties","getAndConvertAnalyticsLyricsProperties","getAnalyticsMyMusicAddedProperties","getAnalyticsMyMusicRemovedProperties","added","getAnalyticsNotificationsAdded","convertNotificationFeedProperties","getAnalyticsNotificationFeedProperties","getAnalyticsNotificationsSeen","convertPlayableLoadProperties","convertPlayableStopProperties","convertResourceParentProperties","resourceParentProperties","getAnalyticsNavigationProperties","pageProperties","rootPageProperties","rootSectionProperties","getAnalyticsUserPlayProperties","convertPlayableErrorProperties","getAnalyticsUserPlayErrorProperties","playlistData","getAnalyticsPlayableIdProperties","getAnalyticsAddToPlaylistProperties","SetAnalyticsProp","getCreateProfileActionProperties","getEditProfileActionProperties","getDeleteProfileActionProperties","actionType","IsViewingQueue","getAnalyticsQueueActionProperties","convertAnalyticsSearchContentProperties","getAnalyticsSearchContentProperties","getAnalyticsSentryCutoffProperties","createAnalyticsData","SetFirstAnalyticsProp","IncrementAnalyticsProp","settingData","getAnalyticsSingleNotificationSeen","getAnalyticsSingleNotificationConverted","getActivePageContext","isPagePlayable","getAnalyticsPlayablePageProperties","convertAnalyticsViewPageProperties","getAnalyticsViewPageProperties","getAnalyticsPlayerActionProperties","logPlayerActionEvent","getDesktopQueueOpen","getSecondsPlayedFromState","getAnalyticsPlayerActionEvent","actionSource","trackProgress","logPlayPauseToEvent","logMuteUnmuteEvent","tryLogVolumeSeekEvent","getWindowInnerSizeString","AppVersion","getAppVersionNumber","Brand","getBrand","WindowWidthWeb","WindowHeightWeb","convertBrandValue","convertTheme","convertPlatformValue","themeSetting","getMixpanelViewPageType","preferenceType","shortcutThemeSettingWeb","isPageMyMusic","Automatic","NoMusicRights","getLogoutTriggerStr","Lines","convertPageProperties","getAnalyticsCurrentPageProperties","convertRootPageProperties","getAnalyticsRootPageProperties","convertRootSectionProperties","getAnalyticsRootSectionProperties","addCurrentNotificationsProperties","currentSeen","currentConverted","getNotificationsCounts","getCurrentNotifications","currentNotifications","getPageName","getPageId","previousPage","getPreviousPageContext","pageName","previousPageName","getAnalyticsResourceParentProperties","playDuration","playedMoreThan30sec","AudioTrackStreamError","AudioHtmlElementError","AudioHlsError","convertAnalyticsErrorTypeFromAction","queueType","playerSettingShuffle","playerSettingRepeat","playDestination","previousQueueLane","convertPlayDestination","convertQueueType","Heavy","convertPlayerSettingShuffle","All","covertPlayerSettingRepeat","contentName","graphqlType","contentArtist","convertContentType","contentAlbum","contentGenre","ChromecastApiAvailable","ChromecastLocalSync","ChromecastNoSession","ChromecastResumeTimeoutOnPageLoad","ChromecastSessionResumed","ChromecastSessionSessionEnded","ChromecastSessionSessionEnding","ChromecastSessionStartFailed","ChromecastSessionStarted","AppSessionEnded","BrowserAudioEnded","ChromecastPlayerStateChange","ChromecastMediaLoadedChange","ChromecastCurrentTimeChange","UserMediaControlsNext","UserMediaControlsPrevious","UserPlayerSwipeNext","UserPlayerSwipePrevious","UserEndChromeCast","UserLogIn","UserLogOut","AppStart","SkipOnFail","AudioLoadTrackStream","BrowserAudioPause","BrowserAudioPlayPrevented","BrowserAudioPlaying","BrowserAudioSeeked","BrowserAudioSeeking","BrowserAudioWaiting","EndlessPlayUpdate","UserKeybordKeySpace","UserMediaControlsPause","UserMediaControlsPlay","convertAnalyticsPlayEndReasonFromAction","getRepeatStatusAnalyticsKey","isMyMusic","getParentName","parentGraphType","parentIsMyMusic","parentIsMixedContent","getNavigationRootPreview","getNavigationRoot","rootPageName","rootPageAncestryLevel","getNavigationRootPageAncestryLevel","rootPageId","rootPageType","rootName","convertRootPageName","rootPreviewName","rootPreviewId","rootPreviewRank","rootPreviewType","rootSectionName","rootSectionId","rootSectionRank","rootSectionDisplay","rootSectionType","convertRootSectionDisplayType","getResultType","searchName","searchLength","searchGroupRank","resultType","addSingleNotificationProperties","getNotificationRank","getNotificationIndex","preDeeplinkUrl","errorText","errorPage","getContentPlaylistType","getErrorType","getErrorPage","queueIntentData","rootPreviewProperties","getAnalyticsRootPreviewProperties","numberOfNotifications","numberOfNotificationsSeen","numberOfNotificationsConverted","numberOfCurrentNotifications","numberOfCurrentNotificationsSeen","numberOfCurrentNotificationsConverted","numberOfPreviousNotifications","numberOfPreviousNotificationsSeen","numberOfPreviousNotificationsConverted","getIsLoggedInFromStateImmediate","getFavoritesStatisticsFromCache","hasProfiles","getCurrentProfile","logQueueActionEvent","getAnalyticsQueueActionEvent","tryLogRepeatChangeEvent","logShuffleUnshuffleEvent","logQueueHistoryOnOffEvent","logOpenCloseQueueViewEvent","logFavoriteUnfavoriteEvent","fbApp","getPerformance","trackingFbase","LogLevel","Debug","Warning","getOrCreateFbApp","fb_GetConfig","getConfig","initConfig","initializeApp","initFbApp","initFbLoggerService","initializeAnalytics","initAnalytics","logEvent","logName","getEventName","getMessageLogFields","logToFbaseAnalytics","getFbPerformance","instrumentationEnabled","performanceTrace","putAttribute","UnexpectedEmptyString","shoudLogTag","logPropsFn","logProps","overflowCode","throttle1","throttle2","throtteLog","loggerErrorEvent","timeFormatted","messageCode","createLogMessageEntry","delayInSeconds","trySendPendingReports","getPendingLyricReports","savePendingLyricReports","sendOrSaveReport","Sync","Static","displayedAt","currentIdentifyId","mpanel","trackingMpanel","mp","cross_subdomain_cookie","disable_persistence","ignore_dnt","initMpanel","getKey","logToMpanel","allowUserAnalytics","identify","used","fromEntries","register_once","people","set_once","increment","trySendPlaybackReports","reportSent","playbackUrl","playedSeconds","playedAt","enableFinishReports","timers","getAudioByReportIdFromState","getAndDeleteSharedReports","finishTransferedReports","finishReport","updateLoadedPlaybackReportFromStorage","getSessionLoadedPlaybackReports","loadReports","getLoadedInputAudio","newAudios","loadedItem","newReports","getNormalizedDataAnalyticsQueueAdded","played","allReports","updateReportUrls","getAudioInputItemByPredicateFromState","updateTimers","updateTimer","getPlayedDurationFromReport","stopTimer","getAnalyticsPlayableStopProperties","finishReports","stoppedReports","stopped","getLoadedPlaybackReportFromStorage","playing","intervalId","addTime","startTimer","newTime","playedMs","forceEndReport","updateReport","updateReports","updateEndReason","getLoadedPlaybackReport","getAndDeleteReports","addSessionFinishedReport","removeSessionFinishedReport","kibanaSpecific","maxDataFieldSize","loglevel","MessageBus","globalListeners","inStoreSync","unsubscribeListener","unsubscribeGlobalListener","cancelAll","subscribeOneGeneric","emitAndUnsubscribe","subscribeEveryGeneric","updateReduxFirst","updateActivePageContextTimeoutId","navigations","activePage","setActivePageContext","createNavigationPage","saveStack","createNavigationSection","createNavigationPreview","createNavigationLink","createForwardNavigation","windowTitle","getPageTitle","readStack","resetStack","appName","pageTitle","pageContextDoneTimeout","scrollRestoration","count1","count2","rootIndex","getNavigationRootNextPage","debouncePageScroll","debounceSectionScroll","formatScrollState","scrollStates","states","unsubscribeFn","setStack","albumArtistAlbums","ArtistAlbumsAppearsOn","artistPopularTracks","artistRadioId","artistSimilarArtists","artistSingles","installPWA","settingsPage","layoutPage","layoutPageItem","layoutPageItemResource","liveRadioCategory","mixRadioCategoryMixRadio","mixRadiosMixRadio","myMusicAlbums","myMusicArtists","myMusicPlaylist","myMusicTracks","searchAlbumResults","encodeUrlSearchString","searchArtistResults","searchPlaylistResults","searchTrackResults","userHistory","userHistoryRecommendation","recommendationName","userRecommendationsRecommendation","yourMixes","referenceId","referenceData","unique","newAnalytics","_configuration","_configurationTestMode","isNotificationFeedTestModeEnabled","generel","show_max","playback_minPlayedDuration","update_interval","collections_max","playbacks_max","update_collectionCount","NotificationPeriod","getNotificationsNewestFirst","getNotificationsByPeriod","period","setHours","dayOfWeek","getDay","startOfThisWeek","startOfLastWeek","startOfThisMonth","startOfLastMonth","getTimestamps","New","LastWeek","ThisMonth","LastMonth","allNotifications","thisWeeksNotifications","unseen","getAnalyticsCurrentNotifications","useNotificationsByPeriod","pollNotificationsState","getNotificationFeedConfiguration","statusResult","createEmptyNotificationsModel","fetchPlayableForNotification","withPlayables","markNotificationFeedAsSeen","isNotificationPlayable","isPlayableParentContentType","isLiveRadioParentContentType","getTrackAndParentFromPlayable","getAvailableTracksAndConnectionForQueue","getTracksAndConnectionForQueue","resultTracks","alert","existing","tryGetTrackConnection","getTrackParentPlayModelFromBackend","fetchedPlay","fetched","combineConnections","playModel","getTracksFromTrackParent","updateMixRadioSession","createMixRadioPreviewModelFromPlayModel","queueIntentData2","getAnalyticsQueueIntentPropertiesGroup","resourceModel","resourceContentType","getPlayablesTracks","addCastApiListener","resumeTimeoutCheck","isControllerChromecastFromState","syncCastFromLocalChange","playerSetVolume","playerSetMute","userLoggedIn","userLoggedOut","portal","portalToken","castSendMessage","SessionMessage","Authenticate","framework","CastContext","getInstance","setOptions","receiverApplicationId","autoJoinPolicy","AutoJoinPolicy","TAB_AND_ORIGIN_SCOPED","addCastContextListeners","setPlayerModeLocal","removeCastContextListeners","hasCastSession","addCastSession","stopCastSession","tryOperation","syncResumeFromRemote","OperationSource","setPlayerModeChromecast","resetOperation","resetRemoteCastQueue","onNextAuthenticated","auth","resetLocalCastQueue","removeCastSession","currentAudio","audiosCastIds","inputAudios","getCurrentAudio","sliceIndex","_getLocalCastQueue","updateLocalCastQueue","_queue","setRemoteCastQueue","getLocalCastQueue","getCastSession","endCurrentSession","castSessionStopped","castQueueStop","syncMediaLoadedFromRemote","handleLastInQueueAndStopped","hasCastMediaSession","syncCurrentFromRemote","syncPlayStateFromRemote","castState","getRemoteCastState","CastState","CONNECTED","isLocalCastQueueEmpty","syncNewQueueFromLocal","stopQueueFromLocal","isOperationModifyingQueue","getCurrentAudioInSync","syncPlayStateFromLocal","_syncCastFromLocalChange","inOperation","onNextMediaSessionUpdate","syncResumeSettingsFromRemote","assumeRemoteCastQueueSynched","inSync","currentLocal","jumpTo","getRemoteCastQueue","setRemotePlayPause","castQueueJumpToItem","getCastMediaSession","currentRemote","getCurrentAudioFromRemote","logTitle","getCastPlayer","playerState","PlayerState","IDLE","isCurrentAudioLastInQueue","remoteIds","removeIds","castQueueRemoveItems","newRemoteIds","getQueueItemsFromAudios","reorder","ccIds","id1","id2","castQueueReorderItems","QueueReorderItemsRequest","mediaInfo","MediaInfo","customData","Id","getMediaInfoFromPlayQueueAudio","mime","getMimeTypeFromStreamUrlType","streamType","StreamType","LIVE","IsLiveStream","getLiveRadioPlayableFromAudio","GenericMediaMetadata","Image","getMediaInfoFromLiveRadioAudio","getMediaInfoFromAudio","QueueItem","getQueueItemFromAudio","currentItem","autoPlay","isPlayStatePlayIntent","getCurrentTimeFromAudio","QueueData","startIndex","repeatMode","convertToRepeatMode","getLocalRepeat","LoadRequest","castLoadMedia","syncDuration","durationRemote","durationLocal","seek","SeekRequest","getCurrentTimeFromPosition","resumeState","ResumeState","PLAYBACK_START","PLAYBACK_PAUSE","castQueueSeek","castPlay","castPause","currentSynced","tryGetCastMediaSession","stateLocal","stateRemote","convertToPlayState","playLocal","playRemote","playSame","positionLocal","tryGetAudioPosition","positionRemote","getPositionFromCurrentTime","getEstimatedTime","posAlmostEqual","isPlayPausePositionAlmostEqual","allowPlayChange","syncVolumeFromRemote","volumeRemote","syncIsMutedFromRemote","mutedRemote","isMuted","repeatRemote","convertToRepeatStatus","repeatLocal","castQueueSetRepeatMode","syncRepeatFromLocal","requestCastSession","setCastAvailable","onCastStateChanged","sessionState","SessionState","NO_SESSION","SESSION_STARTING","SESSION_STARTED","castSessionStarted","SESSION_START_FAILED","sessionStartFailed","SESSION_ENDING","SESSION_ENDED","SESSION_RESUMED","castSessionResumed","onUpdateResolvers","isAlive","resolvers","invoke","castGetStatus","isConnected","waitOne","castSetIsMutedTimeStamp","castSetVolumeTimeStamp","onAuthResolvers","authenticate","namespace","addCastMediaSessionListeners","mediaSession","requestHelper","GetStatusRequest","getStatus","PauseRequest","PlayRequest","queueInsertItems","queueJumpToItem","castQueueRemoveItem","queueRemoveItem","itemIds","queueReorderItems","queueSetRepeatMode","StopRequest","playerController","getCastPlayerController","muteOrUnmute","setVolumeLevel","loadMedia","getCastState","getCurrentRemoteCastId","loadingItemId","currentItemId","currentRemoteId","getPausePosition","idsLocal","idsRemote","localId","BUFFERING","PAUSED","PLAYING","RepeatMode","ALL","OFF","SINGLE","ALL_AND_SHUFFLE","castSetIsMuted","throtle","castSetVolume","onCastApiAvailable","hasCastContext","CastContextEventType","CAST_STATE_CHANGED","SESSION_STATE_CHANGED","onSessionStateChange","addPlayerControllerListeners","addUpdateListener","onMediaSessionUpdate","_hasSession","tryGetCastSession","getCurrentSession","getMediaSession","addMessageListener","onCustomCastMessageAuthenticate","SessionEventType","MEDIA_SESSION","onCastMediaSession","addSessionListeners","removeMessageListener","removePlayerControllerListeners","RemotePlayerEventType","CURRENT_TIME_CHANGED","currentTimeChanged","IS_CONNECTED_CHANGED","onIsConnectedChanged","IS_MEDIA_LOADED_CHANGED","isMediaLoadedChanged","IS_MUTED_CHANGED","onIsMutedChanged","PLAYER_STATE_CHANGED","onPlayerStateChanged","VOLUME_LEVEL_CHANGED","onVolumeLevelChanged","RemotePlayer","RemotePlayerController","tryUnmute","playerPlayNext","isInputPlayQueueFromState","playNext","PlayNextSource","UserClick","playerRewind","rewind","playerRewindOrPlayPrevious","playPause","playerSeek","playPrevious","isControllerLocalFromState","ShuffleActive","Stop40","Play40","getLiveRadioPlayIcon","Pause40","getPlayQueuePlayIcon","Stop","getLiveRadioPlayIconMobileMini","getPlayQueuePlayIconMobileMini","VolumeMute","VolumeDown","RepeatTrack","RepeatActive","Repeat","_simulateFailGetTrackStreamUrls","_simulateInvalidTrackStreamUrls","simulateFailGetTrackStreamUrls","simulateInvalidTrackStreamUrls","getInvalidUrl","playerDebug","clearCachePool","_clearCachePool","invalidateQueueTrackStreamUrls","_invalidateQueueTrackStreamUrls","simulate","isAudioLoaded","playStateNow","playStateBefore","getPlayPosition","getPlayPositionFromPausePosition","getPausePositonFromPlayPosition","getPlayPausePositionDiff","aPos","bPos","updateAudiosFromPlayQueue","playChangeFromOutput","updateLastPosition","updateAudioEndReason","updateAudiosEndReason","setAndPlay","onControllerOrOutputChange","onAudioError","trackUrlCacheError","trackUrlFetchError","updateAudiosFromLiveRadio","queueAddData","loginChange","updateLiveRadioTracksSync","intervalRef","isInputLiveRadioFromState","intentData","createNormalizedData","createQueueAddedAnalyticsData","getAnanlytics","radioPlay","radioPlayablePlay","createLiveRadioPlayablePlay","PriorityQueueActionModal","priorityQueue","priorityQueueActionClear","noActionTaken","priorityQueueActionKeep","firstTrack","priorityQueueActionKeepNoActionTaken","NextTrackTitle","NextTrackArtist","ExtraCounts","singletrack","PriorityQueueWarningSubTitleSingleTrack","multipetrack","PriorityQueueWarningSubTitleMultiple","replaceAll","PriorityQueueWarningTitle","addToQueue","isPlayQueueEmpty","shuffleOn","newLane","newPlayQueue","addTracksToQueueTracks","addPlayablesToQueue","newQueue","updatePlayQueue","tryStartPlayCurrentLane","SongEnded","removePriorityLaneFromQueue","clearPriorityQueue","clearQueue","keepQueueLane","moveTrack","existingTrackId","newTrackId","stateTrackId","newEndlessPlay","newTracks","getCurrentLaneIndexFromState","getMixRadioQueueTracks","queueTracks","oldIndex","indexOfFlowLaneItem","updatedTrack","getTrackIndexInQueueLane","updateQueueLanes","playFromAudioChange","queueTrackIndex","audioTitle","playFromPlayQueueAudioChange","currentLaneIndex","tryStopPlayAll","playNextTrack","continuePlay","oldCurrentLane","newCurrentLane","getCurrentLaneQueueId","startPlay","playNextTrackMixRadioMode","playNextTrackDefaultMode","newCurrentIndex","movePreviewLaneToFlowLane","playQueuePlayTrack","playQueueTrack","isAudioItemPlaying","removeItemFromQueue","showPriorityQueuePopup","showPriorityQueueActionModal","playerPlay","_replaceQueueAndLoadTrack","emptyPriorityLane","isPriorityQueueWarningOn","readyToPlay","getClearedQueue","firePlay","queueAddedData","replaceQueue_addPlayableAndTracks","analyticsQueueAddedReferenceId","updateSessionAndGetTracks","currentLaneOriginalIndex","getNewCurrentLaneIndex","memoryLaneTracks","currentLaneTracks","flowLaneTracks","shufflePlayQueue","getAudioByInputItemIdFromState","playChange","rewindPlay","repeatAll","unshufflePlayQueue","oldQueue","myRecentTrackIds","memoryLane","priorityLane","flowLane","shuffledQueue","inputQueue","recentTracksMap","getWeight","recentPosition","randomWeight","relativeWeight","lerp","weightedShuffle","playIntent","skipCountTotal","tryPlayNext","toggleDesktopPlayQueue","blockEndlessPlayUpdate","resolveReferencedTrackParents","TrackParents","newTrackParents","referenceIds","collection","referenceIdFn","newCollection","isEqualByPredicate","resolveReferencedCollection","getCurrentLaneIndex","isMixRadioSessionActive","getAudioByInputItemId","getQueueTrackFromAudio","setCurrentLane","_previousLaneMap","findLastIndex","newCurrent","getQueueLanePriority","queueLane","isModeMixRadio","currentShuffle","payloadShuffle","updateOriginIndex","insertedAtIndex","amountOfTracksAdded","updateLane","originalPlayQueue","prioritylane","currentlane","shuffledFlowlane","tempItem","originalCurrentItem","shuffleByFisherYates","shouldBeShuffled","sortByOriginalIndex","withoutOriginIndex","clearQueueTracksOriginIndex","getQueueLaneTrackParentFromState","newQueueTracks","createOriginalIndex","withNumber","getQueueTracksForChromecast","dropTrack","replaceQueueAndPlayTrack","addEndlessPlayToQueue","updateEndlessPlay","moveEndlessPlayToFlowLane","addMixRadioTracksToQueue","skipOnFail","audioEnded","isAudioLoadChange","oldAudios","oldAudio","newAudio","shouldTryReplayAudio","replayAudio","stopPlayUserTrace","inputType","getAnalyticsPlayableErrorProperties","sendErrorEvent","endAudioWithError","timeoutRef","getAudioSendPlaybackReport","getAudioInputReportId","updateAudios","updateAudiosPlaybackReport","isChromecast","updatePlayState","stopAudios","tryAddLoadDataToAudio","getPlayPausePosition","sourceId","outputPlayState","outputPosition","currentPlayState","currentPosition","newPlayState","currentPlay","outputPlay","getNewPlayState","newPosition","playStateChange","isPlayPausePositionEqual","getNewPosition","getAnalyticsPlayableLoadProperties","tryAddLoadDataToAudios","getPlayerOutputTypeFromState","createAudioFromLiveRadio","getAudioId","updateAudio","createNewAudioFromQueueTrack","createOrUpdateAudioFromQueueTrack","getAudioInputItemByPredicate","getAudioByIdFromState","getAudioByChromecastIdFromState","getCurrentAudioIndex","getCurrentInputAudioNearEndFromState","nearEnd","isInputPlayQueue","getAudioItemPositionSeconds","outputStr","updateFlow","isOutputBrowserFromState","updateUrl","setMuted","initElementPool","getPreloadConfigFromIndex","itemPreloadSetting","browserAudio","disposed","loadNow","disposeAudioElement","preload","createBrowserAudio","createAudioElement","audioCacheId","getCacheId","canPlayThrough","hlsRetryLock","intendedPlayState","isMediaSet","playTrace","mediaChangeLock","hlsPreload","urlLock","canPlayThroughFn","durationChangeFn","endedFn","errorFn","audioElementError","pauseFn","audioMediaChange","MediaChangeEvent","playingFn","progressFn","updatePreloadState","seekedFn","Seeked","seekingFn","Seeking","waitingFn","Waiting","addEventListeners","getElementFromPool","Audio","linearToLogarithmicVolume","addElementToPool","elements","invalid","getAudioContextAction","Prevented","sign","handleSongEndedAtUnexpectedDuration","mediaChangeEvent","getBrowserAudios","setPlayState","inSkipDebounce","wasPlaying","playNotAllowedError","setPosition","disposeAudioAndResetTrackStreamUrl","deleteTrackCache","removeBrowserAudio","cacheError","fetchError","browserAudios","getBrowserAudio","disposeBrowserAudio","browserAudiosSort","newBrowserAudios","shouldLoad","updateBrowserAudio","updateBrowserAudios","updateSkipDebounce","getBrowserAudiosLog","getBrowserAudioLog","updateLoadNow","updateMedia","loadUrl","updateBrowserAudioFlow","PartialDone","Done","isPreviousDone","createHlsElement","_updatePlayState","setPlayStateAndPosition","updateTryPreload","preloadHls","calculatePreloadState","loadedMin","getPreloadDurationSeconds","smallLog","bigLog","loadedPercent","loadedDone","getLoadedDuration","cursor","getPosition","position1","position2","getHlsPreloadState","getPreloadStateFromAudioElement","getPreloadState","preloadDone","saveUrl","hlsCaller","logData","logNetworkDetails","respomse","hlsElementError","isCachePoolEnabled","getUrlKey","getCachedBeginKey","getCachedEndKey","saveToCache","existInCache","saveJsonToCache","readJsonFromCache","readFromCache","deleteFromCache","deleteEnd","saveBegin","checkKeys","checks","checkDataValid","validDuration","deleteUrl","deleteBegin","tryParseAndFetchNextItem","fullyLoaded","manifest","setTrackCacheBegin","tryParseIndex","tryFetchNextItem","indexUrl","setTrackFullyCached","encryption","playCursor","getNextItem","fetchNextItem","addHeaders","NetworkError","onlyForCache","parseIndex","isPreloadingEnabled","getLoadedHlsDuration","serviceWorkerRegistered","getHlsBaseUrl","encryptionUrl","durationStr","audioPlayState","browserAudiosLog","lastPlayingId","lastPlayingChange","playingId","updateDebounce","setDebounce","fetchTrackUrl","invalidUrl","simulateInvalidUrl","Kbps_320","_loadUrl","LoadUrl","getValidTrackUrl","validTrackUrlResult","fetchTrackUrlResults","resultUrl","dispathUrl","trackStreamError","oldUrl","newUrl","replaceBrowserAudio","updateUrlInCache","isOutputChromecast","isOutputChromecastFromState","isOutputBrowser","updateMediaSession","currentPrimary","currentSecondary","primary","getCurrentAudioPrimaryResourceFromState","secondary","getCurrentAudioSecondaryResourceFromState","getMediaInfo","artwork","forceAdd","getArtwork","MediaMetadata","setActionHandler","backendSyncIntervalMs","timeOutAudioId","syncRecentTracks","tryAddRecentlyPlayedTrack","updateHeartbeat","getPlayingRadio","sendHeartbeat","sendHeartbeatAndFetchInterval","lastReport","v4","scheduleUpdate","Live","fetchInterval","heartBeat","playbackSessionId","streamingUrl","intervalSec","_addTracksToPlaylist","tracksIds","duplicatesHandling","isFullyContained","getUnique","showAddDuplicatesModal","handling","notifyOperationCancelled","notifyCollectionAddedAndToast","undoCallback","undo","playlistPreview","playlistTrackCount","indx","Remove","CheckDuplicates","getCachedUserPlaylistPreview","recommendationID","sortedTracks","onUndo","undoneResult","moveToTopOfCacheAndOptionallyUpdate","previews","localeCompare","currentProfileChanged","promptEvent","promptEventOpen","isStandaloneNavigator","standalone","isStandaloneMedia","_enablePWA","appSettingsShared","EnablePWA","InstallAvailable","prompt","userChoice","accepted","outcome","Environment","WebMaintenanceEnabled","fbRemoteConfig","fb_GetRemoteConfig","getRemoteConfig","getFbRemoteConfig","minimumFetchIntervalMillis","fetchAndActivate","maintenanceConfig","fbRemoteconfig","getEmptyMaintenanceConfig","fb_GetValue","domainStr","asString","getEnvironment","MaintenanceEnabledKey","getAppMaintenanceEnvKey","asBoolean","getMaintenanceConfig","setMaintenanceConfig","fetchGeneralConfigAndRun","getMixedContentSubtitleText","getRecommendationSubtitleText","getDurationShortTimeSpanText","getDurationLongTimeSpanText","getTimeAgoTimeSpanText","getNotInSubscriptionText","getTrackCountText","getArtistRadioDescriptionText","getArtistRadioSubtitle","getAlbumLink","getAlbumArtistAlbumsLink","getMoreFromTitle","getArtistLink","getArtistAndFeaturedArtistsLinks","fa","getArtistTracksLink","getArtistAlbumsLink","getArtistAlbumsAppearsOnLink","getArtistSimilarArtistsLink","getArtistSinglesLink","getArtistRadioLink","getArtistRadioTitle","getChartLink","getLiveRadioCategoryLink","getLiveRadioPlayableLink","getLiveRadioLink","getMixRadiosLink","getMixRadioLink","getMixRadioCategoryLink","getLayoutPageLink","getFrontPageLink","getRadioPageLink","getSettingsPageLink","getProfilesPageLink","getPlaylistLink","getPlaylistCategoryLink","getQueueTrackPlayableLink","getSearchTrackLink","getTrackPlayableLink","getLiveRadioTrackLink","getMyMusicAlbumsLink","getMyMusicArtistsLink","getMyMusicPlaylistsLink","getMyMusicTracksLink","getLayoutPageItemLink","getMixedContentLink","getMixedContentTrackLink","getRecommendationLink","getRecommendationsLink","getYourHistoryLink","getSearchLink","getSearchAlbumResultsLink","getSearchArtistResultsLink","getSearchPlaylistResultsLink","getSearchTrackResultsLink","getTrackRadioLink","getTrackRadioTitle","NavBar","sectionType","linkContext","productPageType","followers","year","toLocaleStringUsingLocalization","isTracksEmptyOrNotAvailableInSubscription","getComparableTrackId","createMixRadioPreviewModelFromMixedContent","createLiveRadioPreviewModelFromMixedContent","normalizePlayable","isTrackParent","isLiveRadioParent","createLiveRadioPlayablePreview","groupText","Songs","Home","isRounded","getCoverSrc","_hackNormalizedIndex","setSelection","_item","_hackNormalizeItem","prevState","fromItem","toItem","rangeItems","selectRange","toggleSelection","createMultiselectionTracksPlayModel","pageLoadMs","serviceWorker","appReloadServiceConfig","enableAutoReload","PostMessageName","SwVersion","newVersion","reloadTimeoutMs","currentVersion","reloadTimeout","reloadTimeoutBegin","enableInstallationCacheFirst","setReloadTimeout","startReloadTimeout","reloadIfVersionChanged","reloadDelayMs","registration","pollUpdateEnabled","pollUpdateIntervalMs","getRegistrations","unregister","listenToAppReloadMessages","pollForServiceWorkerUpdates","getShareOrigin","getShareUrlWithFallback","shareUrl","getShareUrl","KeyCode","keyCodes","handleKeyPress","Space","KeyQ","KeyM","keyCode","albumSortOptions","albumArtistAlbumSortOptions","albumSortOptionsFallback","playlistTracksSortOptions","artistAllTracksSortOptions","artistAppearsOnSortOptions","sortAlbumByOption","compareString","compareDate","mixOptions","sortArrayByOptions","Newest","ArtistTitle","TrackTitle","LatestAddedDesc","albumItems","waitTimeoutId","startTimeoutId","tryWait","hasQuery","userDebug","simulateInvalidAccessToken","invalidAccessToken","simulateInvalidRefreshAndAccessToken","invalidRefreshToken","simulateRefreshBlockAndInvalidAccessToken","setTokenRefreshLockTrueForDebug","simulateInvalidAccessTokenOnPageload","simulateInvalidRefreshAndAccessTokenOnPageload","simulateTemporaryTokenRefreshError","temporary","TokenStatusCode","entryGuardForRefreshToken","getPermissionsFromToken","perm","getUrlParameter","getCurrentProfileId","reestablishSessionOnPageload","userResult","deleteCookie","setUserStateIfChanged","ensureOwnTokenSession","forceValidate","getRefreshTokenResultFromOtherSession","getRefreshTokenResultFromBackend","handleTokenResult","handleOK","oldTokens","tokenResult","oldProfileId","validateProfile","FatalError","NoPlayRights","access_token","currentProfile","logoutNow","oldAccessToken","newRefreshToken","newAccessToken","refresh_token","setTokenRefreshLock","fetchRefreshedTokenFromBackend","getSimulateTemporaryTokenRefreshError","removeTokens","oldId","oldState","waitForState","hasUserId","activeProfile","setupUserChangedEvent","loginErrorEode","initLoginFromQueryString","access","initLoginFromSharedLocalStorage","getSharedTokens","removeSharedTokens","lastLoginState","lastUserId","fraction","currentValues","defaultValues","isCurrentObject","isDefaultObject","TooShort","appVersionString","appVersionNumber","buildVersion","regs","versions","build_","readAppVersion","padEnd","maxCacheEntriesDefault","requestTime","cacheNames","rnds8","rng","byteToHex","substr","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","tl","tmh","hashfunc","generateUUID","stringToBytes","DNS","getOutputLength","inputLength8","safeAdd","lsw","md5cmn","cnt","md5ff","md5gg","md5hh","md5ii","v35","length32","hexTab","hex","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","bytesToWords","rnds","ROTL","_t","_t2","serializeFetchParameter","__DEV__","selectURI","fallbackURI","readerIterator","canUse","asyncIterator","responseIterator","isReadableStream","isStreamableBlob","isBlob","pipe","isNodeReadableStream","cleanup","onData","shiftedArr","pair","onEnd","nodeStreamIterator","throwServerError","PROTOCOL_ERRORS_SYMBOL","isApolloError","ApolloError","_super","protocolErrors","clientErrors","__spreadArray","__extends","parseHeaders","headerText","headersInit","name_1","parseJsonBody","getResult","parseAndCheckHttpResponse","checkFetcher","fetcher","fallbackHttpConfig","http","includeQuery","includeExtensions","preserveHeaderCase","accept","defaultPrinter","printer","selectHttpOptionsAndBody","fallbackConfig","configs","selectHttpOptionsAndBodyInternal","normalizedHeaders_1","headerData","originalName","normalizedHeaders","removeDuplicateHeaders","createSignalIfSupported","rewriteURIForGET","chosenURI","queryParams","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","queryParamsPrefix","newURI","fromError","errorValue","backupFetch","linkOptions","preferredFetch","useGETForQueries","includeUnusedVariables","linkConfig","clientAwarenessHeaders","clientAwareness","contextHeaders","contextConfig","unusedNames_1","_controller","isSubscription","hasDefer","acceptHeader","ctype","boundaryVal","boundary","searchFrom","bi","contentType_1","hasNext","readMultipartBody","readJsonBody","fnToStr","previousComparisons","aTag","previouslyCompared","aKeys","definedKeys","bKeys","keyCount","aIterator","isMap","aKey","aValue","aCode","suffix","nativeCodeSuffix","isDefinedKey","bSet","defaultMakeData","Trie","weakness","makeData","lookupArray","getChildTrie","peek","peekArray","isObjRef","weak","strong","stringifyCanon","stringifyCache","ObjectCanon","known","pool","passes","keysByJSON","admit","isKnown","shallowCopy","proto_1","array_1","sortedKeys","firstValueIndex_1","obj_1","canonicalStringify","resetCanonicalStringify","canonical","NetworkStatus","isNetworkRequestInFlight","networkStatus","ObservableQuery","queryManager","queryInfo","subObserver","_subscription","_observer","defaultSubscriptionObserverErrorCallback","observers","reobserve","tearDownQuery","subscriptions","isTornDown","defaultFetchPolicy","initialFetchPolicy","queryId","generateQueryId","opDef","queryName","removeQuery","getCurrentResult","saveAsLastResult","lastResult","getLastResult","ready","hasForcedResolvers","diff","getDiff","returnPartialData","partialRefetch","logMissingFieldErrors","updateLastResult","isDifferentFromLastResult","newResult","getLast","variablesMustMatch","getLastError","resetLastResults","resetQueryStoreErrors","resetErrors","reobserveOptions","pollInterval","queryDef","vars","resetLastWrite","fetchMore","fetchMoreOptions","combinedOptions","qid","originalNetworkStatus","notifyOnNetworkStatusChange","updatedQuerySet","fetchQuery","fetchMoreResult","updateQuery","optimistic","writeQuery","onWatchUpdated","watch","reobserveCacheFirst","subscribeToMore","startGraphQLSubscription","subscriptionData","newOptions","setVariables","mapFn","broadcastQueries","startPolling","updatePolling","stopPolling","applyNextFetchPolicy","nextFetchPolicy","newNetworkStatus","setObservableQuery","ssrMode","pollingInfo","maybeFetch","assumeImmutableResults","cloneDeep","reobserveAsConcast","useDisposableConcast","oldVariables","oldFetchPolicy","mergedOptions","compact","concast","fromLink","reportResult","reportError","removeObserver","addObserver","lastError","errorResult","hasObservers","stopQuery","obsQuery","isSelectionNode","FIELD","FRAGMENT_SPREAD","INLINE_FRAGMENT","currentContext","MISSING_VALUE","idCounter","maybe","ignored","globalKey","globalHost","Slot","hasValue","slots","withValue","saved","noContext","defaultDispose","Cache","newest","oldest","older","newer","clean","parentEntrySlot","maybeUnsubscribe","entryOrDep","emptySetPool","POOL_TARGET_SIZE","assert","optionalMessage","valueGet","Entry","childValues","dirtyChildren","dirty","recomputing","mightBeDirty","rememberParent","recompute","forgetChildren","recomputeNewValue","setDirty","maybeSubscribe","reportClean","setClean","reallyRecompute","reportDirty","eachParent","forgetChild","forget","dependOn","dep","forgetDeps","reportDirtyChild","reportCleanChild","parentCount","parentWasClean","childValue","removeDirtyChild","dc","EntryMethods","depsByKey","depend","dep_1","entryMethodName","m_1","makeDefaultMakeCacheKeyFunction","keyTrie","keyArgs","makeCacheKey","dirtyKey","peekKey","forgetKey","cacheSlot","cacheInfoMap","getCacheInfo","forgetCache","rv","makeVar","broadcastWatches","broadcast","oldListeners","attach","onNextChange","attachCache","LocalState","fragmentMatcher","selectionsToResolveCache","addResolvers","setFragmentMatcher","resolverGroup","mergeDeep","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","resolveDocument","localResult","getFragmentMatcher","clientQuery","serverQuery","prepareContext","getCacheKey","addExportedVariables","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","rootValue","mainDefinition","fragmentMap","selectionsToResolve","definitionOperation","defaultOperationType","execContext","collectSelectionsToResolve","resolveSelectionSet","isClientFieldDescendant","resultsToMerge","selection","resolveField","fieldResult","fragmentResult","fieldName","aliasedFieldName","aliasUsed","defaultResult","resultPromise","resolverType","resolverMap","directive","isClientField","resolveSubSelectedArray","isSingleASTNode","collectByDefinition","definitionNode","matches_1","___","spread","fragmentSelections","destructiveMethodCounts","wrapDestructiveCacheMethod","cancelNotifyTimeout","QueryInfo","lastRequestId","observableQuery","lastDiff","getDiffOptions","updateWatch","oq","updateLastDiff","canonizeResults","setDiff","oldDiff","notifyTimeout","oqListener","fromOptimisticTransaction","shouldNotify","watchOptions","watcher","lastWatch","lastWrite","shouldWrite","dmCount","markResult","cacheWriteBehavior","merger","incremental","merge","shouldWriteResult","performTransaction","overwrite","diffOptions","markReady","markError","writeWithErrors","QueryManager","queryDeduplication","onBroadcast","localState","fetchCancelFns","transformCache","queryIdCounter","requestIdCounter","mutationIdCounter","inFlightLinkObservables","mutationStore","_info","stopQueryNoBroadcast","cancelPendingFetches","optimisticResponse","updateQueries","refetchQueries","awaitRefetchQueries","updateWithProxyFn","onQueryUpdated","keepRootFields","mutationId","hasClientExports","mutationStoreValue","generateMutationId","transformForLink","getVariables","markMutationOptimistic","asyncMap","getObservableFromLink","storeResult","markMutationResult","removeOptimistic","cacheWrites","skipCache","asQuery","updateQueries_1","updater","currentQueryResult","nextQueryResult","mutationResult","queryVariables","results_1","updateCache","write","isFinalResult","DELETE","include","recordOptimisticTransaction","fetchQueryObservable","getQueryStore","transformed","transformDocument","noConnection","cacheEntry_1","defaultVars","def","generateRequestId","stopQueryInStore","stopQueryInStoreNoBroadcast","clearStore","discardWatches","getObservableQueries","queryNamesAndDocs","legacyQueryOptions","desc","makeUniqueId","getQuery","included","nameOrDoc","reFetchObservableQueries","includeStandby","observableQueryPromises","makeObservable","hasErrors","hasProtocolErrors","graphQLResultHasProtocolErrors","observablePromise_1","getLocalState","deduplication","inFlightLinkObservables_1","forceFetch","byVariables_1","varJson_1","Concast","beforeNext","getResultsFromLink","requestId","linkDocument","aqr","fetchConcastWithInfo","containsDataFromLink","fromVariables","sourcesWithInfo","fetchQueryByPolicy","cleanupCancelFn","includedQueriesById","refetchWritePolicy","oldNetworkStatus","readCache","resultsFromCache","fromData","resultsFromLink","newContext","hasSuggestedDevtools","resetStoreCallbacks","clearStoreCallbacks","ssrForceFetchDelay","connectToDevTools","__APOLLO_CLIENT__","typeDefs","clientAwarenessName","clientAwarenessVersion","disableNetworkFetches","resetStore","__APOLLO_DEVTOOLS_GLOBAL_HOOK__","nav","devToolsHookCb","dataWithOptimisticResults","extract","mergeOptions","readQuery","readFragment","writeFragment","__actionHookForDevTools","__requestRaw","onResetStore","onClearStore","serializedState","setLocalStateFragmentMatcher","setLink","newLink","ApolloCache","getFragmentDoc","updateResult","optimisticId","gc","fragmentName","updateFragment","MissingFieldError","hasOwn","isNullish","defaultDataIdFromObject","keyObject","dataIdFromObject","addTypename","resultCaching","shouldCanonizeResults","TypeOrFieldNameRegExp","fieldNameFromStoreName","storeFieldName","selectionSetMatchesResult","storeValueIsStoreObject","extractFragmentContext","lookupFragment","delModifier","INVALIDATE","EntityStore","policies","rootIds","refs","getFieldValue","objectOrReference","maybeDeepFreeze","__ref","canRead","objOrRef","toReference","objOrIdOrRef","mergeIntoStore","toObject","storeObject","rootTypenamesById","Layer","dependOnExistence","incoming","storeObjectReconciler","caching","fieldsToDirty_1","__exists","hasKeyArgs","changedFields_1","needToMerge_1","allDeleted_1","sharedDetails_1","isReference","readField","fieldNameOrOptions","fieldValue","storage","getStorage","typename","getStoreFieldName","evict","evicted","extraRootIds","getRootIdSet","__META","rest_1","retain","findChildRefIds","root_1","found_1","workSet_1","keyMaker","CacheGroup","resetCaching","makeDepKey","maybeDependOnExistenceOfEntity","entityId","supportsResultCaching","Root","seed","stump","Stump","storageTrie","addLayer","layerId","removeLayer","ownStoreObject","parentStoreObject","fromParent","existingObject","incomingObject","existingValue","incomingValue","execSelectionSetKeyArgs","StoreReader","knownResults","canon","executeSelectionSet","peekArgs","enclosingRef","execSelectionSetImpl","resultCacheMaxSize","varString","executeSubSelectedArray","execSubSelectedArrayImpl","resetCanon","diffQueryAgainstStore","rootRef","execResult","firstMissing","isFresh","objectsToMerge","missingMerger","handleMissing","resultName","rootIdsByTypename","workSet","fragmentMatches","finalResult","childResult","getTypenameFromStoreObject","assertSelectionSetForIdValue","specifierInfoCache","lookupSpecifierInfo","spec","cacheKey","keyFieldsFnFromSpecifier","specifier","keyFieldsFn","collectSpecifierPaths","schemaKeyPath","extracted","extractKeyPath","extractKey","keyArgsFnFromSpecifier","keyArgsFn","collected","keyPath","firstKey","firstChar","varKeyPath","directiveName_1","directiveArgs","extractor","getSpecifierPaths","toMerge","paths","paths_1","currentPath_1","argsFromFieldSpecifier","setStringify","nullKeyFieldsFn","simpleKeyArgsFn","_args","mergeTrueFn","mergeObjects","mergeFalseFn","Policies","typePolicies","toBeAdded","supertypeMap","fuzzySubtypes","usingPossibleTypes","setRootTypename","possibleTypes","addPossibleTypes","addTypePolicies","partialContext","ROOT_QUERY","normalizeReadFieldOptions","policy","getTypePolicy","keyFn","specifierOrId","queryType","mutationType","subscriptionType","updateTypePolicy","keyFields","setMerge","getFieldPolicy","which","supertype","getSupertypeSet","subtype","policy_1","supertypes","inbox","createIfMissing","fieldPolicies","supertypeSet","typenameSupertypeSet","workQueue_1","maybeEnqueue_1","needToCheckFuzzySubtypes","checkingFuzzySubtypes","regExp","fuzzyString","fieldSpec","specifierOrString","readOptions","makeFieldFunctionOptions","getReadFunction","getMergeFunction","parentTypename","childTypename","runMergeFunction","makeMergeObjectsFunction","readFieldArgs","argc","stringifyForDisplay","eType","iType","getContextFlavor","clientOnly","deferred","flavored","flavors","StoreWriter","writeToStore","operationDefinition","written","incomingById","processSelectionSet","mergeTree","fieldNodeSet","entityRef","applied","applyMerges","fieldsWithSelectionSets_1","hasSelectionSet_1","childTree","hasMergeFunction_1","existingRef","incomingObj","getChild","typeDotName","childTypenames","warnAboutDataLoss","result_1","flattenFields","resultFieldKey","getChildMergeTree","processFieldValue","maybeRecycleChildMergeTree","dataRef","previous_1","mergeMergeTrees","mergeTreeIsEmpty","fieldMap","limitingTrie","flatten","inheritedContext","visitedNode","visited","dir","if","getStorageArgs","e_1","i_1","getValue_1","eVal","iVal","aVal","emptyMergeTreePool","needToMergeMaps","remainingRightKeys_1","leftTree","watches","typenameDocumentCache","txCount","normalizeConfig","rootStore","optimisticData","resetResultCache","resetResultIdentities","previousReader","storeReader","storeWriter","maybeBroadcastWatch","broadcastWatch","recallCache","immediate","idToRemove","newOptimisticData","perform","alreadyDirty","toPromise","completed","LineRegExp","getLocation","lastLineStart","matchAll","printLocation","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","GraphQLError","rawArgs","_this$nodes","_nodeLocations$","nodes","firstArg","toNormalizedOptions","undefinedIfEmpty","nodeLocations","loc","originalExtensions","captureStackTrace","formattedError","syntaxError","DirectiveLocation","TokenKind","Lexer","startOfFileToken","SOF","lastToken","lineStart","advance","lookahead","EOF","nextToken","readNextToken","COMMENT","isUnicodeScalarValue","isSupplementaryCodePoint","isLeadingSurrogate","isTrailingSurrogate","printCodePointAt","lexer","fromCodePoint","createToken","bodyLength","readComment","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","readBlockString","readString","readNumber","readName","firstCode","isFloat","readDigits","FLOAT","INT","chunkStart","escape","readEscapedUnicodeVariableWidth","readEscapedUnicodeFixedWidth","readEscapedCharacter","point","readHexDigit","read16BitHexCode","trailingCode","currentLine","blockLines","BLOCK_STRING","Parser","sourceObj","_lexer","_tokenCounter","parseName","expectToken","parseDocument","DOCUMENT","many","parseDefinition","parseOperationDefinition","hasDescription","peekDescription","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseFragmentDefinition","parseTypeSystemExtension","unexpected","QUERY","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","MUTATION","SUBSCRIPTION","optionalMany","parseVariableDefinition","VARIABLE_DEFINITION","parseVariable","parseTypeReference","expectOptionalToken","parseConstValueLiteral","parseConstDirectives","VARIABLE","SELECTION_SET","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","ARGUMENT","parseValueLiteral","hasTypeCondition","expectOptionalKeyword","parseFragmentName","parseNamedType","expectKeyword","allowLegacyFragmentVariables","FRAGMENT_DEFINITION","parseList","parseObject","advanceLexer","parseStringLiteral","NULL","ENUM","varName","LIST","parseObjectField","OBJECT_FIELD","parseDirective","DIRECTIVE","innerType","LIST_TYPE","NON_NULL_TYPE","NAMED_TYPE","parseDescription","parseOperationTypeDefinition","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","parseImplementsInterfaces","parseFieldsDefinition","OBJECT_TYPE_DEFINITION","delimitedMany","parseFieldDefinition","parseArgumentDefs","FIELD_DEFINITION","parseInputValueDef","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","parseUnionMemberTypes","UNION_TYPE_DEFINITION","parseEnumValuesDefinition","ENUM_TYPE_DEFINITION","parseEnumValueDefinition","parseEnumValueName","ENUM_VALUE_DEFINITION","getTokenDesc","parseInputFieldsDefinition","INPUT_OBJECT_TYPE_DEFINITION","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","parseDirectiveLocations","DIRECTIVE_DEFINITION","parseDirectiveLocation","noLocation","getTokenKindDesc","atToken","openKind","parseFn","closeKind","delimiterKind","maxTokens","isPunctuatorTokenKind","docCache","fragmentSourceMap","printFragmentWarnings","experimentalFragmentVariables","stripLoc","seenKeys","fragmentDefinition","sourceKey","sourceKeySet","processFragments","literals","resetCaches","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","gql_1","contextKey","getApolloContext","ApolloContext","ApolloConsumer","useApolloClient","override","didWarnUncachedGetSnapshot","getSnapshot","getServerSnapshot","inst","checkIfSnapshotChanged","Query","Subscription","cached","verifyDocumentType","requiredOperationName","usedOperationName","useInternalState","stateRef","InternalState","setTick","ssrDisabledResult","skipStandbyResult","toQueryResultCache","previousResult","previousData","executeQuery","watchQueryOptions","createWatchQueryOptions","queryHookOptions","getObsQueryOptions","toQueryResult","renderPromises","useOptions","useObservableQuery","onNext","unsafeHandlePartialRefetch","currentWatchQueryOptions","onCompleted","ssr","globalDefaults","otherOptions","getDefaultFetchPolicy","getSSRObservable","obsQueryFields","ssrAllowed","registerSSRObservable","addObservableQueryPromise","nextResult","handleErrorOrCompleted","toApolloError","resultWithoutPartial","called","EAGER_METHODS","useLazyQuery","execOptionsRef","optionsRef","queryRef","useQueryResult","eagerMethods","_loop_1","EAGER_METHODS_1","executeOptions","useMutation","isMounted","baseOptions","ignoreResults","result_2","useSubscription","hasIssuedDeprecationWarningRef","onSubscriptionData","onSubscriptionComplete","setObservable","canResetObservableRef","shouldResubscribe","subscriptionStopped","fetchResult","useReactiveVar","probablySameValue","useFragment_experimental","latestDiff","latestDiffToResult","diffToResult","passthrough","toLink","isTerminating","LinkError","leftLink","rightLink","starting","createOperation","transformedOperation","transformOperation","OPERATION_FIELDS","validateOperation","second","firstLink","nextLink","setOnError","errorHandler","retriedSub","retriedResult","ErrorLink","PersistedQueryLink","processErrors","byMessage","byCode","persistedQueryNotSupported","PersistedQueryNotSupported","PERSISTED_QUERY_NOT_SUPPORTED","persistedQueryNotFound","PersistedQueryNotFound","PERSISTED_QUERY_NOT_FOUND","meta","useGETForHashedQueries","hashesByQuery","generateHash","supportsPersistedQueries","getHashPromise","originalFetchOptions","retried","setFetchOptions","maybeRetry","responseErrors","networkErrors","disablePayload","operationDefinesMutation","getQueryHash","sha256Hash","persistedQuery","paramsOrClient","subscriptionClient","isNonEmptyArray","canUseWeakMap","canUseWeakSet","canUseSymbol","canUseAsyncIteratorSymbol","canUseDOM","usingJSDOM","canUseLayoutEffect","cloneDeepHelper","copy_1","copy_2","objects","graphQLResultHasError","getGraphQLErrorsFromResult","incrementalResult","isExecutionPatchIncrementalResult","isExecutionPatchResult","isExecutionPatchInitialResult","isApolloPayloadResult","mergeIncrementalData","prevResult","parent_1","prefixCounts","shallowFreeze","mergeDeepArray","DeepMerger","defaultReconciler","reconciler","isObject","pastCopies","targetValue","shallowCopyForMerge","isNonNullObject","undefId","thunk","GLOBAL_KEY","safeGlobal","needToRemove","NODE_ENV","invariant","DEV","shouldInclude","getInclusionDirectives","ifArgument","evaledValue","getDirectiveNames","hasAnyDirectives","hasDirectives","hasAllDirectives","nameSet","uniqueCount","directiveArguments","directiveName","ifValue","getFragmentQueryDocument","actualFragmentName","createFragmentMap","symTable","getFragmentFromSelection","checkDocument","getOperationDefinition","getOperationName","getFragmentDefinitions","getQueryDefinition","getFragmentDefinition","fragmentDef","queryDoc","getDefaultValues","defs","makeReference","isDocumentNode","valueToObjectRepresentation","argObj","isIntValue","isFloatValue","isBooleanValue","isStringValue","isObjectValue","nestedArgObj_1","isVariable","isListValue","listValue","nestedArgArrayObj","isEnumValue","isNullValue","storeKeyNameFromField","directivesObj","getStoreKeyName","KNOWN_DIRECTIVES","filterKeys","filteredArgs_1","completeFieldName","stringifiedArgs","stringifyReplacer","argumentsObjectFromField","argObj_1","resultKeyNameFromField","getTypenameFromResult","isField","fragments_1","isInlineFragment","TYPENAME_FIELD","nullIfDocIsEmpty","makeInUseGetterFunction","inUse","fragmentSpreads","removeDirectivesFromDocument","getInUseByOperationName","getInUseByFragmentName","getInUse","ancestor","operationCount","directiveMatcher","tests","getDirectiveMatcher","hasRemoveDirective","shouldRemoveField","nodeDirectives","originalFragmentDefsByPath","firstVisitMadeChanges","fieldOrInlineFragmentVisitor","docWithoutDirectiveSubtrees","_parent","_path","removed","populateTransitiveVars","transitiveVars","childFragmentName","allFragmentNamesUsed","enterVisitor","usedVariableNames_1","varDef","addTypenameToDocument","connectionRemoveConfig","willRemove","removeConnectionDirectiveFromDocument","removeArgumentsFromDocument","argMatcher","argument","aConfig","getArgumentMatcher","argConfig","argMatchCount_1","removeFragmentSpreadFromDocument","buildQueryFromSelectionSet","removeClientSetsFromDocument","concatPagination","offsetLimitPagination","relayStylePagination","edges","firstEdgeCursor","lastEdgeCursor","startCursor","getExtras","hasPreviousPage","incomingEdges","pageInfo_1","firstEdge","lastEdge","firstCursor","lastCursor","notExtras","isPromiseLike","nextResultListeners","iterable","deliverLastMessage","nextOrError","catchFn","activeCallbackCount","promiseQueue","makeCallback","examiner","delegate","both","caught","iterateObserversSafely","observersWithMethod","fixObservableSubclass","subclass","species","algorithm","outputFormat","digest","hexCodes","bufferToHex","sha1","sha384","sha512","instanceOf","_value$constructor","stringifiedValue","Source","isSource","defaultGetStoreFunc","defaultGetStore","customStore","delMany","eachCursor","openCursor","continue","getCurrentLocation","canRoute","routeTo","stopImmediatePropagation","activeClass","genericMessage","InvariantError","verbosityLevels","verbosityLevel","wrapConsoleMethod","setVerbosity","extendStatics","Iterator","pack","ar","SuppressedError","hasSymbols","hasSymbol","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","isObservable","hostReportError","enqueue","cleanupSubscription","closeSubscription","notifySubscription","onNotify","flushSubscription","subscriber","subscriptionObserver","SubscriptionObserver","_subscriber","hasSeed","startNext","outer","completeIfDone","_len2","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","hmd"],"sourceRoot":""}